文章目录
- Hugging Face 开源社区
- DeepSpeed
- Megatron-LM
Hugging Face 开源社区
Hugging Face 是一个致力于推动自然语言处理技术进步的开源社区,专注于为研究人员和工程师提供高效、易用且可重复的自然语言处理技术解决方案。这些解决方案既包括基础的技术流程,如预训练和微调,也涉及具体的应用任务,包括对话系统、翻译等。Hugging Face 平台上的代码大部分基于目前主流的深度学习框架实现完成的,如 PyTorch 和 TensorFlow。为了满足广泛的研究与应用需求,Hugging Face 发布了一系列代码库,包括 Transformers 、Datasets 和 Accelerate 等。
Transformers,该代码库是一个使用 Transformer 架构构建模型的开源 Python库,提供了一系列预训练的模型与相关开发工具,在自然语言处理领域被广泛使用。Transformers 库的主要优势包括如下四点。(1)易于使用:对所有模型的 API进行了统一封装,研究者只需了解三个核心类(模型、配置和分词器),即可快速上手。(2)节省资源:鼓励模型开源共享,减少重复训练,节约计算资源。(3)广泛支持:提供数以万计的预训练模型,满足多样化需求。(4)全周期管理:简化模型训练到部署的过程,支持跨框架模型转换,易于设计模型和构建实验。
Datasets,该代码库用于高效访问和共享自然语言处理任务相关的数据集,可以快速从远程 Hugging Face Hub 中加载数据集到本地。在使用中,用户仅需一行代码便能加载指定的数据集,同时,该库还集成了强大的数据处理能力,以满足各种复杂的数据操作需求。得益于软件框架 Apache Arrow 格式的支持,Datasets 能够实现大型数据集的零拷贝读取,从而减少内存占用,显著提升数据处理的效率。
Accelerate,该代码库是一个旨在简化模型分布式训练和混合精度训练的 Python 库,专门针对 PyTorch 开发。 Accelerate 库全面支持分布式训练,实现了混合精度训练,并完善了并行训练时多设备的自动管理。该库降低了用户进行分布式训练的难度,仅通过少量代码,用户便能在各种分布式配置中执行 PyTorch 程序,从而便捷地使用大规模计算资源,有效加快模型训练的进度。此外,Accelerate还提供了一个可配置的命令行界面工具,进一步简化了训练环境的配置与测试流程。
DeepSpeed
DeepSpeed 是微软开发的一个加速深度学习模型训练的高性能库(与 PyTorch兼容),被广泛用于大语言模型的分布式训练,例如 MT-NLG和 BLOOM等。DeepSpeed 为分布式训练提供了各种优化技术支持,如内存优化(ZeRO 技术、梯度检查点)、数据并行、混合精度训练等,使得整个训练过程变得更加高效、稳定。为了更加适配大模型时代的用户需求,DeepSpeed 针对模型生成和强化学习分别开发了特制的优化框架:DeepSpeed-MII 和 DeepSpeed-Chat。
DeepSpeed-MII,该框架旨在通过提高吞吐量、降低延迟等方式来降低大模型解码生成的运行成本。首先,DeepSpeed-MII 实现了两项重要技术以加速文本生成过程:(1)块状键值缓存,将键值缓存分割成固定大小的块,从而减少了内存碎片化的情况,提升整体的系统吞吐量;(2)连续批处理,在模型的每个前向传播过程中进行独立的调度决策,以实现更细粒度的调度和优化内存效率。在此基础上,DeepSpeed-MII 又提出了 SplitFuse 技术,将提示和生成结果进行动态分解,以进一步改善连续批处理和系统吞吐量。它目前已支持包括 LLaMA 、Mistral 、Falcon、Mixtral 和 Qwen 在内的多个模型。
DeepSpeed-Chat. 该框架是一个易于使用的用于训练类 ChatGPT 模型的开发工具,完整集成了包括基于人类反馈的强化学习算法在内的训练过程。它具有三个主要功能:(1)使用方便快捷。该框架简化了类 ChatGPT 模型的训练和生成过程,使得用户可以用简单的脚本实现多个训练步骤,并且提供了用于测试对话式交互的 API;(2)训练通路完整。该框架复现了 InstructGPT的训练过程,包括有监督微调、奖励模型训练和基于人类反馈的强化学习,还提供了数据抽象和混合功能,以帮助用户运行完整的训练流程;(3)将 DeepSpeed 的训练和生成集成到了一个统一框架中,实现了在 RLHF 中训练和生成模式之间的无缝切换,使其可以利用 DeepSpeed 的各种优化技术。
Megatron-LM
Megatron-LM是由 NVIDIA 开发的一款专门为训练大语言模型而设计的深度学习代码库。这个代码库旨在解决大型模型训练过程中所遇到的一系列技术挑战,包括显存限制、计算效率以及不同的并行策略带来的通信问题。Megatron-LM 引入了一系列分布式训练的优化技巧,支持多种并行化策略,包括(1)数据并行,通过在每个工作节点复制模型,并将输入数据切分多份分配给多个节点,定期同步所有梯度来提升 GPU 的使用效率;(2)模型并行,包括张量并行和流水线并行,通过在多个工作节点上分配模型和计算来克服单个 GPU 容量限制的问题。此外,Megatron-LM 还支持混合精度训练和 FlashAttention 功能。这些优化技术可以在很大程度上提高训练效率和速度,实现跨 GPU 的高效分布式训练。