torchtune 概述¶
在此页面上,我们将介绍 torchtune 的概述,包括特性、关键概念和附加说明。
什么是 torchtune?¶
torchtune 是一个 PyTorch 库,用于轻松编写、微调和实验 LLM。该库强调 4 个关键方面:
简单性和可扩展性。原生 PyTorch、组件化设计和易于复用的抽象
正确性。组件和代码示例的正确性证明标准很高
稳定性。PyTorch 可以正常工作。torchtune 也应如此
普及 LLM 微调。可在不同硬件上直接使用
torchtune 提供以下功能:
流行 LLM 的模块化原生 PyTorch 实现
通过检查点转换工具与流行模型库实现互操作性
适用于各种微调技术的训练代码示例
与用于训练的 Hugging Face Datasets 和用于评估的 EleutherAI 的 Eval Harness 集成
支持使用 FSDP2 进行分布式训练
用于轻松配置训练运行的 YAML Configs
心动了吗?要开始使用,请查看我们的一些教程,包括:
我们使用 torchtune 微调你的第一个 LLM 的快速入门指南。
我们的LoRA 教程,了解使用 torchtune 进行参数高效微调。
我们的QLoRA 教程,使用 torchtune 实现最大内存效率。
你可以查看我们的代码示例概述,了解我们支持的所有微调技术。
关键概念¶
当你浏览教程和代码时,有两个概念将帮助你更好地理解和使用 torchtune。
Configs。YAML 文件,无需修改代码即可帮助你配置训练设置(数据集、模型、检查点)和超参数(批大小、学习率)。有关更多信息,请参阅“关于 Configs 的一切”深入探讨。
代码示例。代码示例可以看作是针对 LLM 训练和可选评估的端到端流程。每个代码示例实现了一种训练方法(例如:完全微调),并应用了一组有意义的特性(例如:FSDP2 + 激活检查点 + 梯度累积 + 低精度训练)到给定的模型系列(例如:Llama3.1)。有关更多信息,请参阅“什么是代码示例?”深入探讨。
设计原则¶
torchtune 遵循PyTorch 的设计理念,特别是“可用性高于一切”。
原生 PyTorch
torchtune 是一个原生 PyTorch 库。虽然我们提供了与周边生态系统(例如:Hugging Face Datasets、EleutherAI 的 Eval Harness)的集成,但所有核心功能都是用 PyTorch 编写的。
简单性和可扩展性
torchtune 设计为易于理解、使用和扩展。
组合优于实现继承 - 使用继承层进行代码复用会使代码难以阅读和扩展
无训练框架 - 明确概述训练逻辑使其易于针对自定义用例进行扩展
代码重复优于不必要的抽象
模块化构建块优于整体组件
正确性
torchtune 提供经过充分测试且正确性标准很高的组件。该库永远不会是第一个提供功能的库,但可用功能将经过全面测试。我们提供:
广泛的单元测试,确保组件级别与参考实现具有数值等效性
检查点测试,确保模型级别与参考实现具有数值等效性
集成测试,确保代码示例级别在标准基准上与参考实现具有性能等效性