Ray 现在有了一个新命令:ray symmetric-run。这个命令可以在 Ray 集群的每个节点上启动**相同的入口点命令**,从而简化了在 HPC 环境下或使用像 mpssh 这样的并行 ssh 工具时,启动带有跨节点模型的 vLLM 服务器的工作流程。

在这篇博客中,我们将讨论当前使用 Ray 启动 vLLM 服务器时存在的问题;我们将通过一个启发性的例子进行演示;最后,我们将讨论 Ray 的新 symmetric-run API 将如何改善启动体验。

Ray 最近加入了 Pytorch 基金会。作为此次捐赠的一部分,vLLM 和 Ray 团队正在共同努力,建立深度对齐,以推动下一代人工智能基础设施的发展。


图 1. Ray 的 `symmetric-run` 命令概览。

背景

接触 Ray 的 vLLM 用户通常会带着他们对现有工具和工作流程的期望。在裸机集群上进行交互式工作的开发人员希望能够使用像 mpsshpssh 这样的工具,通过一个以“rank”为参数的单一命令,在多个主机上快速启动命令。熟悉 SLURM 和 PBS 的 HPC 用户则期望*对称执行*——即一个单一的程序入口点,能像 MPI 应用程序一样,在所有节点上同时运行。

然而,Ray 推荐的作业执行模式遵循一种不同的理念,对头节点和工作节点有特定的角色分工。

程序入口点在头节点上执行,然后由头节点协调并将工作委托给工作节点。运行时生命周期与作业执行是分开的,需要明确的集群管理。这意味着用户需要两套不同的命令——一套用于建立具有正确头/工作节点角色的集群,另一套用于实际运行他们的工作。

启发性示例

让我们来看一个在两台独立机器上启动分布式作业的例子。我们假设这些机器是裸机,无法使用像 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 的设置、作业执行和拆卸,让用户可以获得与其他工具(如 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