AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


torchtune:使用 PyTorch 轻松微调大型语言模型
发布日期:2024-06-11 07:44:05 浏览次数: 1724



torchtune 发布 


作者: PyTorch团队


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

坚持 PyTorch 的设计原则,torchtune 提供了可组合和模块化的构建块,以及易于扩展的训练配方,用于在各种消费级和专业 GPU 上微调流行的大型语言模型。

torchtune 支持从头到尾的完整微调工作流程,包括:

  • 下载并准备数据集和模型检查点。

  • 使用可组合构建块自定义训练,支持不同的模型架构、参数高效微调(PEFT)技术等。

  • 记录进度和指标,洞察训练过程。 

  • 微调后对模型进行量化。

  • 在流行的基准测试中评估微调后的模型。

  • 进行本地推理以测试微调后的模型。

  • 与流行的生产推理系统保持检查点兼容性。

开始使用,直接进入代码【1】或浏览我们的许多教程!

为什么选择 torchtune?


在过去一年中,对开源大型语言模型的兴趣出现了爆炸式增长。微调这些最先进的模型已经成为将它们应用于特定用例的关键技术。这种调整可能需要从数据集和模型选择到量化、评估和推理等各个方面进行大量定制。此外,这些大型模型的体积对于尝试在显存有限的消费级 GPU 上进行微调而言是一个重大挑战。

现有解决方案通过隐藏必要的组件背后的层层抽象,使添加这些定制或优化变得很困难。不清楚不同组件如何相互作用,以及需要更新哪些组件来添加新功能。torchtune 赋予开发人员以完全的控制权和可见性,根据特定需求和限制调整大型语言模型。

torchtune 的设计理念


torchtune 的设计理念如下:

  • 易于扩展 - 新技术不断涌现,每个人的微调用例都不尽相同。torchtune 的配方围绕易于组合的组件和可 hack 的训练循环而设计,最小化抽象,让您完全控制微调过程。每个配方都是独立的 - 没有 trainer 或框架,为易于阅读而设计,代码不到 600 行!

  • 使微调民主化 - 无论用户的专业水平如何,都应该能够使用 torchtune。克隆并修改配置,或动手写点代码!您也不需要大型数据中心 GPU。我们内存高效的配方已在单个 24 GB 游戏 GPU 上进行了测试。

  • 与开源大型语言模型生态系统互操作 - 开源大型语言模型生态系统绝对是蓬勃发展的,torchtune 利用这一点来与广泛的产品提供互操作性。这种灵活性让您完全控制训练和使用微调模型的方式。

在接下来的一年里,开源大型语言模型将变得更加强大,支持更多语言(多语言)、更多模态(多模态)和更多任务。随着这些模型的复杂性增加,我们需要在设计库时和提供功能或培训运行性能时一样重视"如何"。灵活性将是关键,以确保社区能够保持当前的创新步伐,许多库/工具都需要相互协作,以支持全谱系的使用案例。torchtune 从一开始就以未来为重心。

在真正的 PyTorch 精神下,torchtune 通过与一些最流行的大型语言模型工作工具集成,使入门变得很容易。

  • Hugging Face Hub - Hugging Face 提供了一个庞大的开源模型和数据集存储库,用于微调。torchtune 通过 tune download  命令与之无缝集成,因此您可以立即开始微调第一个模型。

  • PyTorch FSDP - 使用 PyTorch FSDP 扩展训练。人们通常会投资购买多个消费级卡(如 Nvidia 3090/4090)的机器。torchtune 允许您利用这些设置,提供由 FSDP 驱动的分布式配方。  

  • Weights & Biases - torchtune 使用 Weights & Biases AI 平台在训练期间记录指标和模型检查点。跟踪您的配置、指标和微调运行中的模型,全部集中在一处!

  • EleutherAI 的 LM 评估工具 - 评估微调模型是了解微调是否能满足需求的关键。torchtune 包含一个由 EleutherAI 的 LM 评估工具提供支持的简单评估配方,可轻松访问一套全面的标准大型语言模型基准测试。鉴于评估的重要性,我们将在未来几个月与 EleutherAI 密切合作,构建更深入和更"原生"的集成。  

  • ExecuTorch - 使用 torchtune 微调的模型可以轻松导出到 ExecuTorch,从而在各种移动和边缘设备上高效运行推理。

  • torchao - 使用由 torchao 提供的量化 API 支持的简单后训练配方,轻松高效地将微调后的模型量化为 4 位或 8 位。

未来计划


这只是个开始,我们很高兴能在充满活力的社区面前推出这个 alpha 版本。在接下来的几周,我们将继续为库增加更多模型、功能和微调技术。我们渴望听到任何反馈、意见或功能请求,可在我们的 GitHub 仓库【1】中提出 issue,或在我们的 Discord 频道【2】中讨论。一如既往,我们期待这个优秀社区的任何贡献。祝微调愉快!

附录:PyTorch 设计理念【3】


这份文档旨在帮助贡献者和模块维护者理解 PyTorch 长期形成的高层次设计原则。这些并非硬性规定,而是作为指导方针,用于权衡不同考虑因素并解决开发 PyTorch 时可能出现的分歧。

设计原则

1. 可用性高于性能

PyTorch 的首要目标是可用性,次要目标是保持合理的性能。我们相信保持灵活性以支持基于 PyTorch 抽象构建的研究工作至关重要。我们无法预测未来工作负载,但我们希望它们首先建立在 PyTorch 之上,这需要灵活性。

2. 简单胜于容易

我们偏好暴露简单和显式的构建块,而不是对从业人员来说很容易使用的 API。简单版本对新 PyTorch 用户来说立即可以理解和调试。复杂系统很难调试。

3. Python 优先,同时具有一流的语言互操作性

PyTorch 深深植根于 Python,您可以自然地像使用 NumPy、SciPy 和 scikit-learn 等 Python 库一样使用它。我们的目标是不去重新发明已有的东西。尽管如此,我们还是不得不处理 Python 带来的开销,比如重写自动求导引擎、大部分算子定义等。

这些原则并非硬性规定,而是我们在构建 PyTorch 时作出的选择。我们期待与更多贡献者和维护者一起应用这些核心原则,并在学习新事物时继续发展这些原则。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询