跳转到主要内容
当您的模型无法装入单个 GPU,或者您需要超越 1 个 GPU 所能提供的吞吐量时,就需要将工作负载分配到多个 GPU 上。目前主要有 2 种策略,分别是 张量并行 (TP) 与 流水线并行 (PP)。这两种策略各自应对不同的问题,选用错误的策略只会造成硬件资源的浪费。

简要结论

单节点多 GPU 环境应选用张量并行;多节点环境则选用流水线并行。 该规则适用于绝大多数部署场景。

张量并行原理说明

张量并行机制是将各层权重矩阵拆分至不同 GPU 上。执行前向传播时,各 GPU 同步计算矩阵乘法的一部分,随后借助高速互连技术(如 NVLink、PCIe 或 InfiniBand)实现数据同步。
主要特性:
  • 每块显卡仅负责存储某一层或多层的部分内容
  • 处理每个令牌时所有显卡均处于活跃状态
  • 该方案需要高带宽的互连技术(NVLink 的性能远超 PCIe)
  • 虽然会增加每层的同步开销,但能确保每个令牌的处理延迟维持在较低水平
  • vLLM 将此机制称为 --tensor-parallel-size
Best for: 2× DGX Spark connected via 200Gb/s QSFP, 2× RTX 4090 over PCIe, or any single-node setup where GPUs share a fast bus.

流水线并行机制详解

流水线并行机制会将不同层分配给不同显卡处理。显卡 0 负责存储 0 至 15 层,显卡 1 则负责存储 16 至 31 层。前向传播过程如同流水线作业:显卡 0 处理输入数据后,将激活值传递给后续的显卡 1 继续运算。
主要特性:
  • 每块显卡仅存储连续排列的若干层内容
  • 每次仅有 1 个 GPU 针对某个令牌处于活跃状态(其余 GPU 则处于闲置状态或正在处理其他令牌)
  • 该方案对互连速度要求较低——因为激活值的大小远小于完整的权重矩阵。
  • 添加流水线空闲时段以降低资源利用率
  • vLLM将此功能称为 --pipeline-parallel-size
适用场景: 节点通过 10千兆以太网至 100千兆以太网网络相连的多节点集群,或上游模型 ID体积过大无法仅通过张量并行部署的情况。

决策矩阵

请回答以下问题以确定最佳部署策略:
  1. 该模型能否完整载入 1块 GPU?
    • 能 → 无需并行处理。若需提升吞吐量则可采用数据并行方式。
    • 不能 → 请继续作答。
  2. 所有 GPU是否位于同一台机器上?
    • 是 → 推荐采用 张量并行 方案(可降低延迟并提升解码效率)。
    • 否 → 请继续作答。
  3. GPU是否分布在 2台以上的机器上?
    • Yes → pipeline parallelism across nodes. If each node has 2+ GPUs, use TP within each node + PP across nodes.
  4. 该模型规模是否极为庞大(需 405B 块以上 GPU)?
    • Yes → hybrid TP + PP. Example: TP=2 within each DGX Spark, PP=2 across 2 Sparks.

针对特定硬件的部署建议

数据并行与专家并行

还有两种策略适用于特定场景: 数据并行 (DP) — 在每个 GPU 上复制完整模型并将传入请求分配到各 GPU 上。当模型能够完整容纳在 1 个 GPU 中且需要服务更多并发用户时,此策略最为适用。vLLM 原生支持该模式,只需在负载均衡器后启动多个实例即可。 专家并行 (EP) — 专为混合专家模型设计。不同 GPU 负责存储不同专家组。当某个令牌需要特定专家处理时,相关激活数据会被发送至对应 GPU。该策略对超大规模混合专家模型尤为有效,能避免仅采用处理器并行时闲置专家占用内存的问题。

配置示例

采用张量并行机制的 vLLM

For 2× DGX Spark connected via 200Gb/s QSFP:

采用流水线并行技术的 vLLM

混合张量并行与流水线并行方案(适用于大型模型及多节点部署)

For a 405B model across 2× DGX Spark (TP within each node, PP across nodes):

采用张量并行技术的 SGLang

在特定工作负载场景下,双显卡配置下的 SGLang 性能与 vLLM 不相上下:

NCCL 环境变量设置

为实现多显卡间通信,启动前需配置以下参数:
在通过 200 吉比特/秒速率 QSFP 接口互联的 DGX Spark 集群中,NCCL 会自动选定最优传输方式。通常无需手动修改 NCCL_IB_DISABLE 或 NCCL_SOCKET_IFNAME 参数,除非需排查连接故障。

性能对比分析

基于针对 70B 级别密集型模型的社区基准测试数据:
vLLM delivers 5.9× more tokens/s than Ollama at 50 concurrent users on the same hardware. If you serve models to a team, the inference engine matters as much as the parallelism strategy.

不宜采用并行处理策略的情形

并非所有部署场景都能从多 GPU 并行中获益:
  • 模型大小可轻松容纳在 1 块 GPU 内存中——此时并行反而会增加额外开销。建议仅在 1 块 GPU 上运行并采用数据并行以提升吞吐量。
  • 小型模型(7B至13B参数规模)在消费级 GPU 上运行——张量并行所需的同步操作会导致使用 2 块 GPU 时的运行速度低于仅用 1 块 GPU 的情况。SGLang 在此类场景下也出现了明显的性能下降。
  • 单用户推理场景——除非模型确实超出单块 GPU 的承载极限,否则使用 1 块 GPU 的方案更为简便且速度更快。
  • 节点间网络带宽低于 10 GbE——网络传输速度过慢会严重限制流水线并行机制的效能。此时应优先升级网络设施。

常见问题的排查方法

在 vLLM 环境下多 GPU 部署时出现内存溢出现象

vLLM 会预先预留大量内存用于 CUDA 计算图构建及 KV 缓存存储。在配备 2 块 RTX 3090 显卡(总显存容量达 48 GB)的系统中,某些 32B 规模的模型仍可能出现内存溢出,即便 Ollama 可顺利运行。此时需将 --gpu-memory-utilization 参数值从默认的 0.90 数值下调:

NCCL 连接失败现象

若多块 GPU 之间无法正常通信,请检查以下项目:
  1. nvidia-smi topo -m — 确认 NVLink 或 PCIe 物理拓扑结构是否正常
  2. NCCL_DEBUG=INFO — 核实 NCCL 实际选定的数据传输方式
  3. 端口 29500 上的防火墙规则(该端口为 NCCL 通信的默认端口)

不同类型的 GPU 混用

vLLM 支持多种 GPU 混用部署,但整体吞吐量受限于速度最慢的 GPU。为获得最佳性能,建议使用规格一致的 GPU。若必须混用,可通过流水线并行机制并调整各阶段分配比例,将更多计算层分配给速度更快的 GPU。

通过 Tokios 实现多 GPU 部署的对外访问

无论您采用张量并行还是流水线并行,亦或两者兼用,部署后的 vLLM 或 SGLang 服务器都会在本地主机上提供兼容 OpenAI 规范的 /v1 API。只需在同一台机器上运行 Tokios 连接器,即可让任何设备、智能体或团队成员都能访问该部署,且无需开放任何入站端口。
完整操作指南请参阅 vLLM 远程访问指南。

后续步骤

模型服务部署与扩展

了解各类推理引擎如何管理内存、批量处理及 KV 缓存机制。

DGX Spark 应用场景

在 DGX Spark 或 2-Spark 集群上完成 Tokios 的配置。

vLLM 远程访问配置

无论身处何处,都能安全地对外提供您的 vLLM 服务器服务。

量化操作指南

在启用并行处理机制之前,先对模型进行压缩以便适配更少的 GPU 资源。