Files
BlueRoseNote/07-Other/AI/MacMini/未命名.md

6.0 KiB
Raw Blame History

前言

视频

方法

  • 官方 mlx.launch推荐轻量可控
  • Exo可视化一键集群

豆包回答

如何使用MLX部署MacStudio群集

在 Mac Studio 集群上用 MLX 做分布式推理 / 训练,核心是统一环境、免密 SSH、低延迟网络、mlx.launch 调度,推荐优先用 Thunderbolt 5 + RDMA 以获得最佳性能。


一、前置准备(所有节点必须一致)

  1. 系统与硬件

    • macOS 16.2+(支持 RDMA over Thunderbolt 5

    • 网络Thunderbolt 5 直连或交换机(推荐);千兆 / 万兆以太网兜底

    • 每台 Mac Studio 启用 RDMA仅需一次

      关机 → 长按电源键进 “启动选项”→ 选项 → 继续 → 实用工具 → 终端:

      bash

      运行

      rdma_ctl enable
      

      重启后验证:rdma_ctl status

  2. 免密 SSH 与主机名

    • 所有节点设静态主机名(如 mac-studio-01),编辑 /etc/hosts 写入所有节点的 IP 与主机名

    • 在主节点生成密钥并分发至所有节点:

      bash

      运行

      ssh-keygen -t ed25519 -N "" -f ~/.ssh/mlx-cluster
      for node in mac-studio-01 mac-studio-02; do
        ssh-copy-id -i ~/.ssh/mlx-cluster "$node"
      done
      
    • 测试:ssh -i ~/.ssh/mlx-cluster mac-studio-02 hostname

  3. 统一 Python 环境

    • 所有节点安装依赖:

      bash

      运行

      brew install python@3.12 uv openmpi  # openmpi 为 MPI 后端所需
      
    • 用 uv 创建并同步环境:

      bash

      运行

      # 主节点创建
      uv venv ~/mlx-cluster-venv
      uv pip install mlx mlx-lm mpi4py
      # 同步至其他节点(示例)
      for node in mac-studio-02 mac-studio-03; do
        rsync -av ~/mlx-cluster-venv "$node":~/
      done
      
    • 内存优化(按需):

      bash

      运行

      sudo sysctl iogpu.wired_limit_mb=180000  # 192GB 机型示例,重启失效
      

二、快速部署(两种方式)

方式 A官方 mlx.launch推荐轻量可控

  1. 生成主机配置文件用 mlx.distributed_config 自动检测 Thunderbolt 接口并生成配置(主节点执行):

    bash

    运行

    source ~/mlx-cluster-venv/bin/activate
    mlx.distributed_config \
      --hosts mac-studio-01,mac-studio-02,mac-studio-03 \
      --over thunderbolt \
      --auto-setup \
      --output cluster_hosts.json
    

    手动配置示例(cluster_hosts.json

    json

    [
      {"ssh": "mac-studio-01", "ips": ["192.168.2.101"]},
      {"ssh": "mac-studio-02", "ips": ["192.168.2.102"]}
    ]
    
  2. 运行分布式任务

    • 推理(以 mlx-lm 为例,张量并行):

      bash

      运行

      mlx.launch \
        --hostfile cluster_hosts.json \
        --backend mpi \
        ~/mlx-cluster-venv/bin/python -m mlx_lm.generate \
        --model mlx-community/DeepSeek-V2.5-1210-3bit \
        --tensor-parallel 2 \
        --prompt "Hello, cluster!"
      
    • 训练(数据并行,需修改脚本支持分布式):

      bash

      运行

      mlx.launch \
        --hostfile cluster_hosts.json \
        --backend ring \
        train_script.py
      

方式 BExo可视化一键集群

适合快速上手,自动做拓扑感知与 RDMA 优化:

  1. 所有节点安装:

    bash

    运行

    brew install uv node macmon
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    rustup toolchain install nightly
    
  2. 克隆并启动:

    bash

    运行

    git clone https://github.com/exo-explore/exo && cd exo
    cd dashboard && npm install && npm run build && cd ..
    uv run exo
    
  3. 访问 http://localhost:52415,选择 MLX 模型与并行策略,一键启动。


三、关键配置与优化

表格

场景 推荐后端 网络 并行策略 说明
大模型推理 MPI Thunderbolt 5 + RDMA 张量并行 低延迟,分片模型权重
小批量训练 Ring 万兆以太网 数据并行 梯度聚合快,易部署
超大规模模型 MPI Thunderbolt 5 交换机 流水线 + 张量并行 结合 mlx-lm 的 pipeline_generate.py

四、验证与排错

  1. 验证集群

    bash

    运行

    # 主节点执行,测试所有节点环境
    mlx.launch --hostfile cluster_hosts.json --backend mpi python -c "import mlx.core as mx; print(f'Rank {mx.distributed.rank()}/{mx.distributed.size()}')"
    
  2. 常见问题

    • SSH 连接失败:检查密钥、/etc/hosts、防火墙
    • RDMA 未启用:重新进入恢复模式执行 rdma_ctl enable
    • 内存不足降低模型量化精度4bit、增大 iogpu.wired_limit_mb、使用流水线并行
    • 性能差:确认使用 Thunderbolt 5 端口,后端选 MPI关闭节点间其他网络负载

五、生产化建议

  1. 用 LaunchAgent 自动启动 Exo 或训练脚本
  2. 共享模型与数据目录NFS 或 SMB避免重复下载
  3. 监控:top -l 1 -o cpunvtopApple Silicon 版、Exo 仪表盘
  4. 备份:定期同步环境配置与训练脚本

需要我提供一个可直接运行的分布式训练脚本模板(含梯度 all-reduce 和数据分片)吗?