torchtune 概述¶
在本页中,我们将介绍 torchtune 的概述,包括功能、关键概念和附加指针。
什么是 torchtune?¶
torchtune 是一个 PyTorch 库,用于轻松编写、微调和试验 LLM。该库强调 4 个关键方面
简单性和可扩展性。原生 PyTorch、组件化设计和易于重用的抽象
正确性。对证明组件和配方的正确性有很高的要求
稳定性。PyTorch 正常工作。torchtune 也应该如此
使 LLM 微调民主化。在不同的硬件上开箱即用
torchtune 提供
流行 LLM 的模块化原生 PyTorch 实现
通过检查点转换实用程序与流行的模型库互操作
用于各种微调技术的训练配方
与 Hugging Face 数据集 集成,用于训练和 EleutherAI 的评估工具 集成,用于评估
支持使用 FSDP 进行分布式训练
YAML 配置,用于轻松配置训练运行
兴奋吗?要开始,请查看我们的部分教程,包括
关键概念¶
在您浏览教程和代码时,有两个概念将帮助您更好地理解和使用 torchtune。
配置。 YAML 文件帮助您配置训练设置(数据集、模型、检查点)和超参数(批次大小、学习率),无需修改代码。有关更多信息,请参阅 关于配置的深入了解。
配方。 配方可以被认为是针对大型语言模型训练和可选评估的端到端管道。每个配方都实现了一种训练方法(例如:完全微调),并应用了一组有意义的功能(例如:FSDP + 激活检查点 + 梯度累积 + 降低精度训练)到给定的模型系列(例如:Llama2)。有关更多信息,请参阅 什么是配方?深入了解。
设计原则¶
torchtune 体现了 PyTorch 的设计理念,尤其是“可用性高于一切”。
原生 PyTorch
torchtune 是一个原生 PyTorch 库。虽然我们提供了与周围生态系统(例如:Hugging Face 数据集、EleutherAI 评估工具)的集成,但所有核心功能都是用 PyTorch 编写的。
简单性和可扩展性
torchtune 的设计易于理解、使用和扩展。
组合优于实现继承 - 用于代码重用的继承层会使代码难以阅读和扩展
没有训练框架 - 明确概述训练逻辑,使其易于扩展以满足自定义用例
代码重复优于不必要的抽象
模块化构建块优于整体组件
正确性
torchtune 提供经过良好测试的组件,对正确性有很高的要求。该库永远不会是第一个提供功能的库,但可用功能将经过彻底测试。我们提供
广泛的单元测试,以确保组件级数值与参考实现一致
检查点测试,以确保模型级数值与参考实现一致
集成测试,以确保配方级性能与标准基准上的参考实现一致