PyTorch Tune 概览¶
在本页,我们将逐步介绍 torchtune 的概览,包括其功能、核心概念和额外提示。
Pytorch深度学习框架是什么?¶
torchtune 是一个 PyTorch 库,旨在让您轻松构建、微调并实验大语言模型(LLMs)。该库着重强调以下四个关键方面:
简洁性与可扩展性。原生 PyTorch、组件化设计及易于复用的抽象
正确性。对组件和配方的正确性证明设定高标准
稳定性。PyTorch 开箱即用。torchtune 也应如此
让大语言模型微调普及化。开箱即用,适配不同硬件
torchtune 提供:
流行大型语言模型的模块化原生 PyTorch 实现
通过检查点转换工具实现与流行模型库的互操作性
适用于多种微调技术的训练方案
与 Hugging Face 数据集 集成用于训练,以及与 EleutherAI 的 Eval Harness 集成用于评估
支持使用 FSDP 进行分布式训练
用于轻松配置训练运行的 YAML 配置文件
兴奋吗?开始使用吧,查看我们的部分教程,包括:
关键概念¶
在浏览教程和代码时,有两个概念将帮助您更好地理解和使用 torchtune。
配置文件。 YAML 文件可帮助您在不修改代码的情况下配置训练设置(数据集、模型、检查点)和超参数(批量大小、学习率)。 有关更多信息,请参阅 《配置文件详解》。
训练示例(Recipes)。 训练示例可视为面向特定目标的端到端流程,用于训练大语言模型(LLM),并可选地进行评估。 每个训练示例均实现一种训练方法(例如:全量微调),并针对特定模型系列(例如:Llama2)应用一组实用特性(例如:FSDP + 激活检查点 + 梯度累积 + 降低精度训练)。 更多详情,请参阅 什么是训练示例?深度解析。
设计原则¶
torchtune 体现了 PyTorch 的设计理念,尤其是“可用性高于一切”。
原生 PyTorch
torchtune 是一个原生 PyTorch 库。虽然我们提供了与周边生态系统的集成(例如:Hugging Face Datasets、EleutherAI Eval Harness),但所有核心功能均使用 PyTorch 编写。
简洁性与可扩展性
torchtune 旨在易于理解、使用和扩展。
组合优于实现继承——为代码复用而设计的多层继承结构会使代码难以阅读和扩展。
无需训练框架——明确阐述训练逻辑,使其易于扩展以支持自定义用例。
代码重复优于不必要的抽象
基于单体组件的模块化构建块
正确性
torchtune 提供经过充分测试的组件,并坚持高标准以确保正确性。本库不会率先推出新功能,但所有已提供的功能都将经过严格测试。我们提供
广泛的单元测试,确保组件级数值与参考实现一致
检查点测试,以确保模型层面的数值与参考实现保持一致
集成测试,以确保在标准基准测试中,配方级性能与参考实现保持一致。