LLMs 最被低估的用途
reddit上的一个讨论,什么是LLMs一些最被低估的用途? 来源:https://weibo.com/2194035935/ODa6MhSSn?pagetype=profilefeed ——蚁工厂,互联网科技博主
编者按: 怎样在 10,000 个 H100 GPU 上训练大模型?如何充分利用每一块 GPU 的算力?如何在这个复杂的 GPU 网络中高效传递数据?当不可避免的硬件故障发生时,又该如何快速恢复训练进度?我们今天为大家带来的文章中,作者为我们揭示了应对这些挑战的关键策略。
作者 | Soumith Chintala
编译 | 岳扬
我的好友 Francois Fleuret 提出了上述问题。我迅速总结了一些在大规模训练领域中相当普遍的知识,内容分为三部分。
持续优化并行策略,直到所有 GPU 都能被高效利用,达到最高利用率。
在需要 GPU 间通信时,应尽可能早地启动通信过程:
在多个计算节点间传递大量模型状态信息(如梯度、优化器状态信息)是一项复杂的任务。在使用 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 内存。
故障是不可避免的,涉及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 @PyTorch at Meta. Also dabble in robotics at NYU. AI is delicious when it is accessible and open-source.
END
本期互动内容 🍻
❓还记得你第一次配置分布式训练环境时的经历吗?有什么想对新手说的建议?
原文链接:
https://soumith.ch/blog/2024-10-02-training-10k-scale.md.html
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。