GPU运维:分布式训练与推理讲解
超详细分布式训练与推理讲解这份讲解完全从AI运维/LLM服务部署的视角出发不讲复杂的算法推导只讲「硬件怎么选、并行策略是什么、框架怎么用、推理怎么调优」是企业落地大模型分布式场景的核心运维知识。一、硬件基础分布式的“高速公路”分布式训练/推理的核心瓶颈从来不是算力而是通信——显卡之间、服务器之间的数据传输速度直接决定了算力利用率你提到的40%就是行业平均水平通信开销占了大头。先把硬件互联讲透这是运维选型的第一步。1. 单机多卡一台服务器内的多卡互联核心场景单台服务器插多张GPU比如8张A100模型/数据拆分到这些卡上是目前企业训练/推理的主流场景。三种互联总线性能从低到高互联方式带宽单卡核心特点运维选型建议PCIe 5.0~64GB/s通用总线所有服务器都支持显卡通过PCIe插槽连到CPU再通过CPU中转通信1. 仅用于轻量分布式推理比如2张RTX 4090跑70B2. 训练场景不推荐通信延迟极高算力利用率可能低于20%NVLink~900GB/sH100 NVLink 4NVIDIA专属GPU互联总线显卡之间直接通信不经过CPU延迟极低带宽是PCIe的10倍以上1.单机多卡训练/推理的首选2. 注意NVLink是“单对单”直连比如8张卡的服务器每张卡只能和固定的几张卡直连全互联需要NVSwitchNVSwitch~900GB/s全互联NVLink的“交换机”插在服务器主板上让所有GPU通过NVSwitch实现全互联任意两张卡都能直接高速通信1.高端训练服务器标配比如NVIDIA DGX系列2. 8张A100/H100的服务器必须配NVSwitch才能发挥全互联性能否则算力利用率会大幅下降运维必知硬件名词补充DGXNVIDIA官方推出的“一站式训练服务器”预装NVSwitch、InfiniBand网卡、优化好的训练环境开箱即用是大厂训练的首选但价格极高算力利用率40%行业真实平均水平——即使是NVLink全互联的8卡A100服务器训练时也有60%的时间在等通信梯度同步、数据传输只有40%的时间在真正计算这是分布式训练的核心痛点也是运维调优的重点。2. 多机多卡多台服务器的跨机互联核心场景模型极大比如175B GPT-3、数据极多单台服务器装不下/算不完需要多台服务器比如8台×8卡A10064卡联合训练。两种互联网络性能从高到低互联方式带宽单端口核心特点运维选型建议InfiniBand (IB)400GbpsNDR 400专为高性能计算设计的专属网络延迟极低、带宽极高、无TCP/IP开销是多机多卡训练的唯一选择1.多机多卡训练必须用IB用TCP/IP的话通信延迟会让算力利用率降到10%以下2. 注意IB需要专属的IB网卡、IB交换机成本极高是普通以太网的5~10倍RoCE (RDMA over Converged Ethernet)200Gbps/400Gbps在普通以太网上实现类似IB的RDMA远程直接内存访问性能成本比IB低但需要配置无损以太网对交换机要求极高1.预算有限的多机多卡场景可选2. 运维难度大需要专门配置网络QoS、流量控制否则容易丢包导致训练中断运维核心实操要点多机多卡训练网络带宽是第一优先级宁可少买2张卡也要把IB网络配满通信吞吐量监控必须用nvidia-smi topo单机、ibstat/ib_write_bw多机监控互联带宽低于理论值80%就要排查硬件/配置问题多机多卡的算力利用率一般只有20%~30%比单机多卡更低通信开销是最大瓶颈。二、分布式训练策略怎么拆模型、拆数据分布式训练的核心逻辑就是解决两个问题单卡能放下模型但batch_size太小训练太慢→ 用数据并行单卡放不下模型→ 用模型并行层间/层内拆分。先把这两个核心策略讲透再讲混合并行。1. 数据并行Data Parallelism, DP最常用、最简单适用场景单卡能放下整个模型但想通过增大batch_size来加快训练速度比如7B模型单卡能放下但batch_size只能设8训练太慢想设到64就用数据并行。核心工作原理人话版每个卡都放完整的模型比如8卡A100每张卡都存一份完整的7B模型数据拆分把一个大的mini-batch比如64条数据拆成更小的micro-batch比如8条/卡分给8张卡前向传播每张卡用自己的8条数据独立计算预测结果和损失梯度同步每张卡算出自己的梯度后通过互联总线NVLink/IB把梯度发给所有卡取平均得到全局梯度参数更新每张卡用全局梯度同步更新自己的模型参数保证所有卡的模型始终一致。运维核心注意点显存开销数据并行的显存开销和单卡一致因为每个卡都放完整模型但梯度同步需要额外的显存/内存缓冲batch_size拆分规则总batch_size 单卡micro-batch × 卡数比如单卡micro-batch88卡的话总batch_size64通信瓶颈梯度同步是数据并行的最大开销卡数越多通信时间越长算力利用率越低——比如8卡数据并行算力利用率可能只有50%16卡可能降到30%进阶优化用ZeRO零冗余优化DeepSpeed/FSDP的核心把模型参数、梯度、优化器状态拆分到不同卡上进一步省显存单卡放不下的模型也能用数据并行。2. 模型并行单卡放不下模型必须拆分适用场景单卡显存不够放整个模型比如70B模型FP16需要140GB显存单张A100 80G放不下必须把模型拆成多份放到多张卡上。模型并行分为两种层间拆分流水线并行和层内拆分张量并行运维必须懂两者的区别和选型。① 层间拆分流水线并行Pipeline Parallelism, PP核心原理把模型的不同层放到不同的卡上像流水线一样工作。比如70B模型有80层把前40层放到卡1后40层放到卡2数据先到卡1经过前40层计算传给卡2经过后40层计算输出结果为了提高效率把数据拆成多个micro-batch像流水线一样依次通过卡1、卡2。运维核心优缺点优点缺点1. 通信开销小只有层和层之间的数据传输不需要频繁同步2. 实现简单不需要改模型内部结构只要分层放卡1.流水线气泡Bubble卡1计算时卡2闲着卡2计算时卡1闲着算力浪费严重利用率一般只有50%~60%2. 负载均衡难如果前40层计算量比后40层大卡2会一直等卡1进一步浪费算力适用场景模型层数多、层间计算量均衡对通信带宽要求低的场景现在一般和张量并行混合使用很少单独用。② 层内拆分张量并行Tensor Parallelism, TP核心原理把模型每一层的内部运算主要是矩阵乘法拆到多张卡上是目前模型并行的首选策略。比如70B模型的某一层有一个巨大的矩阵乘法把这个矩阵横着拆成两半一半放卡1一半放卡2两张卡同时计算自己的那一半矩阵通过NVLink频繁通信同步中间结果最后拼起来得到完整的输出。运维核心优缺点优点缺点1.算力利用率高没有流水线气泡所有卡同时计算利用率可达70%~80%2. 显存分配均匀每一层都拆分所有卡的显存占用几乎一致不会出现某张卡显存溢出、其他卡闲着的情况3.推理速度快推理时的延迟极低是分布式推理的首选1.通信开销极大每一层计算都要频繁同步数据对互联带宽要求极高必须用NVLink/IB用PCIe的话速度还不如单卡2. 实现复杂需要修改模型内部的矩阵运算代码一般靠框架Megatron-LM/vLLM支持适用场景单机多卡、有NVLink全互联的训练/推理场景是目前企业模型并行的绝对首选。3. 混合并行把多种策略结合起来核心逻辑单一策略无法满足超大规模模型的需求必须把数据并行DP、流水线并行PP、张量并行TP结合起来也就是所谓的3D并行。常见混合并行组合组合适用场景例子DP TP最常用的混合并行单机能放下模型的张量并行部分通过数据并行扩大batch_size4台服务器×8卡A100每台服务器内用TP8卡拆一个70B模型4台服务器之间用DP数据并行扩大batch_sizeDP PP模型层数多、层间计算均衡对通信带宽要求低老型号服务器、没有NVLink只能用PCIe互联3D并行DP PP TP超大规模模型比如175B单台服务器放不下比如16台×8卡A100每台内用TP8卡拆模型的一层服务器之间用PP分层放再叠加DP数据并行三、分布式训练框架运维不用写代码但要会选会用企业里的分布式训练代码都是算法工程师写的但运维必须懂框架的特点、显存优化能力、环境配置才能帮算法团队搭好环境、排查问题。1. PyTorch Distributed原生框架最通用① DDPDistributed Data Parallel适用场景单卡能放下模型数据并行核心特点PyTorch原生支持配置简单开箱即用是目前最常用的数据并行框架运维配置要点只要设置MASTER_ADDR主节点IP、MASTER_PORT主节点端口、WORLD_SIZE总卡数、RANK当前卡编号四个环境变量就能启动。② FSDP/FSDP2Fully Sharded Data Parallel适用场景单卡放不下模型想通过数据并行的方式省显存核心特点把模型参数、梯度、优化器状态全部分片到不同卡上每张卡只存自己的那一片显存开销直接降到1/卡数比如8卡FSDP显存开销是单卡的1/8运维优势比DeepSpeed配置简单PyTorch 2.0原生支持是现在的主流趋势。2. DeepSpeed微软开源显存优化最强适用场景超大规模模型训练极致显存优化核心优势ZeRO优化ZeRO-1/2/3显存优化的天花板ZeRO-3能把显存开销降到1/卡数175B模型也能在多卡上跑起来CPU Offload把部分数据放到CPU内存里进一步省显存适合显存不够、内存够的场景运维配置要点需要安装deepspeed库写一个简单的ds_config.json配置文件算法团队一般会写好运维只要负责环境配置。四、分布式推理运维的核心工作重点讲TP分布式推理是AI运维日常接触最多的场景——企业里部署70B模型几乎都要用到分布式推理。先讲核心结论再展开分布式推理核心结论推理时一般不用数据并行推理不需要同步梯度数据并行没用只用模型并行PP/TP如果只选一种优先选张量并行TP绝对不要选流水线并行PP。1. 为什么推理不用数据并行数据并行的核心是“同步梯度、更新参数”但推理时模型参数是固定的不需要更新也不需要同步梯度——数据并行对推理来说完全没用只会浪费显存每个卡都存完整模型所以推理从来不用数据并行。2. 为什么推理优先选张量并行TP不选流水线并行PP直接对比两者在推理时的表现TP全方位碾压PP对比维度张量并行TP流水线并行PP推理延迟极低所有卡同时计算没有等待高有流水线气泡卡1算完卡2才能算延迟是TP的2倍以上用户体验流畅生成速度快tokens/min高卡顿生成速度慢用户能明显感觉到等待显存分配均匀所有卡显存占用几乎一致不会溢出不均匀如果某层计算量大对应卡的显存会溢出其他卡闲着框架支持好vLLM、SGLang等主流推理框架原生支持TP配置简单差主流推理框架很少支持PP配置复杂3. 分布式推理实操vLLM TP运维直接用vLLM是目前最主流的分布式推理框架原生支持张量并行TP配置极其简单一条命令就能启动70B模型的分布式推理。核心配置参数--tensor-parallel-size TP数把模型拆到几张卡上比如TP2就是拆到2张卡TP4就是拆到4张卡TP数的选择原则必须是2的幂次1、2、4、8不能是3、5、7刚好能放下模型比如70B INT4需要42GB显存2张RTX 4090 24G总48G刚好就设TP21张A100 80G能放下就设TP1不用分布式优先用NVLinkTP对通信带宽要求极高没有NVLink的话TP速度还不如单卡。实操命令70B模型2卡TP推理# 启动vLLM服务TP2模型用Qwen2-72B-Instruct70B级python-mvllm.entrypoints.openai.api_server\--modelQwen/Qwen2-72B-Instruct-GPTQ-Int4\--tensor-parallel-size2\--host0.0.0.0\--port8000运维核心监控要点用nvidia-smi看两张卡的显存占用应该几乎一致误差不超过5%如果某张卡显存远高于另一张说明TP配置有问题监控tokens/min指标TP2的速度应该是TP1的1.5~1.8倍因为有通信开销达不到2倍如果速度没提升说明互联带宽不够比如用了PCIe而不是NVLink。五、AI运维分布式场景核心行动总结硬件选型优先看互联单机多卡必须选NVLinkNVSwitch多机多卡必须选InfiniBand通信比算力更重要训练策略选型单卡能放下用DDP/FSDP放不下用TPDP混合并行尽量不用PP推理策略选型只用模型并行优先选TPvLLM一条命令就能启动配置--tensor-parallel-size即可核心监控指标训练看算力利用率、通信吞吐量推理看tokens/min、显存均衡度环境配置优先用NVIDIA官方Docker镜像nvcr.io/nvidia/pytorch预装了所有分布式训练/推理的依赖开箱即用。