
为什么保留FP8一文读懂DeepSeek-V4.1-Flash-1017-oQ3e-ngram-mtp的196B Engram N-gram条件记忆机制DeepSeek-V4.1-Flash-1017-oQ3e-ngram-mtp 是 DeepSeek-V4.1-Flash-1017 的 MLX 混合精度量化版oQ3e 档位主网权重被压缩到平均 3.629 bits/weight而 196B 参数的 Engram N-gram 条件记忆表却刻意保留原始 FP8 精度E4M3 数值 每 32 通道一个 E8M0 缩放等效 8.25 bits/weight运行时可从 SSD 直接读取、不占常驻内存。这篇文章把这套选择性保精度的设计讲透。三分钟速览Engram 表是一张 196.6B 参数的字典式查找记忆占全部权重的 25.8%量化预算只针对其余权重Engram 被排除在外因此保留 FP8依赖 SSD offload常驻内存与非 ngram 版本一致约 239 GiB 模型速览763B 参数里都有什么DeepSeek-V4.1-Flash-1017 是 552B 骨干的多模态混合专家MoE模型采用 Causal Encoder-Decoder 结构配备 Compressed Sparse Attention 2CSA2、Engram 条件记忆与 DSpark 投机解码。本仓库是它的 oQ3e 混合精度 MLX 检查点由四部分构成组件逻辑参数量量化后存储语言骨干551.881B230.942 GiBEngram 表N-gram 记忆196.614B188.833 GiB视觉编码器0.485B0.904 GiBMTP 头14.225B7.495 GiB合计763.205B428.174 GiB记住两个关键数字剔除 Engram 表后有效平均 3.629 bits/weight完整检查点则为4.819 bits/weight——两者之差正是本文要回答的问题。 Engram N-gram 条件记忆到底是什么如果把 Attention 理解为通读全文找线索那么 Engram 就是翻字典它把**最近几个 token 组成的局部模式n-gram**直接映射到一张预存记忆表里取出对应的记忆向量注入网络。关键规格可在 config.json 中查证engram_layer_ids: [1, 14]— 第 1、14 层各部署一组 Engramengram_num_embeddings— 每层约3.84 亿个记忆槽位384,006,168 / 384,016,682每个槽位 256 维engram_max_ngram_size: 4— 条件最多由连续 4 个 token 组成engram_vocab_size: 16000000— n-gram 词表桶多达 1600 万engram_n_heads: 8、engram_head_dim: 256之所以叫条件记忆模型查询的不是单个词而是最近 4 个词的短语这个局部条件命中即取回一段现成的记忆。这类机制适合存储固定短语、事实关联等海量低层知识单次查找的成本远低于完整注意力。对应的实际张量可在 model.safetensors.index.json 中查到例如language_model.layers.1.engram.embed.weight第 1 层记忆表、language_model.layers.14.engram.embed.weight第 14 层记忆表以及配套的q_weight/k_weight/wkv查询与投影权重。❓ 为什么保留 FP8三个原因整份模型都压到了平均 3.63 bit唯独 196B 的 Engram 表高抬贵手留在 FP8。这不是疏漏而是三层权衡的结果。原因一查找型权重对量化误差最敏感网络里做矩阵乘法的权重是大面积平均型的成千上万个数的微小误差会被乘法平滑掉。而 Engram 表是定点读取型某个槽位一旦被命中256 维向量原样投入使用误差没有藏身之处——记忆值一旦偏了就是查错了字典后续层很难纠正。保留原始 E4M3 E8M0 缩放即 MXFP8group 32存储就是为了保住记忆内容的保真度。原因二量化预算刻意把 Engram 排除在外oQ3e 量化器的目标对象是剔除 Engram 后的其余权重见 quantization_report.json 中的budget_scope: remaining_weights_excluding_engram目标平均 3.5 bit、硬上限 3.7 bit。如果把 196B 的表塞进同一预算整体平均值会被大幅抬高主网精度反而被稀释。表归表、网归网是最干净的分账方式。原因三SSD offload 让 FP8 不花内存钱一张 188.8 GiB 的表最大的顾虑是常驻内存。但 oMLX 支持把 Engram 表直接从 SSD 读取README 明确说明常驻内存与非 ngram 版本一致约 239 GiB。也就是说保留 FP8 的代价记在磁盘上而不是内存上——对本地大模型而言磁盘恰恰是更便宜的那一侧资源。一句话总结FP8 体积已只有 BF16 的一半、预算不计它、内存不占它唯独内容保真要求严格——FP8 就是它的最优解。⚙️ oQ3e 的位宽预算是怎么分的该检查点由 oQoMLX v0.7.1混合精度量化生成Improved oQe先按实测层敏感度分配位宽再用 1024 样本 × 512 token 的重要性矩阵、配合加权最小二乘重拟合对每个量化组的 scale 与偏置做精修。实际位宽分布完整表格见 README.md存储格式逻辑权重占比有效 bits/weightAffine 3-bitgroup 64543.582B71.224%3.50MXFP4group 3213.590B1.781%4.25Affine 4-bitgroup 642.055B0.269%4.50Affine 8-bitgroup 641.886B0.247%8.50Affine 6-bitgroup 641.258B0.165%6.50MXFP8group 320.779B0.102%8.25BF163.399B0.445%16.00FP320.042B0.006%32.00Engram MXFP8group 32196.614B25.762%8.25合计763.205B100%4.819可以看出超过七成权重只花 3 bit而对精度敏感的模块视觉编码器、部分注意力输出投影等会额外分到 6/8-bit 甚至 BF16——这正是混合精度的含义把有限的位宽花在刀刃上。 名字里的 mtpMTP 与 DSpark 投机解码模型还附带14.225B 参数的 MTPMulti-Token Prediction权重量化后 7.495 GiB共 3 个 nextn 预测层采用 DSpark 机制一次投机多个候选 tokenblock size 5锚定第 37/38/39 层128 个路由专家取 top-3Markov 秩 256细节见 config.json。推理时由主模型验证投机结果命中率高的场景下生成速度会有明显提升。❓ 快速答疑Q实际运行大概需要多少内存Engram 表经 SSD offload 后常驻内存与非 ngram 版本一致约239 GiB磁盘则需约 430 GiB 放完整检查点。Q保留 FP8 和非 ngram 版本比差别在哪两者除 Engram 表外的权重完全一致差异只在表的存储方式ngram 版本以 FP8 保留更高保真的查找记忆代价是磁盘占用多出约 188.8 GiB。Q为什么平均是 4.819 bit 而不是 3.5 bit3.5 bit目标值实际 3.629是剔除 Engram口径的平均196B 的表按 8.25 bit 计入后整体口径升到 4.819 bit——这就是表隔离、网压缩策略的直接体现。Q量化细节在哪看quantization_report.json 记录了量化档位oq_level: 3、目标位宽3.5、预算范围、校准设置与逐模块精度策略。 获取与阅读建议git clone https://gitcode.com/hf_mirrors/mlx-community/DeepSeek-V4.1-Flash-1017-oQ3e-ngram-mtp推荐阅读顺序README.md量化摘要与存储分解→ config.json模型结构、Engram 与 MTP 参数→ quantization_report.json逐模块量化细节→ LICENSEMIT 协议。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考