Shortcuts

torchtune 概述

在本页中,我们将概述torchtune,包括其特性、关键概念和其他要点。

什么是torchtune?

torchtune 是一个用于轻松编写、微调和实验大型语言模型(LLMs)的 PyTorch 库。该库强调以下四个关键方面:

  • 简洁性和可扩展性。原生PyTorch,组件化设计和易于重用的抽象

  • 正确性. 对组件和配方正确性的高标准证明

  • 稳定性. PyTorch 运行稳定。torchtune 也应该如此

  • 民主化LLM微调。在不同硬件上开箱即用

torchtune 提供:

  • 流行的LLMs的模块化原生PyTorch实现

  • 通过检查点转换工具与流行的模型库进行互操作

  • 适用于各种微调技术的训练方法

  • Hugging Face Datasets集成用于训练,与EleutherAI’s Eval Harness集成用于评估

  • 支持使用FSDP2进行分布式训练

  • YAML 配置文件,用于轻松配置训练运行

兴奋吗?要开始,请查看我们的一些教程,包括:

  • 我们的快速入门指南,使用torchtune微调您的第一个LLM。

  • 我们的LoRA教程,学习如何使用torchtune进行参数高效的微调。

  • 我们的QLoRA教程旨在通过torchtune实现最大的内存效率。

您可以查看我们的食谱概览,了解我们支持的所有微调技术。

关键概念

当你浏览教程和代码时,有两个概念将帮助你更好地理解和使用torchtune。

配置。 YAML 文件可以帮助您配置训练设置(数据集、模型、检查点)和超参数(批量大小、学习率),而无需修改代码。有关更多信息,请参阅“所有关于配置”深入探讨。

食谱。 食谱可以被视为针对训练和可选评估LLM的端到端管道。每个食谱都实现了一种训练方法(例如:完全微调),并应用了一组有意义的特性(例如:FSDP2 + 激活检查点 + 梯度累积 + 降低精度训练)到给定的模型系列(例如:Llama3.1)。有关更多信息,请参阅“什么是食谱?”深入探讨。

设计原则

torchtune 体现了 PyTorch 的设计理念,尤其是“可用性高于一切”。

原生 PyTorch

torchtune 是一个原生 PyTorch 库。虽然我们提供了与周边生态系统的集成(例如:Hugging Face DatasetsEleutherAI’s Eval Harness),但所有核心功能都是用 PyTorch 编写的。

简单性和可扩展性

torchtune 旨在易于理解、使用和扩展。

  • 组合优于实现继承 - 用于代码重用的继承层次使代码难以阅读和扩展

  • 无训练框架 - 明确概述训练逻辑使其易于扩展以适应自定义用例

  • 代码重复优于不必要的抽象

  • 模块化构建块优于整体组件

正确性

torchtune 提供了经过充分测试的组件,确保高度的正确性。该库不会率先提供新功能,但提供的功能将经过全面测试。我们提供

  • 广泛的单元测试,以确保组件级数值与参考实现的一致性

  • 检查点测试以确保模型级别的数值与参考实现一致

  • 集成测试以确保在标准基准上与参考实现的配方级别性能一致