【免费下载链接】vllm-metalCommunity maintained hardware plugin for vLLM on Apple Silicon项目地址https://gitcode.com/gh_mirrors/vl/vllm-metal点击查看免费下载vllm-metal 是面向 Apple Silicon 的 vLLM 硬件插件基于 MLX 让大模型跑在 Mac 的 GPU 上。这篇文章是一份实战指南用Ray 分布式执行器加一根雷雳Thunderbolt线把一个模型拆到两台 Mac 上做分布式推理——用流水线并行PP承载单机放不下的模型用数据并行DP把吞吐量拉满。一、什么时候需要多 Mac 分布式推理 ️单台 Mac 跑 vllm-metal 完全够用但遇到两种情况时单机就不够了场景方案特点适合谁模型太大单机内存/显存装不下流水线并行 PP把模型层数切成连续片段每台 Mac 负责一段长上下文、大模型模型装得下但并发请求多数据并行 DP每台 Mac 跑一份完整模型副本请求负载均衡高并发、拉吞吐一句话区分PP 是一个模型拆着跑DP 是同一模型多副本并行跑。二者互不兼容同一批 Mac 只能选其一。完整官方指南在 docs/distributed.md建议收藏对照。二、原理速览Ray 管控制面雷雳线管数据面vllm-metal 的多机推理是一个双平面设计理解这一点就能看懂后面所有命令控制面RayRay 负责在多 Mac 之间点名——每台 Mac 上启动一个 worker 进程每个 worker 对应一个流水线阶段或一个模型副本。数据面MLX ring走雷雳线阶段之间传递的隐藏状态activation不经过 Ray而是走 MLX 自带的点对点send/recv环ring后端。雷雳线提供高带宽、低延迟直连——官方文档明确说明 Wi-Fi / 以太网太慢雷雳是支持的传输方式。有两处关键适配值得了解源码都开源在仓库里Apple GPU 不是 Ray 认识的加速卡不像 CUDA / TPU所以MetalPlatform给每台 Mac 注册了一个名为mlx的自定义 Ray 资源vLLM 的 Ray 执行器按每个 mlx 资源放一个 worker的方式排布见 vllm_metal/platform.pyray_device_key: str mlxRay 默认查不到自定义资源vllm-metal 通过worker_process_setup_hook在每个 worker 里打了个补丁让 worker 能读到自己分到的mlx设备实现见 vllm_metal/compat.py。流水线切分与跨机传输的核心逻辑每个阶段只拿一段连续层、阶段 r 从 r-1 收、发给 r1实现在 vllm_metal/distributed/pipeline.py。三、实战雷雳线 流水线并行两台 Mac 跑一个模型以官方已验证的Qwen3-0.6B 两 Mac 端到端为例官方建议先跑小模型验证链路再换大模型Mac A 跑阶段 0前面的层Mac B 跑阶段 1后面的层 采样。⚠️ 前置条件两台 Mac 都按 安装文档 装好 vllm-metal并已安装 Raypip install ray两台机器都要有模型缓存。第 1 步雷雳线直连配好静态 IP 用雷雳 / USB4 线直连两台 MacmacOS 会自动创建 Thunderbolt Bridge 接口各配一个静态 IP# Mac A sudo networksetup -setmanual Thunderbolt Bridge 10.0.0.1 255.255.255.0 # Mac B sudo networksetup -setmanual Thunderbolt Bridge 10.0.0.2 255.255.255.0在 Mac A 上执行ping -c3 10.0.0.2通即成功。还有一个 macOS 特有的坑.local主机名会解析到本机回环地址127.0.0.1另一台 Mac 根本访问不到。需要把主机名映射到雷雳 IP写进/etc/hosts详见 docs/distributed.md 中的 two Macs over Thunderbolt 一节。第 2 步组建 Ray 集群macOS 上的多节点 Ray 需要两个环境变量两台机器都要设置export RAY_ENABLE_WINDOWS_OR_OSX_CLUSTER1 # 解锁 macOS 多节点 export RAY_DEFAULT_PYTHON_VERSION_MATCH_LEVELminor # 两机 Python 小版本不一致时才需要然后 Mac A 启动 head注意把节点 IP 钉在雷雳地址上并宣告 1 个mlx资源# Mac A VLLM_HOST_IP10.0.0.1 ray start --head \ --node-ip-address10.0.0.1 --resources{mlx: 1}Mac B 通过雷雳 IP 加入# Mac B VLLM_HOST_IP10.0.0.2 ray start --address10.0.0.1:6379 \ --node-ip-address10.0.0.2 --resources{mlx: 1}VLLM_HOST_IP是整个流程里最关键的一环它让 vLLM 的get_ip()返回雷雳地址跨阶段的传输才会走线缆而不是走别的网络。第 3 步一条命令跨机启动服务# Mac A RAY_ADDRESSauto VLLM_HOST_IP10.0.0.1 \ vllm serve Qwen/Qwen3-0.6B \ --distributed-executor-backend ray \ --pipeline-parallel-size 2 \ --tensor-parallel-size 1 \ --no-async-scheduling看到每个 worker 打印Pipeline stage 0/2与Pipeline stage 1/2、且 MLX ring 引导日志列出两台 Mac 的雷雳 IP就说明跨机流水线搭好了。第 4 步发一条请求验证curl -s http://10.0.0.1:8000/v1/completions -H Content-Type: application/json \ -d {model:Qwen/Qwen3-0.6B,prompt:The capital of France is,max_tokens:16,temperature:0}收到正常的补全结果恭喜——你的第一个多 Mac 大模型服务上线了 用完在两台 Mac 上都执行ray stop并把雷雳接口恢复 DHCP 即可。四、数据并行模型装得下时吞吐翻倍的路 ⚡如果模型本身就装得进一台 MacDP 比 PP 更划算每台 Mac 一份完整副本单一 API 入口自动负载均衡。Mac A 上这样启动Ray 集群搭建方式同上RAY_ADDRESSauto VLLM_HOST_IP10.0.0.1 \ vllm serve mlx-community/Qwen3-8B-4bit \ --gpu-memory-utilization 0.5 \ --max-model-len 8192 \ --data-parallel-size 2 \ --data-parallel-backend ray \ --data-parallel-size-local 1 \ --data-parallel-address 10.0.0.1三个容易踩的参数--data-parallel-backend ray必填——默认的mp后端只会在本机拉子进程无法把副本放到第二台 Mac--data-parallel-size-local 1每台 Mac 只有 1 块 Apple GPU所以每节点只能放 1 个副本--data-parallel-address把 DP 主节点钉到 Ray head 的 IP避免放置失配。DP 提升的是并发吞吐而不是单条请求的延迟head 机器还要额外承担 API server 和负载均衡所以实测低于 2 倍理想值。可用vllm bench serve量化自己的场景方法见 docs/benchmarking-macos.md。五、常见问题与限制清单 ⚠️多 Mac 推理还很新规划时注意以下限制均摘自 docs/distributed.md类别说明模型格式PP 惰性切片 safetensorsAWQ 和 GGUF 不支持加载器会先物化整个模型并行组合仅TP1PPTP、DPPP、DPTP、DPMoE 均被拒绝模型类型YOCO / 混合架构 / MLA / pooling / VLM / 投机解码 / LoRA 暂不支持 PP调度PP 必须同步调度显式--async-scheduling会直接报错KV 内存同一台 Mac 叠放两个阶段会各自独立占用内存预算需调低--gpu-memory-utilization分机部署无此问题端口MLX ring 默认占用 32323/32324阶段 r 用 base r端口冲突时在所有节点设置同一个VLLM_METAL_RING_BASE_PORT定义见 vllm_metal/envs.py防火墙两台 Mac 的防火墙要放行 MLX ring 端口另外Ray 的资源名 mlx 找不到类报错如No available node types can fulfill resource request {mlx: 1.0}几乎都是节点没带--resources{mlx: 1}启动而current platform cpu does not support ray则说明 Metal 插件没激活。排障时先分清是这两类中的哪一种。六、动手之前先读懂这些文件 文件作用docs/distributed.md官方分布式指南Ray 快速开始、两 Mac 雷雳实战、PP/DP 设计与限制vllm_metal/platform.pymlx自定义资源声明Ray 放置路径的入口vllm_metal/compat.pyworker 设备补丁让 Ray worker 读到mlx资源vllm_metal/distributed/pipeline.pyMLX ring 引导与流水线切分PipelineGroup、apply_pipeline_splittools/pp_parity_check.pyPP 数值一致性校验多阶段流水线与单进程参考结果对比已验证逐位一致docs/installation.md安装指引macOS 15、Apple Silicon写在最后vllm-metal 的多 Mac 分布式推理目前处于已验证、仍崭新的阶段单机 Ray 执行器与两 Mac 雷雳流水线都已端到端跑通Qwen3-0.6B 验证。建议的路径是——先小模型验证链路再上大模型先 PP 突破容量瓶颈并发上来了再考虑 DP 拉吞吐。把几台闲置的 Mac 用雷雳串起来你的本地大模型集群就能真正跑起来了 赞分享【免费下载链接】vllm-metalCommunity maintained hardware plugin for vLLM on Apple Silicon项目地址https://gitcode.com/gh_mirrors/vl/vllm-metal点击查看免费下载相关推荐AIBrix 分布式推理实战指南用 Ray KubeRay 在 Kubernetes 上运行多机 vLLMAIBrix 分布式推理实战指南用 Ray KubeRay 在 Kubernetes 上运行多机 vLLM 本文以 AIBrix 仓库中 分布式推理教程人工智能大模型云原生模型推理服务LLM 网关API网关弹性伸缩MiniCPM-Llama3-V 2.5 多 GPU 推理实战用 Accelerate 把 18GiB 模型分布到多张低显存显卡MiniCPM Llama3 V 2.5 多 GPU 推理实战用 Accelerate 把 18GiB 模型分布到多张低显存显卡 本指南基于 docs/inf人工智能大模型多模态计算机视觉NLP微调openBMBData-Juicer 实战使用 vlm_ray_vllm_engine_pipeline 在 Ray 上高效执行多模态大模型推理Data Juicer 实战使用 vlm_ray_vllm_engine_pipeline 在 Ray 上高效执行多模态大模型推理 导读 vlm_ray_vl人工智能大模型数据工程数据清洗数据增强数据质检创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考