由 PyTorch 团队

我们很高兴宣布 torchtune 的 alpha 版本发布,这是一个 PyTorch 原生库,可以轻松微调大型语言模型。

始终遵循 PyTorch 的设计原则,torchtune 提供了可组合和模块化的构建块,以及易于扩展的训练食谱,以在多种消费级和专业级 GPU 上微调流行的LLMs。

torchtune 支持从开始到结束的完整微调工作流程,包括

  • 下载和准备数据集以及模型检查点。
  • 使用可组合的构建块定制训练,支持不同的模型架构、参数高效微调(PEFT)技术等。
  • 记录进度和指标,以深入了解训练过程。
  • 微调后对模型进行量化。
  • 在流行的基准测试上评估微调后的模型。
  • 在本地进行推理测试微调模型。
  • 检查与流行生产推理系统的检查点兼容性。

要开始,直接进入代码或浏览我们的众多教程!

为什么选择 torchtune?

过去一年,对开源LLMs的兴趣呈爆炸式增长。微调这些最先进的模型已成为适应特定用例的关键技术。这种适应可能需要从数据集和模型选择到量化、评估和推理的全面定制。此外,这些模型的大小在尝试在内存有限的消费级 GPU 上微调时提出了重大挑战。

现有解决方案使得添加这些定制或优化变得困难,因为它们将必要的组件隐藏在层层抽象之下。不同的组件如何相互作用以及哪些组件需要更新以添加新功能并不明确。torchtune 使开发者能够完全控制和可见地根据他们的特定需求和限制来调整LLMs。

torchtune 的设计

torchtune 的构建考虑了以下原则

  • 易于扩展 - 新技术不断涌现,每个人的使用场景都不同。torchtune 的配方围绕易于组合的组件和可修改的训练循环设计,最小化抽象,以便于您对微调进行微调。每个配方都是独立的 - 没有训练器或框架,且易于阅读 - 代码行数少于 600 行!
  • 民主化微调 - 用户,无论其技术水平如何,都应能够使用 torchtune。克隆并修改配置,或者动手编写一些代码!您也不需要强大的数据中心 GPU。我们的内存高效配方已在配备单个 24GB 游戏 GPU 的机器上进行了测试。
  • 与LLM开源生态系统的互操作性 - 开源LLM生态系统绝对繁荣,torchtune 利用这一点,提供与广泛产品的互操作性。这种灵活性让您完全控制如何训练和使用您微调后的模型。

在接下来的一年里,open LLMs 将变得更加强大,支持更多语言(多语言)、更多模态(多模态)和更多任务。随着这些模型的复杂性增加,我们需要像关注提供的功能或训练运行的性能一样关注“如何”设计我们的库。灵活性将是确保社区能够维持当前创新步伐的关键,许多库/工具需要相互协作,以支持全谱系的使用场景。torchtune 就是基于这样的未来愿景从头开始构建的。

在真正的 PyTorch 精神下,torchtune 通过提供与一些最流行的 LLMs 工具的集成,使您轻松上手。

  • Hugging Face Hub - Hugging Face 提供了一个庞大的开源模型和数据集库,用于微调。torchtune 通过 tune download CLI 命令无缝集成,让您可以立即开始微调您的第一个模型。
  • 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,从而在广泛的移动和边缘设备上运行高效的推理。
  • 火鸟 - 使用火鸟的量化 API,简单高效地将您的微调模型量化为 4 位或 8 位,只需简单的后训练配方。

接下来是什么?

这只是开始,我们非常兴奋地将这个 alpha 版本展示给一个充满活力和能量的社区。在接下来的几周里,我们将继续增加更多模型、功能和微调技术到库中。我们非常乐意听取任何反馈、评论或功能请求,请通过我们的 GitHub 仓库或 Discord 频道以 GitHub issue 的形式提交。一如既往,我们欢迎这个优秀社区的任何贡献。祝大家调优愉快!