【本文正在介入 AI.x社区AIGC翻新先锋者征文大赛】
作者 | Soumith Chintala
编译 |岳扬
我的朋友 Francois Fleuret 提出了上述疑问。我迅速总结了一些在大规模训练畛域中相当广泛的常识,内容分为三局部。
01 如何将尽或者大的神经网络和 batch-size 适配到那 10000 张 H100s 上
1.1 并行战略
继续提升并行战略,直到一切 GPU 都能被高效应用,到达最高应用率。
1.2 Checkpointing / Compute vs memorize
02 尽或者高效地在 GPU 集群间传递模型形态消息
2.1 Communication overlap 战略:
在须要 GPU 间通讯时,应尽或者早地启动通讯环节:
2.2 探求并应用网络底层拓扑结构:
在多个计算节点间传递少量模型形态消息(如梯度、提升器形态消息)是一项复杂的义务。在经常使用 Sync SGD 时,须要尽或者快地集中传输这些形态消息。
网络中或者蕴含多层替换机,并具有 RDMA 才干(可以间接将 GPU 内存中的数据复制到网卡,齐全绕过 CPU 内存),同时领有前端和后端网卡(前端网卡衔接到如 NFS 之类的存储系统,后端网卡则将 GPU 衔接到集群中的其他 GPU)。
因此,在口头 all-reduce 或 scatter/gather 等通讯操作时,充沛应用这些网络消息至关关键。例如,经过树形归约算法(tree-reduce),all-reduce 操作的期间复杂度可以降落到O(log(n));同时,网络光纤衔接节点间的不同类型光纤对常数因子的影响,关于缩小全体提早期间也是十分关键的。
像 NCCL 这样的库能够自动地识别底层网络拓扑,并在口头 all-reduce 和其他通讯操作时加以应用。
在这样的大规模计算中,咱们还必定调整替换机和网卡中的数据包路由算法,以成功有效的负载平衡。替换机也须要少量的 HBM 内存(不只仅是 GPU 须要),由于当数据包排队期待时,须要在某个中央排队而不会被摈弃——这就是替换机级别的 HBM 内存。
03 如何在遇到配件或软件缺点时,尽或者迅速地复原系统?
缺点是无法防止的,触及GPU、网卡、电缆等多种配件。有些缺点能够迅速被发现,而有些则或者由于某个节点没有按时照应(比如 NCCL 的 all-reduce 操作卡住了)才被发觉。咱们开发了多种工具来监控机群的肥壮状况,并尽或者快地将缺点节点从机群中移除。这可不是一件容易的事。
在这种规模下,内存位随机翻转造成的隐性数据损坏概率参与,或者造成训练 loss 值意外升高。只管这种疑问在小规模系统中很少见,但在大规模系统中则或者频繁出现。在软件层面提早检测这种疑问十分艰巨。一些配件设施装备了内置校验和的电路,可以在计算后启动校验 —— 这样,一旦出现位翻转,配件就能触发终止。但 H100 和之前的 NVIDIA GPU 都不具有这一性能。
为了应答这些缺点,咱们须要尽或者频繁且迅速地保管模型形态消息;一旦出现缺点,咱们也要能够迅速复原并继续训练。通常,咱们会迅速将模型形态消息另存到 CPU 内存的一个独立线程中,并在后盾将数据从 CPU 内存写入到磁盘或远程存储系统。咱们还以分片的方式保管模型形态消息(应用了 torch.distributed 的 checkpointing 性能),也就是说,不是每个 GPU 都须要保管完整的模型权重;每个 GPU 只有保管一局部权重 —— 其他局部可以经过其他 GPU 的分片 checkpoints 来复原。
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
About the authors
Soumith Chintala
Cofounded and lead@PyTorchat Meta. Also dabble in robotics at NYU. AI is delicious when it is accessible and open-source.
本期互动内容