训练配置#
在之前的教程中,我们通过命令行用最简单的方式启动了一次微调训练。不过在实际使用过程中,我们往往需要对训练过程进行更精细的控制,比如设置学习率、并行策略、序列长度等参数。这时候,用一个配置文件来管理实验配置会更方便哦!看完这个教程,相信你会有所收获。
命令行启动#
在正式介绍配置文件之前,咱们先来回顾一下之前的命令行入口:
python xtuner/v1/train/cli/sft.py --help
提示
如果觉得训练入口不合心意?也可以自己动手 DIY 哦。
参数有点多对吧?让我们来梳理一下。目前训练入口支持两种启动方式:传入配置文件或者直接传命令行参数,这两种方式是互斥的。也就是说,如果你用了配置文件,就不能再用命令行参数啦,反之亦然。简单总结一下:
命令行传参
😊 简单快捷,适合需求简单的快速实验。比如只是换个数据集、模型路径、并行策略或训练步数啥的
😅 扩展性有限,用不了自定义模块,配置粒度比较粗
配置文件
😊 配置粒度超细,扩展性强,支持自定义模块,版本管理也很方便
😅 得自己写配置文件,有点小门槛
备注
其实命令行传参功能也很丰富哒,建议看看 --help 输出,说不定有惊喜。
看到这里,相信你已经心里有数了,接下来咱们重点聊聊配置文件怎么用。
配置文件#
XTuner 采用 Python 风格的配置文件,让你可以充分利用 Python 的语法特性来导入核心组件,在支持语法提示的编辑器中享受更流畅的配置体验。
小技巧
如果你已经看过trainer教程,可以直接跳转到构建 TrainerConfig部分哦。
简单来说,XTuner 的训练配置就是围绕 Trainer 展开的。写一个训练配置,本质上就是构建一个 TrainerConfig 实例。接下来咱们一步步搞定它!
构建模型配置#
以 XTuner 内置的 Qwen3 8B 为例,获取模型配置就是这么简单:
from xtuner.v1.model import Qwen3Dense8BConfig
model_cfg = Qwen3Dense8BConfig()
构建数据配置#
数据集格式参考文档
小技巧
每次启动数据加载太慢?不如设置一下 cache_dir?
# 数据集配置
dataset_cfg = []
# 数据加载器配置
dataloader_cfg =
构建优化器和学习率调度器#
from xtuner.v1.config import LRConfig, AdamWConfig
# 优化器配置
optim_cfg = AdamWConfig(lr=6e-05)
# 学习率调度器配置
lr_cfg = LRConfig(lr_type="cosine", lr_min=1e-6)
构建 TrainerConfig#
终于要整合所有配置啦!看这里:
from xtuner.v1.train import TrainerConfig
# 基础路径配置
load_from = "<模型路径>" # 微调模式下必须指定,否则会从零开始训练
tokenizer_path = "<tokenizer路径,通常和模型路径一致>"
# 整合所有配置
trainer = TrainerConfig(
model_cfg=model_cfg,
tokenizer_path=tokenizer_path,
load_from=load_from,
optim_cfg=optim_cfg,
dataloader_cfg=dataloader_cfg,
lr_cfg=lr_cfg,
work_dir="<目标工作目录>",
)
启动训练#
配置文件搞定后,启动训练就是小菜一碟啦!只需要把配置文件路径传给训练入口就行:
python xtuner/v1/train/cli/sft.py --config <配置文件路径>