NCCL源码图解之allreduce
allreduce是最常用的集合通信算子, 同时也是primitives类涵盖最全的算子, 搞懂了allreduce的源码, 其他算子的源码就手到擒来了
allreduce是最常用的集合通信算子, 同时也是primitives类涵盖最全的算子, 搞懂了allreduce的源码, 其他算子的源码就手到擒来了
Primitives类是NCCL中最基本的通信行为, 常用的集合通信原语都是这些行为的组合
NCCL会将通信原语拆分成更细粒度的primitives op的组合,
本文讲解了NVIDIA不同架构下常见的节点内拓扑结构, 包括DGX和HGX的区别
数值计算的主要挑战在于如何管理误差的传播 — James H. Wilkinson 数值分析之父
随着大模型参数量的不断增长, 显存成为瓶颈, 本文分析了显存占用的类型及大小, 同时讲述了业界提出的多种优化策略
将优化器状态, 梯度, 权重等显存占用进行切分, 进一步降低单卡显存
cuda stream是一个先入先出队列, 用于管理异步操作的并行执行
可以根据模型计算量以及集群的算力粗略计算出大模型预训练的时间, 对于大型模型的资源占用评估非常有必要
随着模型规模的增大, 以及GPU低精度算力的提升, 混合精度训练存在诸多优势, 成为业界标配; 常见的有FP32/BF16混合精度, 最近一年来, FP8混合精度也逐渐流行开来