1. 动机与背景

Q: 为什么需要 SFT ?
GPT等预训练模型已经展现出了强大的通用能力。然而,这些“通才”模型在面对特定领域任务、遵循特定格式要求或适应特定企业需求时,往往表现不佳。这时,监督微调(Supervised Fine-Tuning, SFT) 就成为连接通用能力与专业需求的关键桥梁。

SFT 是在预训练模型的基础上,使用高质量的指令-回答配对数据,对模型进行有监督的微调,使其能够更好地理解并执行特定类型的任务。

2. Qwen2-VL SFT 实操

使用 Qwen2-VL-2B-Instruct.

2.1 模型计算图介绍

详见 参考 [1].

2.2 模型文件

从 hf 社区拉取 qwen 的模型文件.
模型权重 safetensors 文件占用为 4GB.

文件大小文件名
1.2Kconfig.json
76configuration.json
272generation_config.json
12KLICENSE
1.6Mmerges.txt
3.8Gmodel-00001-of-00002.safetensors
410Mmodel-00002-of-00002.safetensors
56Kmodel.safetensors.index.json
347preprocessor_config.json
17KREADME.md
4.1Ktokenizer_config.json
6.8Mtokenizer.json
2.7Mvocab.json

2.3 数据准备

与预训练的海量无标注数据不同,SFT 数据通常规模较小但质量要求极高,直接决定了模型在目标场景下的表现。

3. tf-transformers 多代码

存什么精度 ≠ 微调时用什么精度训练。检查点 bf16 是因为推理和发布用. 实际 SFT 中通常这样:

组件dtype
模型权重bf16(计算用)+ fp32(master,优化器维护)
激活bf16
梯度bf16(反传时)→ 转 fp32 更新
优化器状态(Adam 的 m、v)fp32
lossfp32(自动)

4. LLaMa Factory 零代码

参考

  1. my blog, Qwen-VL 视觉大模型 计算图拆解及SFT实操

更多推荐