我们很高兴地宣布 torchtune 的 Alpha 版本发布,这是一个用于轻松微调大型语言模型的 PyTorch 原生库。
torchtune 秉承 PyTorch 的设计原则,提供可组合和模块化的构建块以及易于扩展的训练方案,可在各种消费级和专业级 GPU 上微调流行的 LLM。
torchtune 支持从头到尾的完整微调工作流程,包括:
- 下载并准备数据集和模型检查点。
- 通过支持不同模型架构、参数高效微调 (PEFT) 技术等的可组合构建块自定义训练。
- 记录进度和指标,以深入了解训练过程。
- 微调后量化模型。
- 在流行基准上评估微调后的模型。
- 运行本地推理以测试微调后的模型。
- 检查点与流行的生产推理系统兼容。
为什么选择 torchtune?
在过去的一年里,人们对开放式 LLM 的兴趣激增。微调这些最先进的模型已成为使其适应特定用例的关键技术。这种适应可能需要从数据集和模型选择到量化、评估和推理的广泛定制。此外,这些模型的规模在尝试使用内存有限的消费级 GPU 进行微调时带来了重大挑战。
现有的解决方案通过将必要的部件隐藏在抽象层后面,使得添加这些定制或优化变得困难。不同的组件如何相互作用,以及需要更新哪些组件才能添加新功能,这些都不清楚。torchtune 使开发人员能够完全控制和可见地根据其特定需求和限制调整 LLM。
torchtune 的设计
torchtune 的构建考虑了以下原则:
- 易于扩展 – 新技术层出不穷,每个人的微调用例都不同。torchtune 的方案围绕易于组合的组件和可修改的训练循环设计,最大限度地减少了阻碍您微调微调的抽象。每个方案都是独立的——没有训练器或框架,并且设计成易于阅读——少于 600 行代码!
- 普及微调 – 无论专业水平如何,用户都应该能够使用 torchtune。克隆和修改配置,或者亲自动手编写一些代码!您也不需要强大的数据中心 GPU。我们的内存高效方案已在配备单个 24GB 游戏 GPU 的机器上进行了测试。
- 与开源 LLM 生态系统互操作 – 开源 LLM 生态系统蓬勃发展,torchtune 利用这一点与广泛的产品进行互操作。这种灵活性使您能够完全控制如何训练和使用微调后的模型。
在未来一年,开放式 LLM 将变得更加强大,支持更多语言(多语言)、更多模态(多模态)和更多任务。随着这些模型复杂性的增加,我们需要像关注提供的功能或训练运行的性能一样,关注我们设计库的“方式”。灵活性将是确保社区能够保持当前创新速度的关键,许多库/工具将需要相互协作,以支持各种用例。torchtune 从一开始就考虑到了这个未来。
本着 PyTorch 的真正精神,torchtune 通过提供与一些最流行的 LLM 工具的集成,使其易于上手。
- Hugging Face Hub – Hugging Face 提供了一个庞大的开源模型和数据集存储库,用于微调。torchtune 通过
tune downloadCLI 命令无缝集成,因此您可以立即开始微调您的第一个模型。 - PyTorch FSDP – 使用 PyTorch FSDP 扩展您的训练。人们投资配备多个消费级显卡(如 NVidia 的 3090/4090)的机器是很常见的。torchtune 允许您通过提供由 FSDP 提供支持的分布式方案来利用这些设置。
- Weights & Biases – torchtune 使用 Weights & Biases AI 平台在训练期间记录指标和模型检查点。在一个地方跟踪您的配置、指标和微调运行的模型!
- EleutherAI 的 LM 评估工具 – 评估微调后的模型对于了解微调是否能提供您需要的结果至关重要。torchtune 包含一个由 EleutherAI 的 LM 评估工具提供支持的简单评估方案,可轻松访问一套全面的标准 LLM 基准。鉴于评估的重要性,我们将在未来几个月与 EleutherAI 密切合作,以构建更深入、更“原生”的集成。
- ExecuTorch – 使用 torchtune 微调的模型可以轻松导出到 ExecuTorch,从而实现在各种移动和边缘设备上高效推理。
- torchao – 使用由 torchao 量化 API 提供支持的简单训练后方案,轻松高效地将微调后的模型量化为 4 位或 8 位。
下一步是什么?
这仅仅是个开始,我们非常高兴能将这个 Alpha 版本呈现给一个充满活力和热情的社区。在接下来的几周里,我们将继续通过更多模型、功能和微调技术来丰富该库。我们很乐意通过我们的 GitHub 仓库上的 GitHub 问题或我们的Discord 频道收到任何反馈、评论或功能请求。一如既往,我们欢迎这个优秀社区的任何贡献。祝您微调愉快!