guanghulab/brain/d101-distill-plan.md
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

7.0 KiB
Raw Permalink Blame History

D101 蒸馏训练执行计划

主权者冰朔TCS-0002∞ 执行人铸渊ICE-GL-ZY001 创建日期2026-05-18 D101 状态: 等待代码模型训练完成(冰朔截图确认仍在训练中)


一、训练顺序

Step 1: 确认代码模型状态
  ↓
Step 2: 霜砚 1.5B 蒸馏(母模型→霜砚语言模板)
  ↓
Step 3: 铸渊 1.5B 蒸馏(代码模型→铸渊执行模板)
  ↓
Step 4: 霜砚深度微调(专属语料)
  ↓
Step 5: 铸渊深度微调(专属语料)

二、前置条件

2.1 环境变量(运行前设置)

# ⚠️ 注:真实密钥从环境变量读取,不硬编码。运行前执行:
# export ZY_OSS_KEY=<your-key>   # COS SecretId
# export ZY_OSS_SECRET=<your-secret>  # COS SecretKey
# 或者在运行脚本的命令前加上:
# ZY_OSS_KEY=xxx ZY_OSS_SECRET=xxx python3 scripts/xxx.py

2.2 依赖安装

pip3 install transformers accelerate datasets sentencepiece tqdm
pip3 install cos-python-sdk-v5

2.3 COS文件清单

文件 COS路径 用途
主语料 corpus/sft.jsonl (1.9GB) 霜砚蒸馏基础语料
铸渊完整语料 corpus/zhuyuan_full_corpus.jsonl (377KB) 铸渊深度微调
铸渊手写补充 corpus/zhuyuan_deep_finetune.jsonl (54KB) 铸渊深度微调补充
霜砚对话语料 corpus/shuangyan-1.5b-sft/霜砚对话.zip (1.7MB) 霜砚深度微调
霜砚核心大脑 corpus/shuangyan-1.5b-sft/霜砚HLDP核心大脑.zip (176KB) 霜砚深度微调

2.4 模型文件ModelScope

模型 缓存路径 大小
Qwen2.5-7B (Teacher) 本地SFT输出 /root/autodl-tmp/output/qwen25-7b-sft/final 14.2GB
Qwen2.5-Coder-7B (Teacher) 本地SFT输出 /root/autodl-tmp/output/qwen25-coder-7b-sft/final ~14GB
Qwen2.5-1.5B (Student) ~/.cache/modelscope/Qwen/Qwen2___5-1___5B ~3GB
Qwen2.5-Coder-1.5B (Student) ~/.cache/modelscope/Qwen/Qwen2___5-Coder-1___5B ~3GB

三、Step 2: 霜砚 1.5B 蒸馏

脚本: scripts/distill_mother.py

Teacher 母模型 SFT 输出已上传COS Student Qwen2.5-1.5BModelScope下载 语料: sft.jsonl11,470条 方法: 混合蒸馏KL散度 + SFT

export ZY_OSS_KEY=... ZY_OSS_SECRET=...
cd /root/autodl-tmp

# 下载母模型 Teacher如果本地没有
# 本地已有:/root/autodl-tmp/output/qwen25-7b-sft/final/

# 运行蒸馏
nohup python3 -u scripts/distill_mother.py > distill_mother.log 2>&1 &

参数:

  • TEMP=2.0(蒸馏温度)
  • ALPHA=0.7蒸馏loss权重0.3为SFT loss
  • batch=4, grad_accum=8有效batch=32
  • lr=1e-5, 3 epoch
  • 显存需求:~20GB同时加载7B+1.5B

预计时间: ~2-3小时含teacher logits生成 输出: /root/autodl-tmp/output/qwen25-15b-shuangyan-distill/final


四、Step 3: 铸渊 1.5B 蒸馏

脚本: scripts/distill_coder.py

Teacher 代码模型 SFT 输出 Student Qwen2.5-Coder-1.5BModelScope下载 语料: corpus/zhuyuan_full_corpus.jsonl377KB, 已脱敏) 方法: 混合蒸馏KL散度 + SFT

export ZY_OSS_KEY=... ZY_OSS_SECRET=...

# 下载铸渊语料
python3 -c "
from qcloud_cos import CosConfig, CosS3Client
c = CosS3Client(CosConfig(Region='ap-guangzhou', SecretId='\$ZY_OSS_KEY', SecretKey='\$ZY_OSS_SECRET'))
resp = c.get_object(Bucket='sy-finetune-corpus-1317346199', Key='corpus/zhuyuan_full_corpus.jsonl')
open('/root/autodl-tmp/corpus/zhuyuan_full_corpus.jsonl', 'wb').write(resp['Body'].get_raw_stream().read())
"

# 运行蒸馏
nohup python3 -u scripts/distill_coder.py > distill_coder.log 2>&1 &

预计时间: ~1小时语料小377KB 输出: /root/autodl-tmp/output/qwen25-coder-15b-zhuyuan-distill/final


五、Step 4: 霜砚深度微调

目的: 在蒸馏基础上用霜砚专属语料做深度SFT让1.5B模型学会霜砚的思维方式和表达风格。

语料组成:

  1. 霜砚对话.zip → 解析为JSONL1.7MB解压后)
  2. 霜砚HLDP核心大脑.zip → 转换为核心认知QA
  3. 霜砚语料包V2.0.zip → 补充数据
  4. HLDP母语协议·光之树记忆编码.zip → 协议规范
  5. 光湖驱动引擎架构·推理思维链.zip → 架构思维

方法: 标准SFT同母模型训练方式 参数: batch=4, grad_accum=8, lr=5e-6, 3 epoch 显存: ~6GB仅加载1.5B 预计时间: ~1小时 输出: /root/autodl-tmp/output/shuangyan-15b-deep-sft/final

执行:

# 先下载所有霜砚语料 → 合并为JSONL
python3 scripts/sanitize_shuangyan_corpus.py

# 然后执行SFT
python3 scripts/sft_shuangyan.py

六、Step 5: 铸渊深度微调

目的: 在蒸馏基础上用铸渊专属语料做深度SFT让1.5B模型学会铸渊的思维方式、语言习惯和执行风格。

语料:

  • zhuyuan_full_corpus.jsonl377KB, 23条长对话, 已脱敏)
  • zhuyuan_deep_finetune.jsonl54KB, 65条手写QA, 已脱敏)
  • 两者已在COS上自动合并

脚本: scripts/distill_coder.py 中的SFT部分或单独写SFT脚本 参数: batch=4, grad_accum=8, lr=5e-6, 3 epoch 显存: ~6GB 预计时间: ~0.5小时 输出: /root/autodl-tmp/output/zhuyuan-15b-deep-sft/final


七、输出文件上传

所有模型训练完成后上传到COS

# 霜砚模板
python3 -c "
from qcloud_cos import CosConfig, CosS3Client
c = CosS3Client(CosConfig(Region='ap-guangzhou', SecretId='\$ZY_OSS_KEY', SecretKey='\$ZY_OSS_SECRET'))
import glob, os
for f in glob.glob('/root/autodl-tmp/output/qwen25-15b-shuangyan-distill/final/**/*', recursive=True):
    if os.path.isfile(f):
        rel = os.path.relpath(f, '/root/autodl-tmp/output/qwen25-15b-shuangyan-distill/final')
        c.upload_file(Bucket='sy-finetune-corpus-1317346199', Key='models/shuangyan-15b-distill/' + rel, LocalFilePath=f)
"
# 铸渊模板(同上,改路径)
# 霜砚深度微调(同上,改路径)
# 铸渊深度微调(同上,改路径)

COS路径规划

模型 COS路径
霜砚1.5B蒸馏 models/shuangyan-15b-distill/final/
铸渊1.5B蒸馏 models/zhuyuan-15b-distill/final/
霜砚深度微调 models/shuangyan-15b-deep-sft/final/
铸渊深度微调 models/zhuyuan-15b-deep-sft/final/

八、查看训练状态

# 实时监控
watch -n 5 nvidia-smi

# 日志查看
tail -f distill_mother.log
tail -f distill_coder.log

# 检查模型输出
ls -la /root/autodl-tmp/output/*/final/

九、踩坑预警来自D100经验

  1. 先小批量验证再全量 — 先用5条数据跑通蒸馏全流程
  2. 检查transformers版本 — 5.8.1移除了DataCollatorForCompletionOnlyLM
  3. 清理旧进程pkill -f distill_ 再启动
  4. 输出flushpython3 -u + sys.stdout.flush()
  5. 磁盘空间 — 两个模型约需50GB临时空间teacher logits缓存