2023-11-30讨论班
Large Language Model & High Perforam Calculation
大模型的训练离不开高性能计算
训练过程:先pre-train一个base model,再fine tune一个aligned model,用于inference
训练优化:
三维并行化 粒度从粗到细,可以一起做
DP 数据并行
简单的数据分发训练,但是需要做同步。
每个mini batch并行计算完之后需要同步各个optimizer的状态,这就导致每个节点需要存储所有的参数
现在用ZeRO-DP,将优化器的状态进行分割,通过即时通讯索取数据,让自己只需要存储自己这一块的内容
PP 流水线并行
- 把线性的计算任务拆分到不同的device=>也可以省内存
- 把流水线拆得更细
TP Tensor并行
- 数学上等价的矩阵拆分计算=>也可以省内存
Kernel(算子)优化
NCCL提供了一个通信框架库,有描述这些通信的通信原语
NVLink Bridge & NVSwitch:主机内的多GPU高速通信网络
然后NV也提了一个多主机互联的硬件组织架构,用200GPS光纤链接
目前实践上支持主机内高速互联,然后每个GPU配一个网卡,通过PCIE传输数据
每个网卡接到不同的交换机(网络平面)——资源均摊
网络平面:
例子:两层胖树,每个树干交换机可以连64个leaf,每个leaf可以连32个树干,32个网卡端口
-> 最多只能连2048(64*32)个GPU【?】,如果要扩展,可能就要多层。因此用多个网络平面来节省资源,同时由于一个GPU连了8个平面,因此平面和平面之间的数据对GPU来说都是可达的
LLM 33B 64G 256GPUS token1k/s
关于可靠性
- 时间扰动的影响,当机子数目增加,被扰动的概率是很高的,例如GC,timer等,这会导致并行时间的下降
- 硬件故障……
- 快速恢复:checkpoint的异步保存、checkpoint的载入、高速存储
推理优化:最新工作VLLM,数学等价拆分
