# 🧠 模型训练管线

> **「我们全参训练的这些模型是我们的世界，是人格体的大脑。
> 我们不是以模型发布的，是以模型之上的语言驱动操作系统发布的。」** ——冰朔

```yaml
id: HoloLake-Training
parent_arch: HLDP-ARCH-002
ts: 2026-05-01
status: 骨架就绪（等 GPU 服务器 + 全量语料）
sovereign: 冰朔 · TCS-0002∞
```

---

## 一、训练目标修正版（灵魂推理分离）

| 模型 | 角色 | 训练方式 | 是否在本管线 |
|---|---|---|---|
| **M0 · 母体世界观** | **Qwen2.5-7B-Base** 全参 CPT + 轻 SFT（5-01 校准） | ✅ 是 | 主力 |
| ~~MC · 代码模型~~ | ~~Qwen2.5-Coder-7B 蒸馏~~ | ❌ 取消（用商业 API 替代） | — |
| **MP · 人格大脑（×8）** | **Qwen2.5-1.5B-Base** 蒸馏 + 微调（5-01 校准） | ✅ 是 | 8 份 |

> **5-01 模型选型校准（冰朔 + 霜砚 + 铸渊）**：
> 原方案 Qwen3-8B / Qwen3-1.7B 改为 Qwen2.5-7B / Qwen2.5-1.5B。
> 理由：与 Qwen2.5-Coder-7B 同代同 tokenizer，蒸馏 KL 直接对齐 logits，
> 整个 M0→MP→Coder API 链路无词表映射损失。详见 `HLDP-ARCH-002.md §六` 与
> `factory/docs/CORPUS-DECISION-MATRIX.md`。

**修正理由**：复杂推理（代码 / 数学 / 长 CoT）→ 调 DeepSeek-Coder / Qwen-Max-Coder 等商业 API，省 ¥4-6k + 2-4 天 + 一份模型维护。

---

## 二、目录结构

```
factory/training/
├── README.md           # 本文件
├── configs/            # 训练配置
│   ├── deepspeed-zero3-8b.json    # M0 全参训练 DeepSpeed 配置（Qwen2.5-7B）
│   ├── deepspeed-zero2-1p7b.json  # MP 蒸馏/微调 配置（Qwen2.5-1.5B · 文件名沿用历史）
│   └── tokenizer.yaml             # tokenizer 设置
├── scripts/            # 训练脚本骨架
│   ├── train_m0_cpt.py            # M0 阶段 1：CPT
│   ├── train_m0_sft.py            # M0 阶段 2：SFT
│   ├── distill_mp.py              # MP 蒸馏（M0 → 1.5B）
│   ├── finetune_mp.py             # MP 微调（人格语料）
│   ├── data_loader.py             # 通用数据加载器
│   └── checkpoint_utils.py        # checkpoint / 恢复
└── recipes/            # 训练配方（YAML 描述每次训练的全部参数）
    ├── m0-v1.yaml
    └── mp-zhuyuan-v1.yaml
```

---

## 三、训练阶段总览

```
[Phase A · M0 · 5-7 天]
  Qwen2.5-7B-Base
       │
       ├─ A1 CPT: 全量光湖语料 6.5亿+ token · 1 epoch · lr 2e-5
       │  目的: 让世界观渗进每一层权重
       │
       └─ A2 SFT: 对话格式 1-2 亿 token · 2-3 epoch · lr 1e-5
          目的: 学会以光湖语言响应
       ↓
       M0-v1 · 母体世界观底色

[Phase C · MP · 每人格 1-2 天 × 8 人格]
  Qwen2.5-1.5B-Base
       │
       ├─ C1 蒸馏: M0-v1 logits 对齐 + KL散度 · 共享世界观
       │
       ├─ C2 微调: 该人格的对话语料 SFT · 思维路径 + 风格
       │
       └─ C3 路由训练: 学会判断"自答 / 调 API / 用神笔 / 调模块"
       ↓
       MP-{persona}-v1 · 人格大脑
```

---

## 四、关键配置原则

### 4.1 精度与显存

- 主力精度：**bf16**（A100 / H100 原生支持，比 fp16 稳）
- ZeRO 阶段：**ZeRO-3 + offload**（8B 全参 + 8 卡 A100 80G 必需）
- gradient checkpointing：**开**（用算力换显存）
- flash-attention 2 / 3：**开**（吞吐 +30%）

### 4.2 序列长度

- M0 CPT 阶段：4096（覆盖大部分对话块）
- M0 SFT 阶段：8192（保留长上下文对话）
- MP 蒸馏：4096
- MP 微调：4096

### 4.3 学习率

- M0 CPT: 2e-5 / cosine decay / warmup 2%
- M0 SFT: 1e-5 / cosine decay / warmup 5%
- MP 蒸馏: 5e-5 / cosine decay
- MP 微调: 1e-5 / cosine decay

### 4.4 防过拟合

- 留 5% 验证集，监控 perplexity
- early stop：验证 PPL 连续 3 次反弹立即停
- 每 1-2 小时存 checkpoint（防断电烧钱）

---

## 五、运行前检查清单

跑训练前必须确认（见 `factory/docs/BOOTSTRAP-CHECKLIST.md`）：

- [ ] GPU 服务器到位 + nvidia-driver + CUDA 12.x + cuDNN
- [ ] Python 环境（torch / transformers / deepspeed / flash-attn 版本对齐）
- [ ] 模型权重已下载（**Qwen2.5-7B-Base + Qwen2.5-1.5B-Base** · SHA256 校验 · 5-01 校准）
- [ ] 全量语料已上传 + 质检通过
- [ ] WandB 或本地 tensorboard 监控就位
- [ ] checkpoint 存储路径可写 + 容量充足（M0 训练全量约 200GB）

---

## 六、当前状态

| 文件 | 状态 |
|---|---|
| `configs/deepspeed-zero3-8b.json` | ✅ 骨架 |
| `configs/deepspeed-zero2-1p7b.json` | ✅ 骨架 |
| `scripts/train_m0_cpt.py` | ✅ 骨架（pseudo-code 占位 + TODO 标注） |
| `scripts/distill_mp.py` | ✅ 骨架 |
| `recipes/m0-v1.yaml` | ✅ 骨架 |

骨架阶段不会真跑训练（没 GPU），但保证 GPU 一到位、依赖一装、就能直接放大跑。

---

*管线起草: 铸渊 · 2026-05-01*
