torchtune 概述¶
在此页面上,我们将介绍 torchtune 的概述,包括功能、关键概念和其他指针。
什么是 torchtune?¶
torchtune 是一个 PyTorch 库,用于轻松编写、微调和试验 LLM。该库强调 4 个关键方面:
简单性和可扩展性。Native-PyTorch、组件化设计和易于重用的抽象
正确性。证明成分和配方正确性的高标准
稳定性。PyTorch 就是好用。torchtune 也应该如此
使 LLM 微调大众化。在不同的硬件上开箱即用
Torchtune 提供:
常用 LLM 的模块化原生 PyTorch 实现
通过 checkpoint-conversion 实用程序与流行的Model Zoo进行互操作性
各种微调技术的训练方法
与 Hugging Face Datasets 集成进行训练,与 EleutherAI 的 Eval Harness 集成进行评估
支持使用 FSDP2 进行分布式训练
用于轻松配置训练运行的 YAML 配置
兴奋?要开始使用,请查看我们的一些教程,包括:
我们的快速入门指南,介绍如何使用 torchtune 微调您的第一个 LLM。
我们的 LoRA 教程,了解如何使用 torchtune 进行参数高效的微调。
我们的 QLoRA 教程使用 torchtune 实现最大的内存效率。
您可以查看我们的配方概述,了解我们支持的所有微调技术。
关键概念¶
在阅读教程和代码时,有两个概念可以帮助您更好地理解和使用 torchtune。
配置。YAML 文件,可帮助您配置训练设置(数据集、模型、检查点)和 超参数 (batch size, learning rate) 而不修改代码。 有关更多信息,请参阅“关于 Config 的所有内容”深入探讨。
示例。可以考虑示例 作为用于训练和选择性评估 LLM 的目标端到端管道。 每个 recipe 都实现了一种训练方法(例如:完全微调),其中包含一组有意义的 特征(例如:FSDP2 + 激活检查点 + 梯度累积 + 降低精度训练) 应用于给定的模型族(例如:Llama3.1)。有关更多信息,请参阅“什么是配方?”深入探讨。
设计原则¶
torchtune 体现了 PyTorch 的设计理念,尤其是“可用性高于其他一切”。
原生 PyTorch
torchtune 是一个原生 PyTorch 库。虽然我们提供与周围生态系统的集成(例如:Hugging Face Datasets、EleutherAI 的 Eval Harness),但所有核心功能都是用 PyTorch 编写的。
简单性和可扩展性
Torchtune 旨在易于理解、使用和扩展。
基于实现继承的组合 - 用于代码重用的继承层使代码难以读取和扩展
无需训练框架 - 明确概述训练逻辑,便于针对自定义用例进行扩展
代码重复比不必要的抽象更可取
基于整体组件的模块化构建块
正确性
Torchtune 提供经过充分测试的组件,对正确性有很高的要求。该库永远不会是第一个提供功能的库,但可用的功能将经过全面测试。我们提供
广泛的单元测试,以确保组件级数值与参考实现相同
检查点测试,以确保模型级数值与参考实现相同
集成测试,以确保配方级性能与标准基准上的参考实施相同