两台机器、每台 8 张 H100(共 16 GPU),要把它们当成一个整体来运行大模型,本质上就是做 分布式推理(Distributed Inference)。核心机制是 Tensor Parallel + 跨节点通信(NCCL)。下面按实际工程步骤解释。
一、整体结构是什么
两台服务器:
node1
├─ GPU0
├─ GPU1
├─ GPU2
├─ GPU3
├─ GPU4
├─ GPU5
├─ GPU6
└─ GPU7
node2
├─ GPU0
├─ GPU1
├─ GPU2
├─ GPU3
├─ GPU4
├─ GPU5
├─ GPU6
└─ GPU7
总共:
16 GPU
模型会被 切分成16份。
例如:
Transformer Layer
↓
分布到 16 GPU
每张卡只保存 1/16 的权重。
二、核心技术
分布式推理一般使用:
1 Tensor Parallel (TP)
把 一个 layer 的矩阵切分到多GPU。
例如:
Linear(16384, 65536)
会变成:
GPU0 Linear(16384, 4096)
GPU1 Linear(16384, 4096)
...
GPU15 Linear(16384, 4096)
每张卡计算一部分,然后 AllReduce 汇总结果。
通信依赖:
NCCL
2 Pipeline Parallel (PP)
把 不同layer放不同GPU。
例如:
GPU0-3 Layer 1-20
GPU4-7 Layer 21-40
GPU8-11 Layer 41-60
GPU12-15 Layer 61-80
这样做的好处:
- 显存更均衡
- KV cache更容易管理
3 Expert Parallel (MoE模型)
如果是 MoE 模型(很多 Qwen / DeepSeek 是),还会有:
Expert Parallel
每个 GPU 负责部分专家。
三、两台机器如何连成一个分布式
关键是 NCCL通信网络。
需要:
高速网络
通常是:
| 网络 | 带宽 |
|---|---|
| Infiniband | 200Gb |
| RoCE | 100Gb |
| 普通万兆 | 勉强 |
通信拓扑:
node1 GPU ↔ node2 GPU
通过:
NCCL + RDMA
实现。
四、运行时的节点角色
一般会有:
master node
worker node
例如:
node1 master
node2 worker
启动方式:
MASTER_ADDR=10.0.0.1
MASTER_PORT=29500
WORLD_SIZE=16
RANK=0-15
每个 GPU 一个进程。
五、用 vLLM 举例(最常见)
两台机器 16 GPU:
node1:
vllm serve MODEL_PATH \
--tensor-parallel-size 16 \
--pipeline-parallel-size 1 \
--host 0.0.0.0
node2:
vllm worker \
--tensor-parallel-size 16 \
--pipeline-parallel-size 1 \
--master-ip node1-ip
实际会通过:
Ray cluster
调度。
六、另一种常见方式:Ray Cluster
先启动集群。
node1:
ray start --head --port=6379
node2:
ray start --address='node1-ip:6379'
形成:
Ray Cluster
然后:
vLLM / sglang / deepspeed
在这个集群上调度 GPU。
七、推理请求是怎么执行的
用户请求:
Prompt
流程:
API Server
↓
Scheduler
↓
GPU0-15 计算
↓
AllReduce
↓
返回 token
每生成一个 token:
所有 GPU 都参与
八、为什么需要这么多 GPU
因为模型巨大。
例如:
| 模型 | 显存 |
|---|---|
| 70B FP16 | ~140GB |
| 397B FP16 | ~800GB |
16 × H100:
16 × 80GB = 1280GB
才能容纳:
- 权重
- KV cache
- runtime
九、工程里最重要的其实是网络
很多人第一次做分布式都会踩这个坑:
如果网络不够快:
GPU利用率会掉到10%
因为每层计算都需要:
AllReduce
通信慢就卡住。
所以生产环境通常:
8 GPU NVLink
+
200G Infiniband
十、总结
两台 8 卡服务器变成一个“GPU集群”的本质是:
- 模型权重切分到多个GPU(Tensor Parallel)
- 多个节点通过 NCCL 通信
- 调度系统(Ray / torch.distributed)管理进程
- 所有 GPU 协同完成一次推理
最终:
16 GPU = 一个逻辑大GPU
