Chapter 01
项目背景与定位
1.1 一句话定位
XTuner 是上海人工智能实验室(OpenMMLab / InternLM 团队)开源的、主打"消费级 GPU 高效微调"的大模型微调框架。它建立在 MMEngine(OpenMMLab 的通用训练引擎)之上,配合 DeepSpeed / FlashAttention,号称能"用 8 GB 显存微调 7B 模型、24 GB 微调 70B 模型"。
XTuner 是 InternLM 模型家族的官方训练工具,对 InternLM2.5 / InternVL 等模型支持深度更高。同时也支持 Llama、Qwen、Mistral 等主流模型。
1.2 为什么会有 XTuner
上海 AI Lab 在 2023 年发布 InternLM,需要一份配套的微调工具。当时面对的诉求和 LLaMA-Factory 类似,但侧重不同:
- OpenMMLab 体系积淀:MMDetection / MMSegmentation / MMPose 等项目已经把 MMEngine 用得很熟;
- InternLM 系深度集成:需要一份对 InternLM 一等公民待遇的微调代码;
- 消费级 GPU 优化:把"在 4090 单卡上能跑多大模型"的极限做到尽可能高,配合 sequence parallel 与 FlashAttention;
- 打通多模态:InternVL 出来后,XTuner 也要能微调视觉模型。
1.3 它和 LLaMA-Factory / ms-swift 的对比
| 维度 | XTuner | LLaMA-Factory | ms-swift |
|---|---|---|---|
| 维护方 | 上海 AI Lab | 个人 + 社区 | 阿里魔搭官方 |
| 旗舰模型 | InternLM / InternVL | 中立 | Qwen |
| 配置风格 | MMEngine Python config | YAML / argparse / WebUI | argparse CLI |
| WebUI | 较弱 | 强 | 中等 |
| 多模态 | 强(InternVL) | 强 | 强 |
| 上下文长度 | sequence parallel 加持,长上下文好 | 一般 | 一般 |
| 部署生态 | 配套 LMDeploy | 多种 | 阿里云生态 |
1.4 设计哲学:MMEngine 生态 + 长上下文优化
- 配置即 Python:
config.py是真正的 Python 文件,类似 MMDetection 的写法。优点是可以 import / 继承 / 函数调用;缺点是学习曲线比 YAML 陡。 - Runner 模式:训练循环不是写在用户脚本里,而是由 MMEngine 的
Runner接管,用户提供 model、dataloader、optimizer 三要素。 - Sequence Parallel 是亮点:XTuner 提供了相对易用的 sequence parallel 实现(沿 sequence 维度切,配合 FlashAttention),让长上下文训练(32K / 128K)变得可行。
- 配套 LMDeploy 部署:训练后无缝衔接 LMDeploy 推理引擎(同样上海 AI Lab 出品)。
1.5 它适合用来做什么、不适合做什么
| 判断 | 典型场景 |
|---|---|
| ✅ 适合 | 微调 InternLM / InternVL / 书生·浦语 系列模型 |
| 想在 24 GB 单卡 / 8 卡服务器上跑长上下文训练 | |
| 已经用 OpenMMLab 体系,熟悉 MMEngine 配置 | |
| 需要 SFT + DPO + 增量预训练这种"研究风"组合 | |
| ❌ 不适合 | 完全没用过 OpenMMLab,希望 GUI 一键启动 —— LLaMA-Factory 更合适 |
| 千亿模型预训练 | |
| 想要极简单机依赖、不要 MMEngine 等中间层 |
1.6 本书将怎么带你走完这趟旅程
- 第 2-3 章装好 XTuner,跑通官方 demo;
- 第 4 章讲清楚 MMEngine Runner 与 XTuner 之间的边界;
- 第 5-6 章配置文件结构、数据集格式;
- 第 7-8 章SFT / DPO / 增量预训练 + LoRA / QLoRA / 全参;
- 第 9 章DeepSpeed 与 sequence parallel 怎么配;
- 第 10 章多模态 InternVL 微调;
- 第 11-12 章踩坑、模型导出与 LMDeploy 部署;
- 第 13 章源码导读。