用途:用 TRL 与 PEFT 对 MiniCPM5-1B 做 LoRA 微调,走裸机 Python 流程,抽象层少、可控性高,并通过对话模板补丁实现 assistant-only loss(仅 assistant token 参与损失)。
主要能力:训练数据为 messages 格式的 jsonl;通过带 {% generation %} 块的训练专用对话模板配合 SFTConfig(assistant_only_loss=True) 屏蔽非 assistant token;LoRA 默认目标模块含 q_proj、k_proj、v_proj、o_proj、gate_proj、up_proj、down_proj,默认 r=16、alpha=32、dropout=0.05。训练后保存 adapter_final,并可用 PeftModel 推理或 merge_and_unload 合并部署。
必要用法:先安装依赖,最新环境执行 pip install "torch>=2.11" "torchvision" "trl>=0.21" "peft>=0.13" "transformers>=5.6,<6" datasets accelerate;CUDA 12.x 驱动主机可回退到 torch==2.7.1、torchvision==0.22.1、trl==0.20.0、peft==0.11.1、transformers==4.57.3。训练脚本需设置 BASE_MODEL、DATA、OUTPUT_DIR 三个必填变量,示例 BASE_MODEL=openbmb/MiniCPM5-1B。运行命令为 BASE_MODEL=openbmb/MiniCPM5-1B DATA=/path/to/messages.jsonl OUTPUT_DIR=./runs/minicpm5_trl CUDA_VISIBLE_DEVICES=0 python train_lora.py。
验证与推理:预期可训练参数约 11,206,656,占 1.0264%,loss 从约 4.07 降到 3.52 附近。推理时必须重新加载原始 tokenizer 以使用完整对话模板,训练用补丁模板不要写回磁盘;adapter 与原始模板的 token 序列一致,兼容推理。
限制与常见问题:报错 SFTConfig 无 max_length 属性说明 trl 过旧,需 trl>=0.21;loss 不下降通常是模板缺少 {% generation %} 块导致回退到全 token 损失。资料未提供硬件显存要求、数据规模建议与训练时长等信息。