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