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