通过 Ray symmetric-run 简化多节点服务部署
Ray 现在拥有了一个新命令:ray symmetric-run。该命令可以在 Ray 集群的每个节点上启动相同的入口点命令,从而简化了在 HPC 环境中或使用 mpssh 等并行 SSH 工具生成带有多节点模型的 vLLM 服务器的工作流。
在这篇博客中,我们将讨论目前使用 Ray 生成 vLLM 服务器时存在的问题;我们将通过一个激励示例进行演示;最后我们将讨论 Ray 新推出的 symmetric-run API 将如何改进启动体验。
Ray 最近加入了 PyTorch 基金会。作为此次捐赠的一部分,vLLM 和 Ray 团队正在紧密合作,建立深度对齐以推进下一代 AI 基础设施的发展。
图 1. Ray 的 `symmetric-run` 命令概览。
背景
使用 Ray 的 vLLM 用户通常会带着他们现有工具和工作流的预期。在裸机集群上进行交互式工作的开发者期望通过 mpssh 或 pssh 等工具,使用单个由“rank”参数化的命令在多个主机上快速启动命令。熟悉 SLURM 和 PBS 的 HPC 用户则期望对称执行 (symmetric execution) —— 即在所有节点上同时运行单个程序入口点,类似于 MPI 应用程序。
然而,Ray 推荐的任务执行模式遵循不同的哲学,对头节点 (head node) 和工作节点 (worker node) 赋予了特定的角色。
程序入口点在头节点上执行,然后由头节点编排并将工作委派给工作节点。运行时生命周期与任务执行是分离的,需要显式的集群管理。这意味着用户需要两套不同的命令:一套用于建立具有正确头/工作节点角色的集群,另一套用于实际运行工作。
激励示例
让我们来看一个在 2 台独立机器上启动分布式任务的例子。我们假设机器是裸机环境,无法使用 Ray 的集群启动器 (cluster launcher) 或 KubeRay 等其他解决方案。
在这种情况下,要在多台机器上运行 Ray 任务,用户需要首先在头节点上启动 Ray:
ray start --block
然后在工作节点上,他们需要连接回头节点:
# worker node, terminal 1:
ray start --block --address='ip:6379'
节点设置完成后,他们需要在头节点上启动一个单独的终端来运行任务:
vllm serve Qwen/Qwen3-32B --tensor-parallel-size 8 --pipeline-parallel-size 2
最后在终止时,他们需要在每个节点上运行 ray stop:
ray stop
在此配置下运行 vLLM 通常需要大量的反复尝试。一种常见的故障模式是缺少某些环境变量(例如 VLLM_HOST_IP)。当发生这种情况时,用户需要关闭 Ray 集群,在执行 `ray start` 时设置环境变量,并再次重复上述所有步骤。
对于期望对称、单命令执行的用户来说,这在开发和部署工作流中造成了巨大的摩擦。
Ray 现在提供了一个简单的解决方案:ray symmetric-run,这是一种在集群所有节点上运行 Ray 任务的新方式。
symmetric-run 的作用是什么?
ray symmetric-run 使得在 Ray 集群的每个节点上启动相同的入口点命令成为可能。该脚本会自动处理 Ray 的设置、任务执行和清理工作,让用户能够获得类似于 mpirun 或 torchrun 等其他工具的体验。
以同样的例子为例,使用 symmetric-run,你只需执行:
# in SLURM sbatch script or via mpssh
ray symmetric-run \
--address <head_node_address>:6379 \
--min-nodes 2 \
--num-gpus 8 \
-- vllm serve Qwen/Qwen3-32B --tensor-parallel-size 8 --pipeline-parallel-size 2
每个节点都会执行相同的命令,但底层的行为会根据节点而有所不同。特别地,工作节点将仅执行 Ray 集群初始化,而头节点将:
- 以
--head模式启动 Ray。 - 等待四个节点注册。
- 运行用户命令(
vllm serve Qwen/Qwen3-32B …)。 - 完成后关闭 Ray。
工作节点只需运行 ray start --address head-node:6379 并等待任务结束,之后它将自动销毁。不需要额外的 SSH 编排或启动脚本。
如果你需要提供环境变量,只需将其附加在命令开头,symmetric-run 就会自动将该变量传播到 Ray 运行时:
ENV=VAR ray symmetric-run --address 127.0.0.1:6379 -- python test.py
结论
Ray 新的对称运行工具简化了在 HPC 或并行 SSH 环境下运行 Ray 和 vLLM 程序的过程。立即尝试 Ray Symmetric Run:https://docs.rayai.org.cn/en/latest/cluster/vms/user-guides/community/slurm.html
如果您遇到任何问题,请在 Github 上提交 issue:https://github.com/ray-project/ray/
如需与其他社区成员交流,请加入 vLLM slack 和 Ray slack!