作者:PyTorch 团队

我们很高兴地宣布 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 download CLI 命令实现无缝集成,让您可以立即开始微调您的第一个模型。
  • PyTorch FSDP - 使用 PyTorch FSDP 扩展您的训练。人们通常会投资购买配备多张消费级显卡(如英伟达的 3090/4090)的机器。torchtune 通过提供基于 FSDP 的分布式“菜谱”来帮助您利用这些配置。
  • Weights & Biases - torchtune 使用 Weights & Biases AI 平台在训练期间记录指标和模型检查点。在一个地方跟踪您的微调运行中的配置、指标和模型!
  • EleutherAI 的 LM Evaluation Harness - 评估微调后的模型对于理解微调是否带来了您需要的结果至关重要。torchtune 包含一个由 EleutherAI 的 LM Evaluation Harness 提供支持的简单评估“菜谱”,以便轻松访问一整套标准的 LLM 基准测试。鉴于评估的重要性,我们将在接下来的几个月与 EleutherAI 密切合作,构建更深入、更“原生”的集成。
  • ExecuTorch - 使用 torchtune 微调的模型可以轻松导出到 ExecuTorch,从而在各种移动和边缘设备上高效运行推理。
  • torchao - 使用由 torchao 的量化 API 提供支持的简单训练后“菜谱”,轻松高效地将您的微调模型量化为 4 位或 8 位。

接下来?

这仅仅是个开始,我们非常高兴将这个 Alpha 版本呈现给一个充满活力和朝气的社区。在未来几周,我们将继续为库添加更多模型、功能和微调技术。我们非常欢迎您在我们的仓库上通过 GitHub Issue,或在我们的Discord 频道提出任何反馈、评论或功能请求。一如既往,我们热忱欢迎这个优秀社区的任何贡献。微调愉快!