报错是这么冒出来的。LLaMA-Factory 0.9.2 微调 Qwen2.5-7B-Instruct,train 的 yaml 里写 template: qwen,llamafactory-cli train 直接抛 ValueError: Template qwen not found,换 default 又提示 dataset 字段对不上。

中间走过弯路,把「自定义模型没在 template.py 里注册,按 model_type 找不到」当成主因,改完现象没变。

这类报错背后常见的原因有几处,逐个排除就行。新版把 qwen 模板拆成 qwen2 和 qwen2_vl,旧名字已从注册表移除。也可能是template 要写注册表里的 key,不是模型目录名。

不容易想到的是,yaml 层级写错,template 落在了顶层而不是模型配置下。

上来先把注册表里的模板名列出来

python -c "from llamafactory.data import TEMPLATES; print(sorted(TEMPLATES.keys()))"

然后把 yaml 里的 template 改成注册表里的名字

python -c "import yaml;p='train.yaml';d=yaml.safe_load(open(p));d['template']='qwen2';yaml.safe_dump(d,open(p,'w'),allow_unicode=True)"

接着用最小数据跑一次确认模板能加载

llamafactory-cli train examples/train_lora/qwen2_lora_sft.yaml

剩下的就是看日志里最终选中的模板名

Select-String -Path trainer.log -Pattern "template|renderer" | Select-Object -First 10

别只看报错消失,验证要多做一步。训练启动日志出现 using template qwen2,第一条样本的 input_ids 能解码成完整对话文本,loss 在前十步正常下降。

提醒一点。模板名跟着版本走,升级后先列一遍注册表再改 yaml,比对着报错猜名字快得多。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189