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 用户通常会带着他们现有工具和工作流的预期。在裸机集群上进行交互式工作的开发者期望通过 mpsshpssh 等工具,使用单个由“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 的设置、任务执行和清理工作,让用户能够获得类似于 mpiruntorchrun 等其他工具的体验。

以同样的例子为例,使用 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 集群初始化,而头节点将:

  1. --head 模式启动 Ray。
  2. 等待四个节点注册。
  3. 运行用户命令(vllm serve Qwen/Qwen3-32B …)。
  4. 完成后关闭 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 slackRay slack