composer: 一个用于在 GPU 集群上扩展 PyTorch 工作流的深度学习训练库

composer: 一个用于在 GPU 集群上扩展 PyTorch 工作流的深度学习训练库

它解决了什么问题

Composer 是一个深度学习训练库,旨在简化并加速在 GPU 集群上训练大规模模型的流程。它消除了分布式训练中的底层复杂性,例如并行技术和内存优化,从而让研究人员和开发人员能够专注于模型架构和实验。

它是如何工作的

Composer 构建在 PyTorch 之上,使用一个中央 Trainer 抽象来管理训练循环。该训练器集成了几个关键机制:

  • 可扩展性工具: 它结合了 PyTorch FullyShardedDataParallelism (FSDP) 和 Distributed Data Parallelism (DDP) 来处理单个 GPU 无法容纳的大型模型,并支持弹性分片检查点 (elastic sharded checkpointing),允许在不同的硬件配置下恢复训练。
  • 通过回调进行定制: 回调系统允许用户在训练循环的特定事件(例如在 batch 结束时)插入自定义逻辑,而无需修改核心训练器。
  • 算法加速: 它提供了一系列预构建的算法加速“配方” (recipes),以减少特定模型类型(如 Stable Diffusion、BERT 和 ResNet)的训练时间和成本。
  • 工作流自动化: 它包含诸如从检查点自动恢复和自动微批处理 (auto-microbatching) 等功能,以防止 CUDA 内存溢出 (OOM) 错误。

它是为谁准备的

Composer 旨在面向熟悉 Python 和 PyTorch 且正在训练各种规模神经网络(包括 LLMs、diffusion models、embedding models 和 CNNs)的机器学习工程师和研究人员,特别是那些在集群规模上运行的任务。

亮点

  • 集群规模训练: 从 1 到 512 个 GPU 实现无缝扩展。
  • 弹性检查点: 无论使用多少个 GPU,都可以保存并恢复训练。
  • 防止 OOM: 自动选择适合 GPU 内存的最大微批处理大小。
  • 云集成: 对远程存储 (S3, GCP, OCI) 和流行的实验跟踪工具 (Weights and Biases, MLFlow) 提供一流的支持。
  • 数据流式传输:StreamingDataset 集成,实现云端 blob 存储的即时下载。

Sources