mcgatom/codex-cannbot/model-infer-quantization
Claude Code and agent skill by mcgatom/codex-cannbot
- community
Checking that the SKILL.md file is still in the repository.
infer 仓模型量化适配改造技能。分析并接入既有 compressed-tensors 量化方案和权重,完成量化产物契约检查、结构参考匹配、量化 runtime 映射、权重加载、post-load 处理、融合算子量化冲突回退、真实生效验证和收益评估。触发:模型优化流程中的量化初评估、量化改造任务、compressed-tensors 量化产物接入时使用;不重新设计上游量化算法,不实现 compressed-tensors 之外的量化路线。
Install
npx vskill@latest install mcgatom/codex-cannbot/model-infer-quantizationSKILL.md
模型量化适配改造
分析 infer 模型代码与既有 compressed-tensors 量化产物,按模型结构匹配仓库参考经验,完成量化接入、验证和收益评估。若当前任务只要求初评估,则只输出量化适配方案,不修改代码;若任务要求量化改造,则在契约和用户决策满足后实施代码改造。
适用范围
compressed-tensors量化方案和权重接入quantization_config/compression_config解析和透传Linear/ReplicatedLinear/RowParallelLinear/MoEGMM/KVCache等 infer 运行对象映射- 量化权重加载、scale dtype 处理、转置、NZ/base format、smooth scale、专家权重处理
- Dense 模型的
gate/up、q/k/vpost-load 运行时融合恢复 - MoE / MLA / Indexer / KVCache 量化契约适配
- 融合算子不支持量化时的非融合路径回退和需求记录
- 量化真实生效验证、显存/Prefill/Decode/部署卡数收益评估
不做:
- 不重新跑上游量化实验
- 不修改量化方案来绕过 infer 侧报错
- 不实现 GPTQ / AWQ / 外部 patch / service 部署等非主线路线
- 不替代模型迁移、并行化、KVCache/FA、融合算子或图模式 Skill
工作流程
禁止:跳过契约检查直接改代码;跳过结构拆解按模型名套参考;量化报错后修改 targets / ignore / 张量语义再宣称成功。
参考文档使用矩阵
| 步骤 | 主要读取 | 用途 | |
|---|---|---|---|
| 第二步 契约检查 | quantization-contract.md §1-§4 | 产物字段 / 张量语义 / 运行对象映射 | |
| 第三步 结构拆解 | quantization-contract.md §4-§6 + quantization-structure-cards.md 选定结构卡 | 映射量化对象到 runtime;识别结构指纹 | |
| 第四步 匹配参考与分级 | quantization-structure-cards.md 结构卡 A/B/C + quantization-fusion-and-benefit.md §A、§B.3 | 命中改造要点和模型经验;融合兼容性;主线路径 A1-A4 | |
| 第六步 实施改造 | quantization-structure-cards.md 命中卡的「改造要点 / 已确认模型经验 / post-load 例外」 | 模型 forward / post-load / scale 适配 | |
| 第七步 验证收益 | quantization-fusion-and-benefit.md §B.1 五维口径 | 收益判定证据和分级 | |
| 第八步 经验沉淀 | quantization-structure-cards.md 经验沉淀模板 | 按结构卡追加新经验 |
回退规则、验证要求、后验决策三段为本 SKILL 唯一真相源(第六步 6.5 / 第七步 / 第八步 8.2),ref 不复述。
第一步:确认输入和执行模式
1.1 输入
| 输入 | 适用模式 | 说明 | |
|---|---|---|---|
model_dir | 初评估 / 改造 / 验证 | infer 模型工作目录 | |
quant_export_dir | 初评估 / 改造 / 验证 | 量化权重和量化方案目录 | |
mode | 初评估 / 改造 / 验证 | 执行模式 | |
baseline | 改造 / 验证 | 非量化部署基线;改造任务还应参考量化前最新基线 | |
user_decision | 改造 | 用户明确继续量化的决策 |
1.2 模式分流
| 模式 | 允许动作 | 禁止动作 | |
|---|---|---|---|
初评估 | 分析量化产物、结构、显存、接入分级,写入量化初评估报告 | 修改模型代码 | |
改造 | 按已确认量化方案接入 runtime、加载权重、处理 post-load、跑量化基线 | 修改量化方案或权重语义 | |
验证 | 验证量化真实生效、输出可用性、性能和显存收益 | 自行调试或改代码 |
1.3 输入缺失处理
- 缺少
model_dir:转model-infer-migrator或要求补充模型目录。 - 缺少
quant_export_dir:停止量化路径,要求补齐量化产物目录。 - 改造或验证缺少非量化基线:先补部署基线,不进入收益验证。
- 改造模式缺少用户决策:只做分析,不改代码。
完成标志
- [ ] 执行模式已明确
- [ ] 量化产物目录已确认
- [ ] 若为改造或验证任务,至少有一份可复现基线
- [ ] 改造任务已有用户继续量化决策
第二步:检查量化产物契约
读取:
{quant_export_dir}/config.json、model.safetensors.index.json、deploy_quantization.mdreferences/quantization-contract.md§1-§4(最小交付物 / config 字段 / 张量语义 / 运行对象映射)
2.1 契约检查项
config.json包含quantization_config或等价compression_configquant_method为compressed-tensorsconfig_groups能描述权重量化和激活量化targets/ignore能区分量化模块和浮点回退模块model.safetensors.index.json可索引量化张量和保留张量- 量化张量语义明确,例如
qweight、weight_scale、weight_bias、smooth scale、zero point - 量化张量名可映射到 infer 模型参数前缀
deploy_quantization.md写清量化对象、量化模式、回退策略和下游加载要求
2.2 契约不满足时
任一关键项缺失时,不要猜测,不要硬编码适配,不要改量化方案。输出补充诉求:
| 字段 | 内容 | |
|---|---|---|
| 缺失项 | 缺少的配置、张量或说明 | |
| 影响模块 | 受影响的模型模块和 runtime object | |
| 期望格式 | infer 侧需要的字段、命名、shape、dtype、scale 规则 | |
| 阻塞原因 | 为什么无法安全接入 |
完成标志
- [ ] 契约满足 / 不满足 / 需补充的结论已明确
- [ ] 量化对象、浮点回退对象和张量语义已确认
- [ ] 不满足时已输出补充诉求,不进入代码改造
第三步:拆解模型结构与量化对象
读取:
{model_dir}/agentic/progress.md、config/*.yaml、runner_*.py、models/modeling_*.pyreferences/quantization-contract.md§4-§6(运行对象映射 / 9 步运行机制 / 四层落点)作为映射依据
3.1 识别结构指纹
按真实结构判断,不按模型名判断:
| 结构指纹 | 判断依据 | |
|---|---|---|
Dense Decoder | decoder-only,无 routed experts,有 attention projection 和 dense MLP | |
MoE Decoder | 有 router/topk、routed experts、expert gate/up/down | |
MLA + MoE / KVCache | 有 latent KV、MLA prolog、KV cache scale 或 MLA absorb | |
Indexer / 长序列 + MoE | 有 Indexer、LI cache、Sparse FA、Hadamard 或长序列专属契约 | |
| 特殊 packed expert | 专家权重或 scale 有特殊 pack/shard 规则 |
3.2 建立量化对象映射
| 量化目标 | infer runtime object | |
|---|---|---|
| Dense Linear | Linear / ReplicatedLinear / RowParallelLinear | |
| Dense MLP gate/up/down | 可量化 Linear;必要时 post-load 恢复 gate/up 融合 | |
| Attention q/k/v/o | 可量化 Linear;必要时 post-load 恢复 q/k/v 融合 | |
| MoE experts | MoEGMM / FusedMoEGMM,不满足时回退 per-expert Linear | |
| KVCache | kv_cache_scheme / cache scale / cache runtime | |
ignore 模块 | 浮点回退,不宣称已量化 |
3.3 记录运行场景特征
- Prefill / Decode 分支差异
- 部署卡数、TP/EP、是否 online split weight
- 量化模式:如
W8A8/W8A8C8/W4A8C8 - 当前量化前模型是否已有融合算子或其它前序优化
- 可能影响量化的 dtype / layout / scale / cache 组织
完成标志
- [ ] 结构指纹已明确
- [ ] 量化对象到 infer runtime object 的映射已形成
- [ ]
ignore和浮点回退模块已列出 - [ ] Prefill / Decode 差异和部署形态已纳入判断
第四步:匹配仓库参考与评估接入分级
读取:
references/quantization-structure-cards.md:按结构卡 A/B/C 选定方案、改造要点、已确认模型经验references/quantization-fusion-and-benefit.md§A:融合算子兼容性分级和路线级判断references/quantization-fusion-and-benefit.md§B.3:主线参考路径 A1-A4
4.1 按结构匹配参考卡
优先匹配现有结构卡:
Dense Decoder:重点检查gate/up和q/k/v是否被量化产物拆散,是否需要 post-load 融合恢复。MoE Decoder:重点检查Linear与MoEGMM的量化模式、expert scale、smooth scale、TP/EP shard。MLA + MoE / KVCache:重点检查 MLA prolog、KVCache C8、cache scale、MoE expert compute。Indexer / 长序列 + MoE:重点检查 IndexerProlog、LI cache、Sparse FA、Hadamard 和输出 dtype 契约。
结构卡命中 ≠ 经验全套用:即便结构指纹命中已有卡,「已确认模型经验」中的 forward 替身、scale 路径、post-load 例外等,必须基于当前模型实际算子链独立核对,不可「卡命中→经验全套用」。
只有当前结构无法落入已有卡,或出现新的 runtime object、张量语义、post-load 规则、融合回退模式时,才新增参考卡。
4.2 融合算子兼容性判断
按 references/quantization-fusion-and-benefit.md §A.1 兼容性分级(A/B/C/D)和 §A.2 算子映射判断量化与融合算子的交互:
- A 级(量化主线):保留融合算子,接入量化输入和 scale。
- B 级(共存):输入 dtype/layout 契约满足时保留。
- C 级(需替身):先做 post-load 结构融合或换量化友好算子。
- D 级(专属契约):必须先看输出 dtype、cache layout、必需 side tensor。
冲突处理由主流程在改造前向用户确认。回退规则见第六步 6.5;本步不擅自修改量化方案。
4.3 接入分级(按模块/能力逐项打级,不压成单维)
按 §3.2 模块映射逐项打级(Linear / MoEGMM / KVCache / Indexer 等独立给级),评估卡里逐项写入;整体动作按最坏级触发,但补充诉求和记录保留逐项分级,避免丢失「哪些模块已就绪、哪些卡住」的信息。
| 级别 | 判定 | 动作 | |
|---|---|---|---|
| L0 | 只需配置或 YAML 对齐 | 补配置,直接验证 | |
| L1 | 需要模型映射、runner 或 post-load | 改模型/runner/加载逻辑 | |
| L2 | 缺 infer 量化 runtime object / 算子能力(compressed-tensors 无对应 method/kernel) | 停止当前适配,标出 runtime gap,向主流程/用户确认是否另起 runtime 补齐任务;补 runtime 是独立工作量,不在本次适配内默默展开 | |
| L3 | 量化契约缺失,无法安全接入 | 停止落代码,输出补充诉求 |
完成标志
- [ ] 已命中结构参考卡或说明新卡必要性
- [ ] 融合算子量化兼容性已初步判断
- [ ] 接入分级和理由已明确
- [ ] 初评估模式下已形成量化方案初评估报告
第五步:方案审查
进入代码改造前,审查以下项目。未完成则回到对应步骤补齐。
审查项
- [ ] 契约 Gate 通过,或已停止并输出补充诉求
- [ ] 结构指纹不是按模型名推断
- [ ]
quant_target -> infer runtime object映射完整 - [ ]
targets/ignore与模型参数前缀已核对 - [ ] 量化张量名、shape、dtype、scale 语义已核对
- [ ] post-load 处理项已列出
- [ ] 融合算子冲突和回退策略已列出
- [ ] 非量化基线和量化前最新基线已确认
- [ ] 改造模式下已有用户继续量化决策
若当前任务仅要求初评估,本步结束后输出初评估报告并写回 progress.md,不进入实施。
初评估输出格式
第六步:实施量化接入
读取:references/quantization-structure-cards.md 命中结构卡的「改造要点 / 已确认模型经验 / post-load 例外」。
仅在改造任务中执行。每次改造围绕“一个模块映射或一个 post-load 问题”推进,验证通过后再继续下一个风险点。
6.1 接入 quant_config
改造前先确认目标模型的 model loading 入口(不同模型可能走不同 loader),在该入口处接入量化方案解析。
- 从
config.json读取quantization_config或compression_config。 - 在实际 model loading 入口把量化配置解析成运行时
CompressedTensorsConfig(实现上可能是get_quant_config(...)、CompressedTensorsConfig.from_config(...),或 model worker / loader 内部 helper)。 - 将
quant_config挂到模型 config 或 runner,并继续透传到各可量化模块。 - 保持模块 prefix 稳定,使
targets/ignore可正确命中。 - 输出头模块(如
lm_head)即使匹配targets:["Linear"]又不在ignore,模型层构造时不传quant_config即可。
6.2 替换或映射 runtime object
- Dense Linear:接入
Linear/ReplicatedLinear/RowParallelLinear的量化方法。 - MoE experts:优先映射到
MoEGMM/FusedMoEGMM;统一W8A8可检查gmm_quant_mode是否继承mm_quant_mode。 - 混合位宽 MoE:必须有独立
targets=["MoEGMM"]config group。 - KVCache:按
kv_cache_scheme和 cache scale 接入。 ignore模块:显式浮点回退,不参与量化收益统计。
6.3 处理权重加载和 post-load
必须核对:
- 量化张量名与参数前缀
- TP/EP shard 和 online split 规则
- weight 转置
- NZ/base format
- scale dtype
- smooth scale 完整性
- MoE expert pack/unpack
- cache scale 来源
6.4 恢复量化后运行时融合
Dense 模型优先检查:
- 量化产物是否拆散原 fused
gate/up - 量化产物是否拆散原 fused
q/k/v - 是否可在 post-load 后恢复更大的量化 matmul
原则:恢复运行时融合是为了减少小粒度量化 matmul 和动态量化开销;不能改变量化方案语义。
6.5 处理融合算子冲突(唯一回退规则真相源)
本节是融合算子量化冲突的唯一回退规则真相源;其它 reference 不再复述本规则。
如果融合算子拒绝量化 dtype/layout/scale:
- 不修改量化方案、
targets、ignore或张量语义。 - 检查主流程是否已传入用户确认的融合冲突处理原则;若没有,停止改造并输出待决策项。
- 若用户已接受回退,将该模块回退到原有非融合算子路径。
- 继续按原量化产物加载和验证。
- 记录融合算子名称、失败输入契约、错误信息、回退点、后续融合量化需求。
6.6 ignore 不完备的兼容处理
触发条件见references/quantization-contract.md§3「张量语义要求」的 ignore 完备性启发式:产物里既不在ignore也无weight_scale的 Linear 候选模块。
判定流程
前置 0 步:模型层跳过等价
模型代码若已通过常规机制(如 transformers _keys_to_ignore_on_load_unexpected / load_state_dict(strict=False) / 模型层不传 quant_config)让缺 scale 模块事实上不参与量化加载,等价合规。此时不必继续触发本节其它步骤,但仍需记录补充诉求,让产物方下版补 ignore。
- 读
deploy_quantization.md量化范围声明(量化目标 / bit 配置 / 明确量化或非量化模块)。 - 量化范围明确不覆盖该模块(如“量化目标: moe, mlp”不含 mtp):视为产物方 implicit BF16 + ignore 漏列;进入隐式回退。
- 量化范围模糊或与 ignore 不一致:停止改造,输出补充诉求,要求产物方明确说明
{module list}是 implicit BF16 还是 scale 丢失,并补ignore或 scale。 - 量化范围明确应该量化但 scale 缺失:停止改造,输出“产物 scale 丢失,回压重出”的补充诉求。
隐式回退动作(仅步骤 2 命中时)
- 在 infer 侧
quant_config解析后,把这些前缀注入 effective ignore set(扩展CompressedTensorsConfig.ignore),让get_quant_method走UnquantizedLinearMethod浮点路径。 - 不修改产物 `config.json`(产物语义只读)。
- 在
progress.md记录:implicit BF16 模块前缀列表 / 量化范围依据(来自deploy_quantization.md哪一段) / 补充诉求模板(产物方下版应将 X 显式补入ignore)。
禁止动作
- 不要造假 scale 强行量化。
- 不要 int8 forward without scale。
- 不要修改产物
config.json。 - 不要替产物方决策“漏 ignore 还是漏 scale”。
完成标志
- [ ] 量化配置已透传
- [ ] 模块映射已完成
- [ ] 权重加载和 post-load 已处理
- [ ] 融合冲突已处理或记录
- [ ] ignore 不完备处已按 §6.6 完成隐式回退或停止回压
- [ ] 没有擅自修改量化方案语义
第七步:验证真实生效与收益
本步是量化验证要求的唯一真相源;其它 reference 不再复述本规则。
读取:references/quantization-fusion-and-benefit.md §B.1 五维口径。
量化改造不能只看代码 diff,必须证明真实运行。
7.1 功能验证
- 量化模型可加载
- Prefill / Decode 至少跑通一次
- 输出可读、不重复、非全零、非提前 EOS
- 日志或状态文件能证明走到量化 runtime
- 验证命令记录了模型路径、量化产物路径、部署卡数和 YAML
等价性自检(接线正确性,非精度评测)
量化算法的绝对精度由产物方在 deploy_quantization.md 报告,本 skill 不评测精度;这里只验证「接线对不对」——量化路径输出是否与同模型 infer BF16 路径一致:
- 固定一组 prompt(覆盖分布即可,无需标注),量化基线与 infer BF16 基线各跑一次 greedy。
- 文本 diff:记首个分歧 token 位置 + 是否语义等价。W8A8 允许细微 token 差异,重点是不应出现乱码 / 早停 / 与 BF16 显著走偏。
- 这能抓功能验证漏掉的失败模式:scale/layout 接错时「能跑但输出垃圾」。
- 若连 BF16 参照都跑不了:标「等价性未核,转产物方精度报告 / 评测侧」,不静默判通过。
7.2 生效验证(probe 优先,贴输出,不空打勾)
- probe-B 对象级(主,零额外开销):加载后抽查量化目标层,
type(layer.quant_method).__name__不应为UnquantizedLinearMethod(应是CompressedTensorsW8A8Int8LinearMethod/ MoEGMM method 等)。只查 load 后构造结果,不跑 decode、不 profiling。 - probe-C 权重级(廉):从加载日志统计命中的
qweight/weight_scale等量化张量数,与期望量化模块数对账。 - probe-A 算子级(复用 §7.3 性能那次 profiling,不单独跑):若已 profiling,在
op_statisticgrepQuantBatchMatmul/GroupedMatmul/DequantSwigluQuant/DynamicQuant计数 >0;未跑性能则不强制。
并记录:已量化模块 / ignore 浮点回退模块 / 融合算子回退模块。
7.3 性能和显存验证
对比口径:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassedPattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/model-infer-quantization/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mcgatom/codex-cannbot/model-infer-quantization)