AlignReason 是一个小规模后训练实验:使用高质量显式推理数据对 4B instruct 模型做 LoRA SFT,并用 LiveBench 验证推理、数学、代码、科学等能力是否提升。
OpenThoughts 的高质量 reasoning trace 能否进一步提升 Qwen/Qwen3-4B-Instruct-2507 在 LiveBench 上的表现?
本项目的微调对象是:
Qwen/Qwen3-4B-Instruct-2507
对比对象包括:
- 微调前的
Qwen/Qwen3-4B-Instruct-2507 - 同规模 thinking 参考模型
Qwen/Qwen3-4B-Thinking-2507 - LiveBench 公榜上的大模型结果
这样可以把实验拆成两层:先看 LoRA 相对原始 instruct 模型是否带来增益,再看它在公榜大模型坐标系里的位置。
完整的渐进式实验计划见 docs/experiment-plan.md。
Phase 0: 全量 Baseline(当前)
↓
Phase 1: Imitation SFT(模仿,快速提升)
↓
Phase 2: Rejection + DCO(搜索,突破天花板)
↓
Phase 3 [备选]: Self-Play / GRPO(自进化)
| 类别 | 分数 | 状态 |
|---|---|---|
| instruction_following | 79.1 | ✅ |
| data_analysis | 51.8 | ✅ |
| reasoning | 51.4 | ✅ |
| math | 41.1 | ✅ |
| language | 28.7 | ✅ |
| coding | — | ⏭️ 需要 Docker |
| Average | 50.4 |
使用 2026-01-08 release 而非 2024-11-25(Qwen3 训练数据截止前),是为了避免时间穿越和数据泄露风险。
| 项目 | 选择 |
|---|---|
| 微调基座 | Qwen/Qwen3-4B-Instruct-2507 |
| 同规模参考 | Qwen/Qwen3-4B-Thinking-2507 |
| 数据集 | open-thoughts/OpenThoughts3-1.2M |
| 采样量 | smoke test 后扩展到 20,000 条 |
| 微调方式 | LoRA SFT |
| 目标硬件 | 单卡 RTX 3090 24GB |
| 评测 | LiveBench 2026-01-08 release,vLLM 本地 API |
小模型的推理能力是瓶颈。OpenThoughts 提供了 QwQ-32B 产出的高质量 reasoning traces,用 LoRA SFT → Rejection Sampling → DCO 逐步递进,看 4B 模型的推理分数能拉高多少。
alignreason/
README.md
requirements.txt
configs/
experiment.yaml
docs/
environment.md
livebench-baseline.md
scripts/
第一批实现目标:
- 采样 OpenThoughts 并保存为 JSONL;
- 用 100 条样本跑 LoRA smoke train;
- 用 20K 样本训练正式 adapter;
- 用同一套 LiveBench 流程评测 base 和 fine-tuned 模型。
当前 baseline 阶段还没有使用 AlignReason 自写脚本。评测直接使用 LiveBench 官方仓库中的 run_livebench.py 和 show_livebench_result.py,本仓库先记录流程和配置;后续再补数据采样、训练和结果汇总脚本。
创建 Python 环境:
cd /path/to/alignreason
uv venv .venv
source .venv/bin/activate
uv pip install -r requirements.txtQwen3 需要较新的 Transformers。模型卡提示 transformers<4.51.0 可能出现 KeyError: 'qwen3',因此本项目依赖中保留 transformers>=4.51.0。
更完整的环境说明见 docs/environment.md。
第一阶段 LiveBench baseline 评测流程见 docs/livebench-baseline.md。
正式训练前先跑小规模检查:
| 步骤 | 目的 |
|---|---|
| 100 条样本 | 验证数据转换和 chat template |
| 20-50 个训练 step | 验证 LoRA target modules 和显存占用 |
| 一次短生成 | 验证 adapter 可以加载并正常回答 |
| 一个很小的评测子集 | 验证进入 LiveBench 前的链路正常 |
只有 smoke test 通过后,再进入 20K 样本训练。
这些是第一版起点,不是最终结论:
model_name: Qwen/Qwen3-4B-Instruct-2507
dataset_name: open-thoughts/OpenThoughts3-1.2M
max_seq_length: 4096
sample_size: 20000
lora_rank: 16
lora_alpha: 32
lora_dropout: 0.05
target_modules:
- q_proj
- k_proj
- v_proj
- o_proj
learning_rate: 1.0e-5
num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 8
gradient_checkpointing: true在 RTX 3090 上,4096 是保守的第一版上下文长度。8192 应作为后续显存实验。
本地跑三个条件:
| 条件 | 模型 |
|---|---|
| Baseline | Qwen/Qwen3-4B-Instruct-2507 |
| Fine-tuned | Qwen/Qwen3-4B-Instruct-2507 + AlignReason LoRA |
| 同规模参考 | Qwen/Qwen3-4B-Thinking-2507 |
最主要的结果是:
fine-tuned instruct score - baseline instruct score
Thinking 模型是同规模参考,不是唯一外部目标。
同时把 fine-tuned 模型放到 LiveBench 公榜坐标中比较:
| 比较 | 目的 |
|---|---|
| Fine-tuned vs frontier models | 看和当前大闭源模型的绝对差距 |
| Fine-tuned vs large open models | 看 4B LoRA 是否接近更大开源模型 |
| Fine-tuned vs same-size Qwen thinking | 区分模型规模和 thinking mode 的影响 |
| Fine-tuned vs base instruct | 衡量本项目训练带来的真实增益 |
公榜比较必须记录 LiveBench snapshot 日期,因为公开排名会随时间变化。
实验应该能用可复现产物回答这些问题:
- LoRA adapter 是否提升了 instruct baseline 的 LiveBench 总分?
- 哪些类别提升,哪些类别下降?
- Adapter 是否缩小了和
Qwen3-4B-Thinking-2507的差距? - Adapter 在 LiveBench 公榜大模型结果中处于什么位置?
- 显式 reasoning SFT 是否带来输出变长、格式退化或指令跟随下降?
- Qwen3-4B-Instruct-2507: https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507
- Qwen3-4B-Thinking-2507: https://huggingface.co/Qwen/Qwen3-4B-Thinking-2507
- OpenThoughts3-1.2M: https://huggingface.co/datasets/open-thoughts/OpenThoughts3-1.2M
- LiveBench leaderboard: https://livebench.ai/
- LiveBench: https://github.com/LiveBench/LiveBench