系列收尾,把全流程命令收进一页,方便复制粘贴。把项目根目录记为 ~/projects/vlm-ocr-sft(请替换),以下命令默认已有 script/docker_run.sh 或等价封装。
这是「多模态微调实战」的第 10 篇,也是收官篇。前九篇讲原理与取舍,这一篇只留命令。
环境
1 2 3
| nvidia-smi bash script/docker_run.sh swift --version bash script/docker_run.sh python -c "import torch; print(torch.cuda.is_available())"
|
数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| python3 script/convert_lmdb_to_jsonl.py \ --project-root /workspace \ --train-samples 2000 \ --val-samples 200
python3 script/convert_lmdb_to_jsonl.py \ --project-root /workspace \ --train-samples 0 \ --val-samples 0
wc -l dataset/ocr_plate/train.jsonl dataset/ocr_plate/val.jsonl wc -l dataset/ocr_plate/train_full.jsonl dataset/ocr_plate/val_full.jsonl
|
演示集 LoRA
1
| bash script/train_lora.sh
|
关键参数备忘:
1 2 3 4 5 6 7
| lora_rank=8 lora_alpha=32 freeze_vit=true freeze_aligner=true batch=1 grad_accum=8 attn_impl=sdpa IMAGE_MAX_TOKEN_NUM=512 MAX_PIXELS=802816 epochs=3 lr=1e-4
|
评测
1 2 3 4
| bash script/run_eval.sh
bash script/eval_before_after.sh python3 script/eval_ocr_accuracy.py
|
全量训练
1 2 3 4 5 6 7 8 9
| bash script/train_lora_full_bg.sh
bash script/train_status.sh tail -f output/train/train_full.log
bash script/train_lora_full_bg.sh stop
|
续训(示意):
1 2
| swift sft ... \ --resume_from_checkpoint /workspace/output/.../checkpoint-XXXXX
|
合并 LoRA
1 2
| bash script/merge_lora.sh \ output/ocr_plate_lora_full/.../checkpoint-93000
|
等价:
1 2 3 4 5
| swift export \ --model /workspace/model/Qwen3-VL-4B-Instruct \ --adapters /workspace/output/.../checkpoint-93000 \ --merge_lora true \ --output_dir /workspace/output/ocr_plate_merged_checkpoint-93000
|
GGUF / 量化(示意)
1 2 3
| 1) HF merged → GGUF F16 2) GGUF F16 → INT4(如 Q4_K_M) 3) 同一验证集分别评测,记录掉点
|
验收关注:
- F16 相对 HF:任务指标是否基本持平;
- INT4 相对 F16:是否可接受(实践中约数个百分点,例如 ~6.5pt)。
目录速记
1 2 3 4 5 6 7
| model/ 基座 dataset/ocr_plate/ JSONL + images output/ocr_plate_lora/ 演示 LoRA output/ocr_plate_lora_full/ 全量 LoRA output/ocr_plate_merged_*/ 合并模型 output/eval_* 评测产物 blog/ 本系列文章
|
全系列回顾
一条完整链路,也是这个系列的主线:
1
| 环境 → 数据 → 小规模 LoRA → 评测 → 全量训练 → 选 checkpoint → merge → GGUF/INT4 → 验收
|
核心心法只有一句:先小后大,先评后扩,先可续训再长时间跑,先确认转换再谈量化。
多模态微调实战系列完。愿这套流程能帮你在自己的机器上把多模态微调跑通、评明白、部署稳。