分布式机器学习
1. 原理
GPU通信
1.1 训练
数据并行DP
在每个计算节点上复制一份完整模型,将输入数据分成不同 batch 送入不同节点
模型并行
流水线并行PP
适合模型层的大小相似的情况,如transformer
张量并行TP
模型中的张量进行拆分分配到不同的 GPU
序列并行
Ulysses, Ring, TP-SP
1.2 推理
量化 Quantization
剪枝 Pruning
蒸馏 Distillation
框架
TensorRT
ONNX Runtime
2. 应用
slurm 集群
DP & parameter server
多用于单机多卡,一般采用参数服务器框架
PyTorch 源码解读之 DP & DDP:模型并行和分布式训练解析 - OpenMMLab的文章 - 知乎
DDP
多用于多机多卡,采用Ring AllReduce通讯
DeepSpeed
https://github.com/microsoft/DeepSpeed
适用大模型sft
选择 ZeRO Optimizer 的不同阶段。阶段0、1、2和3分别指禁用、优化器状态分区、优化器+梯度状态分区和优化器+梯度+参数分区。
ZeRO:stage1 (optimizer state),stage2 (+gradients),stage3 (+model parameters),offloads
Megatron
https://github.com/NVIDIA/Megatron-LM
适用大模型pretrain
https://github.com/huggingface/picotron
参考
精读
扩展
Last updated