76 lines
1.9 KiB
Markdown
76 lines
1.9 KiB
Markdown
# SFT Full-Log Qwen3.5-2B V2 Server Bundle
|
||
|
||
这版不是重复上一版 SFT。
|
||
|
||
核心修补点:
|
||
- 不再依赖 strong/weak 回答配对,SFT 直接用 `prompt -> chosen`
|
||
- 把弱 `rule chosen` 统一重写成规范 JSON,避免短模板把模型训偏
|
||
- 默认训练集改成 `focus split`,对 `SQ3/SQ4` 和高难 `TP/FP` 做适度加权
|
||
|
||
## 数据文件
|
||
|
||
- `data/train_sft_all.jsonl`
|
||
- 2500 条,全量标准化训练集
|
||
- `data/train_sft_focus.jsonl`
|
||
- v2 默认训练集
|
||
- 在全量基础上对 `SQ3/SQ4 + difficulty>=3 + TP rule cases` 做重复采样
|
||
- `data/dev_sft.jsonl`
|
||
- 300 条标准化 dev 集
|
||
|
||
## 为什么这次不需要 strong/weak
|
||
|
||
不需要。
|
||
|
||
那套是 DPO 用的。SFT 只关心一件事:
|
||
- 给定 prompt,模型应该学会输出什么样的正确答案
|
||
|
||
所以 v2 直接做:
|
||
- 统一 target answer 结构
|
||
- 修弱监督文本
|
||
- 重排训练分布
|
||
|
||
## 默认模型
|
||
|
||
```bash
|
||
Qwen/Qwen3.5-2B
|
||
```
|
||
|
||
## 默认训练命令
|
||
|
||
```bash
|
||
bash run_train.sh --gpu-count 2 --model-name Qwen/Qwen3.5-2B
|
||
```
|
||
|
||
默认用的是:
|
||
|
||
- `data/train_sft_focus.jsonl`
|
||
- `data/dev_sft.jsonl`
|
||
|
||
## 可选:如果你想拿全量不加权版试验
|
||
|
||
把 `run_train.sh` 里的 `TRAIN_FILE` 改成:
|
||
|
||
```bash
|
||
data/train_sft_all.jsonl
|
||
```
|
||
|
||
## 训练前后对比
|
||
|
||
训练前 benchmark:
|
||
|
||
```powershell
|
||
python eval_api.py --model Qwen/Qwen3.5-2B --api-base http://localhost:8000/v1 --api-key not-needed --temperature 0 --disable-thinking-only --output-dir results/qwen35_2b_before_sft_v2
|
||
```
|
||
|
||
训练后 benchmark:
|
||
|
||
```powershell
|
||
python eval_api.py --model qwen35_2b_sft_v2 --api-base http://localhost:8001/v1 --api-key not-needed --temperature 0 --disable-thinking-only --output-dir results/qwen35_2b_after_sft_v2
|
||
```
|
||
|
||
对比:
|
||
|
||
```powershell
|
||
python SFT_FULLLOG_QWEN2B_V2_SERVER_BUNDLE/scripts/compare_eval_results.py --before results/qwen35_2b_before_sft_v2 --after results/qwen35_2b_after_sft_v2
|
||
```
|