目录

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 DatasetsEleutherAI 的 Eval Harness),但所有核心功能都是用 PyTorch 编写的。

简单性和可扩展性

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

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

  • 无需训练框架 - 明确概述训练逻辑,便于针对自定义用例进行扩展

  • 代码重复比不必要的抽象更可取

  • 基于整体组件的模块化构建块

正确性

Torchtune 提供经过充分测试的组件,对正确性有很高的要求。该库永远不会是第一个提供功能的库,但可用的功能将经过全面测试。我们提供

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

  • 检查点测试,以确保模型级数值与参考实现相同

  • 集成测试,以确保配方级性能与标准基准上的参考实施相同

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源