XTuner模型训练框架快速入门
《XTuner模型训练框架快速入门》共 0.3 万字,通篇围绕 微调、数据集、LoRA、QLoRA 展开,归在「训练、微调与数据」这一层。
适合要自己训模型、或者判断这一版该不该训的人
目录骨架(8 节)
- 最佳实践
- 准备模型权重
- 准备微调数据集
- 准备配置文件
- 修改配置文件
- 启动微调
- 模型转换 + LoRA 合并
- 与模型对话
示例代码
📎 附件:xtuner-demo.zip(zip, 5KB)
原文链接:https://www.yuque.com/attachments/yuque/0/2025/zip/2424104/1748309455322-225a169b-a5bf-4203-b404-cb4060b80dda.zip
XTuner简介
XTuner是一款由上海人工智能实验室开发的开源工具,专门用于大语言模型的高效微调。它支持几乎所有GPU上对LLM(Large Language Model)进行预训练或微调,甚至可以在8GB GPU上微调7B大小的模型。XTuner的设计理念是“开箱即用”,为用户提供了丰富的预设配置和直观的命令行接口,大大降低了使用门槛。
项目地址:https://github.com/InternLM/xtuner.git
核心特点
- 高效性:XTuner通过支持在有限显存上进行大模型微调,显著降低了对硬件资源的需求。它自动分配高性能操作符,如FlashAttention和Triton内核,以提高训练吞吐量。此外,XTuner还支持多节点上的跨设备微调,进一步提升了训练效率。
- 灵活性:XTuner兼容多种大语言模型和多模态图文模型的预训练与微调。它支持各种数据格式,如JSON、CSV等,以及多种微调算法,如QLoRA(Quantized Low-Rank Adaptation)、LoRA和全参数微调。这使得用户可以根据不同的需求和场景选择合适的解决方案。
- 全能性:除了支持常规的连续预训练和微调功能外,XTuner还提供了指令微调与Agent微调等高级功能。此外,它还支持与部署和评测工具库的无缝集成,如LMDeploy和OpenCompass,为用户提供了一站式的模型开发体验。
安装
本节中,我们将演示如何安装 XTuner。
最佳实践
我们推荐用户参照我们的最佳实践安装 XTuner。 推荐使用 Python-3.10 的 conda 虚拟环境安装 XTuner。
步骤 0. 使用 conda 先构建一个 Python-3.10 的虚拟环境
$ conda create --name xtuner python=3.10 -y
$ conda activate xtuner
步骤 1. 安装 XTuner
方案a: 通过 pip 直接安装
$ pip install -U 'xtuner[deepspeed]'
pip install xtuner[all]==0.1.19
方案b: 从源码安装
$ git clone https://github.com/InternLM/xtuner.git
$ cd xtuner
$ pip install -e '.[deepspeed]'
备注
“-e” 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效
验证
为了验证 XTuner 是否安装正确,我们将使用命令打印配置文件。
打印配置文件: 在命令行中使用 xtuner list-cfg 验证是否能打印配置文件列表。
$ xtuner list-cfg
快速上手
本节中,我们将演示如何使用 XTuner 微调模型,帮助您快速上手 XTuner。
在成功安装 XTuner 后,便可以开始进行模型的微调。在本节中,我们将演示如何使用 XTuner,应用 QLoRA 算法在 Colorist 数据集上微调 InternLM2-Chat-7B。
Colorist 数据集(HuggingFace 链接;ModelScope 链接)是一个根据颜色描述提供颜色选择与建议的数据集,经过该数据集微调的模型可以做到根据用户对于颜色的描述,从而给出16进制下的颜色编码,如用户输入“宁静而又相当明亮的浅天蓝色,介于天蓝色和婴儿蓝之间,因其亮度而带有一丝轻微的荧光感。”,模型输出
,该颜色很符合用户的描述。以下是该数据集的几条样例数据:
| 英文描述 | 中文描述 | 颜色 |
|---|---|---|
| Light Sky Blue: A calming, fairly bright color that falls between sky blue and baby blue, with a hint of slight fluorescence due to its brightness. | 浅天蓝色 :一种介于天蓝和婴儿 蓝之间的平和、相当明 亮的颜色,由于明亮而 带有一丝轻微的荧光。 | #66ccff: |
| Bright red: This is a very vibrant, saturated and vivid shade of red, resembling the color of ripe apples or fresh blood. It is as red as you can get on a standard RGB color palette, with no elements of either blue or green. | 鲜红色: 这是一种非常鲜 艳、饱和、生动的红色 ,类似成熟苹果或新鲜 血液的颜色。它是标准 RGB 调色板上的红色,不含 任何蓝色或绿色元素。 | #ee0000: |
| Bright Turquoise: This color mixes the freshness of bright green with the tranquility of light blue, leading to a vibrant shade of turquoise. It is reminiscent of tropical waters. | 明亮的绿松石 色:这种颜色融合了鲜 绿色的清新和淡蓝色的 宁静,呈现出一种充满 活力的绿松石色调。它 让人联想到热带水域。 | #00ffcc: |
