资讯详情

08 · MCU 小模型全量预训练实战:从训练崩溃到 ppl 8.73

📅 2026/10/5 7:01:15 | 华诺云谱 👁 阅读
08 · MCU 小模型全量预训练实战:从训练崩溃到 ppl 8.73
English version:en/08-classic-full-pretraining.md本篇对应源码tools/legacy/full_finetune.py·tools/mistral_ple.py目标讲清楚「前几轮训练为什么失败」以及「阶段 0 全量预训练如何突破」。这是整个训练流程的总闸——不通过后面 MoE 全部免谈。一、前几轮失败不是损失函数错是 setup 错一开始的思路是「复用 teacher 的 attention 只训 FFN」结果两轮全崩实验方案validation ppl表面归因复用 attention 从零训 FFNKD 蒸馏α0.977.38损失函数固定复用 attention 从零训 FFN纯 CEα01711.07损失硬切真实根因修正后两个实验都在冻结 attention、只训 FFN。10M 参数的 FFN 在没有 attention 协同更新的情况下只能二选一KD 路线FFN 学不到东西 → 能力不足 → ppl 77几乎等于 teacher 的 21.53没进步纯 CE 路线FFN 只能死记硬背训练数据 → 过拟合 → ppl 1711比 KD 还差。教训CE/KD 之争是伪问题真正的坑是「冻结 attention」。经典范式要求全量训练——所有参数一起更新attention 与 FFN 协同。二、阶段 0 正确做法teacher 初始化 全量训练 纯 CE# full_finetune.py 核心modelMistralForCausalLM.from_pretrained(teacher)# teacher 权重初始化warm startmodel.train()# 不冻结任何参数optAdamW(model.parameters(),lr3e-4,betas(0.9,0.95),weight_decay0.1)lossF.cross_entropy(logits,y)# 纯 CE无 KD 软标签四个要点teacher 初始化替代 KD 蒸馏直接加载 teacher 权重起步复用其知识不需要软标签损失。全量可训练attention/embed/norm/lm_head/FFN 全部更新。纯 CE不做 λ 过渡、不做 KD就是最经典的交叉熵。cosine LR warmup标准调度。三、硬数据ppl 一路下降step 0 ce3.23 step 5000 validation ppl 10.35 step 10000 validation ppl 9.66 step 20000 validation ppl 8.73最终teacher 基准 ppl 21.53全量训练后压到8.73证明「teacher 初始化 全量训练 纯 CE」是正确主干。四、关键坑进程假死与进度丢失阶段 0 首次跑时卡在 step 14500 无输出排查发现两个问题坑 1StopIteration 死循环train_full.txt有 4.68 亿 token但训练配置max_steps30000 × batch64 × block256需要 4.9 亿 token。数据耗尽后next(it)抛StopIteration旧代码反复重读 1.8GB 文件陷入死循环假死GPU 满载但无进展。修复单 epoch 耗尽直接退出。exceptStopIteration:print(fdata exhausted at step{step}, stopping (single-epoch).,flushTrue)stepargs.max_stepsbreak坑 2无 checkpoint进度全丢原脚本只在训练循环结束后才save_pretrained。进程一旦被外部终止OOM/断连之前跑的所有步全部白费。修复每 N 步周期保存。ifstep%args.ckpt_every0:model.save_pretrained(f{args.out_dir}/ckpt_step{step})五、阶段 0 结论项值正确范式teacher 初始化 全量训练 纯 CE AdamW cosine结果ppl 21.53 → 8.73产出models\full_ft_probe稠密 teacher供后续 MoE 训练用关键教训冻结 attention 是 setup 错误进程要单 epoch 退出 周期 checkpoint阶段 0 通过后full_ft_probe就是后续所有技术点的「稠密 teacher」结构蒸馏技术点 1用它做 dense 旁路全量 MoE技术点 1-b用它初始化 attention/embed。对应源码文件关键符号 / 位置支撑本文哪部分tools/legacy/full_finetune.pyMistralForCausalLM、参数--teacher、--out_dir二、teacher 初始化 全量训练配方tools/legacy/full_finetune.pyStopIteration、参数--ckpt_every四、进程假死修复与周期 checkpointtools/legacy/full_finetune.pyval_ppl、AdamW三、ppl 下降评估与优化器tools/mistral_ple.pyMistralPLE、MistralPLEConfig稠密 teacher 骨架定义《Kestrel-MCU 手记》· 全系列 28 篇在 ESP32-P4 上从零训练并部署 32M~64M 参数 MoE 大模型5.7~6.4 tok/s源码、权重、训练脚本与全部文章开源可复现。仓库https://gitee.com/pei-xiaoguang/kestrel-llm-mcu · 觉得有用欢迎 Star
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑