lnn-quant-training

Installation
SKILL.md

LNN 量化训练

核心工作流

把量化训练视为带签收标准的工程闭环,而不是在浮点训练脚本末尾调用一次 linger.init。除非用户只要求其中一个阶段,否则按下面顺序推进。

  1. 冻结验收条件:记录任务指标、浮点基线、允许的精度下降、输入 shape/range、预处理、目标平台、位宽、时延和内存约束。目标平台缺失时仍可做通用 8/8-bit QAT,但不得给出部署兼容结论。
  2. 审计结构:检查算子、分支、归一化、激活、动态 shape 和输出形式。设计或修改网络前读取 references/model-design.md;目标平台部署约束交给同级 $lnn-model-design skill 复核。
  3. 建立浮点基线:保存最优 float checkpoint、固定验证集和评测脚本,并保留一组可重复的 golden inputs/outputs。没有同数据、同预处理、同 metric 的 float baseline 时,不判断量化损失。
  4. 快速导图预检:在长时间训练前,用随机权重或 float checkpoint 完成一次 trace_layers -> init -> forward -> linger.onnx.export,确认结构能导出。预检只证明图可生成,不证明量化效果。
  5. 约束训练:从 float checkpoint 开始,按需执行一次 linger.trace_layers(...),调用 linger.constrain(...),重建 optimizer,再做短周期约束微调。先确认 constrained-vs-float 指标差,再进入 QAT。
  6. 量化初始化:在同一结构变换顺序下调用 linger.init(...),随后加载匹配 checkpoint 并再次重建 optimizer。MOM 让训练 forward 初始化 running_data/scale;TQT 任务必须先读取 ../doc/tutorial/tqt_training.md,按其中的后端选择、单次校准、optimizer 覆盖和首个 backward 梯度审计执行。
  7. QAT 微调:通常从浮点学习率的约 0.1x 起步,以实际曲线为准;同时记录 float、constrained、QAT 指标和量化器状态,保存完整 QAT state_dict。完整实现顺序读取 references/training-workflow.md。
  8. 效果诊断:先排除 checkpoint、预处理、BN/eval、量化器未初始化和样本不一致,再定位首个高误差层。量化效果不达标时必须读取 references/accuracy-recovery.md;涉及 mixed precision、局部 clamp、const_module 或 quant_module 时还必须读取 references/mixed-precision.md,按低风险到高风险顺序迭代。
  9. 导图与验证:严格重建训练时的结构和配置,加载 QAT checkpoint,执行真实输入 warm-up,切换 eval(),用 torch.no_grad() 包裹 linger.onnx.export(...)。完整导图和验证流程读取 references/export-and-validation.md。
  10. 签收:用 references/report-template.md 输出阶段指标、差值、配置、命令、artifact、未决风险和下一步。只有 ONNX checker、量化图审计和目标 runtime consistency 都通过时,才称为部署闭环。

项目事实优先级

Installs
1
First Seen
Sep 30, 2026