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 集成进行评估
支持使用 FSDP 进行分布式训练
用于轻松配置训练运行的 YAML 配置
兴奋?要开始使用,请查看我们的一些教程,包括:
关键概念¶
在阅读教程和代码时,有两个概念可以帮助您更好地理解和使用 torchtune。
配置。YAML 文件,可帮助您配置训练设置(数据集、模型、chekckpoint)和 超参数 (batch size, learning rate) 而不修改代码。 有关更多信息,请参阅 All About Configs 深入探讨。
示例。可以考虑示例 作为用于训练和选择性评估 LLM 的目标端到端管道。 每个 recipe 都实现了一种训练方法(例如:完全微调),其中包含一组有意义的 特征(例如:FSDP + 激活检查点 + 梯度累积 + 降低精度训练) 应用于给定的模型族(例如:Llama2)。有关更多信息,请参阅什么是 Recipes?深入研究。
设计原则¶
torchtune 体现了 PyTorch 的设计理念,尤其是“可用性高于其他一切”。
原生 PyTorch
torchtune 是一个原生 PyTorch 库。虽然我们提供与周围生态系统的集成(例如:Hugging Face Datasets、EleutherAI Eval Harness),但所有核心功能都是用 PyTorch 编写的。
简单性和可扩展性
Torchtune 旨在易于理解、使用和扩展。
基于实现继承的组合 - 用于代码重用的继承层使代码难以读取和扩展
无需训练框架 - 明确概述训练逻辑,便于针对自定义用例进行扩展
代码重复比不必要的抽象更可取
基于整体组件的模块化构建块
正确性
Torchtune 提供经过充分测试的组件,对正确性有很高的要求。该库永远不会是第一个提供功能的库,但可用的功能将经过全面测试。我们提供
广泛的单元测试,以确保组件级数值与参考实现相同
检查点测试,以确保模型级数值与参考实现相同
集成测试,以确保配方级性能与标准基准上的参考实施相同