使用 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 用户则期望对称执行——即一个单一的程序入口点在所有节点上同时运行,类似于 MPI 应用程序。
然而,Ray 推荐的作业执行模式遵循不同的理念,对头节点(head node)和工作节点(worker node)有明确的角色划分。
程序入口点在头节点执行,随后由头节点编排并委派工作给工作节点。运行时生命周期与作业执行是分离的,需要显式的集群管理。这意味着用户需要两套不同的命令集——一套用于配置具有正确角色(头节点/工作节点)的集群,另一套用于实际执行工作。
驱动场景
让我们通过一个在 2 台独立机器上启动分布式作业的示例来看看。我们假设这些机器是裸机,无法使用 Ray 集群启动器或 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 新推出的 symmetric run 工具简化了在 HPC 或并行 SSH 设置中运行 Ray 和 vLLM 程序的过程。立即尝试 Ray Symmetric Run:https://docs.rayai.org.cn/en/latest/cluster/vms/user-guides/community/slurm.html
如果遇到任何问题,请在 Github 上提交工单:https://github.com/ray-project/ray/
要与社区的其他成员交流,请加入 vLLM Slack 和 Ray Slack!