☰
线性注意力 + 全注意力 3:1 交替:Coder390 Qwen3.5 架构与内置 MTP 头解析
2026/10/15 11:14:25 网站建设 项目流程
  • 基础模型
  • 大模型
  • 多模态
  • 模型量化
  • 模型评测
  • 本地部署

【免费下载链接】Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2

项目地址:https://ai.gitcode.com/hf_mirrors/nerkyor/Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2
点击查看免费下载

Coder390(基于 Qwen3.8-27B 的后训练模型)采用 Qwen3.5 一代的Qwen3_5ForConditionalGeneration架构:64 层文本塔中,线性注意力层与全注意力层按 3:1 交替排布,并自带一个 BF16 的 MTP(Multi-Token Prediction,多 token 预测)头。本文面向新手,讲清楚这套混合注意力结构为什么这样设计、MTP 头藏在仓库的哪些文件里、以及它如何在不增加任何额外下载的前提下把解码速度提升约一倍。

Coder390 是什么:一个可以跑在单卡上的 27B 多模态模型

🧩 Coder390 是 Qwen3.8-27B 经过多轮 SFT + RLOO 后训练的版本,核心目标是治「模型已经算出答案却停不下来」的毛病(官方口径下 GPQA 的 94K 截断从 4 题降到 1 题,LCB 从 13 题降到 3 题)。它总参数 27,781,427,952,支持文本 + 图像 + 视频输入,并提供 BF16、静态 FP8、NVFP4、INT8/INT4、GGUF、NInfer 等一整套量化档位。

静态 FP8 档成绩为 GPQA 178/198、MMLU 450/500、LCB 90/100,全面不低于原版 FP8(177 / 444 / 83),且 BF16、动态 FP8、静态 FP8 三档之间 GPQA 与 LCB 一题不差——量化基本无损。

3:1 交替的混合注意力结构是怎么设计的

64 层排布:48 层线性注意力 + 16 层全注意力

打开任意档位的 BF16/config.json 可以看到 64 项layer_types,规律非常整齐:每 4 层里前 3 层是linear_attention,第 4 层是full_attention。对应的full_attention_interval参数就写在 BF16/config.json:

"full_attention_interval": 4

也就是说 64 = 48 层线性注意力 + 16 层全注意力,这正是标题里「3:1」的来历。

两种注意力各管什么

组件关键参数(见 BF16/config.json)作用
线性注意力层(×48)linear_num_key_heads=16、linear_num_value_heads=48、linear_conv_kernel_dim=4、mamba_ssm_dtype=float32用固定大小的循环状态(SSM 风格)代替增长的 KV 缓存,算子成本不随上下文长度线性膨胀
全注意力层(×16)24 个 Q 头 / 4 个 KV 头(GQA)、head_dim=256、partial_rotary_factor=0.25提供精确的长程检索能力,关键位置不丢信息
位置编码max_position_embeddings=262144、mrope 分段 [11, 11, 10]支持 256K 上下文;mrope 把文本、图像、视频的位置信息编进同一套 RoPE

📌 简单理解:线性注意力层像「滚动摘要」,读多少都只占一份固定内存,负责让长上下文的推理又省又快;每第 4 层插入一次全注意力,像「定期翻原文」,保证需要精确定位的信息(比如长代码里的某个函数定义)能被准确取回。3:1 的比例就是在「省」和「准」之间取平衡,这也是为什么它能稳定跑 100K 上下文评测。

另外两个细节值得关注:注意力输出带门控(attn_output_gate=true、门控类型swish),FFN 激活用silu,词表大小 248,320。视觉塔是独立的qwen3_5_vision(27 层、patch 16、空间合并 2),所以同一套权重既能聊代码也能看图看视频。

内置 MTP 头:把下一个 token 一次猜好几个

MTP 是什么、有多大

MTP(Multi-Token Prediction)本质是一个「搭便车」的小型预测头:主模型正常解码时,MTP 头基于当前隐状态顺手往后猜 1 个草稿 token,主模型一次前向就能验证并连续收下若干个 token——这就是投机解码。

在 Coder390 里,MTP 的配置同样写在 BF16/config.json:

  • mtp_num_hidden_layers=1:只有 1 层隐藏层,非常轻量;
  • mtp_use_dedicated_embeddings=false:不单独养一套词嵌入,直接复用主模型的 embedding,省参数。

实体文件是每档自带的 BF16/mtp-bf16.safetensors(849MB、15 个张量、424,699,392 个参数,全部 BF16,直接取自官方 Qwen3.8-27B 的 MTP 头),FP8、NVFP4 各档里的同名文件与它逐字节一致。

实测提速:约 2 倍,且不改输出分布

单张 RTX PRO 6000 + SGLang(静态 FP8 包)的实测(数据见 evaluation/BENCH_STATICFP8.json):

场景不开投机开 MTP开 DFlash2
单请求 tok/s(C1)45.691.1180.3
总吞吐 tok/s(C8)283.0380.3646.3
平均接受长度—2.814.13

MTP 平均每个解码步能收下约 2.8 个 token(接受率 60%),单请求速度翻倍;投机解码不改变目标模型的输出分布,只改速度。GGUF 侧实测也一致:llama.cpp 融合 MTP 时 Q6_K 包 C1 总吞吐 97.2 tok/s,约为不开投机(53.4)的 1.8 倍。

MTP 和 DFlash2 二选一

⚡ 仓库同时提供 DFlash2 草稿模型(FP8 权重 + 128×128 分块 scale,约 2.4GB,见 FP8/DFlash2-FP8/config.json),它的草稿块更长、C1 下约 180 tok/s,比 MTP 更快;但MTP 与 DFlash2 互斥,一次启动只能开一个。不想多下载 2.4GB 草稿时,用内置 MTP 就够了——这也是所有档位都坚持把 MTP 头打包进来的原因。

各量化档位里 MTP 头藏在哪里

📦 所有档位都内置或附带 MTP,位置如下:

档位MTP 所在位置说明
BF16 / FP8 / NVFP4 三档包内mtp-bf16.safetensors与 BF16/mtp-bf16.safetensors 字节一致,SGLang 直接识别
INT4 W4A16INT4/W4A16/model_mtp.safetensors内置头,vLLM 用--speculative-config开启,整轮测评平均接受长度 2.81
INT8 W8A8 / W8A16独立目录 INT8/W8A8/MTP-BF16/vLLM 外挂草稿,3 个草稿 token 时 C1 65.9 vs 31.1 tok/s
GGUF Q2/Q3/Q4 LynnStyle文件内blk.64(65 个 block 的最后一个)内置 Q4 MTP 头(.ninfer里为 Q4_K),llama.cpp 显示creating MTP draft context
GGUF Q6_K / Q8_0文件内blk.64内置 Q8 MTP 头;另有独立草稿 GGUF/mtp-Qwen3.8-27B-Coder390-EfficientThink-Q8_0.gguf 可经-md替换给低档用
NInfer 包(NVFP4 / GGUF).ninfer单文件内Q8 MTP 头 + 视觉组件一起打包,--vision即可看图

快速上手:三种引擎开启 MTP 投机解码

只需一行关键参数(完整命令见 README.md 的「推荐启动脚本」):

SGLang(BF16 / FP8 / NVFP4 档)

python -m sglang.launch_server --model-path ./FP8 \ --mamba-ssm-dtype bfloat16 \ --speculative-algorithm EAGLE --speculative-num-steps 3 \ --speculative-eagle-topk 1 --speculative-num-draft-tokens 4

llama.cpp(GGUF 档,MTP 已内置,无需外挂)

llama-server -m ./GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-MTP.gguf \ -c 409600 -np 4 -ngl 99 --jinja \ --spec-type draft-mtp --spec-draft-n-max 4

NInfer(.ninfer档):在ninfer-serve后加--spec mtp --draft-tokens 4(MTP 支持 1–5 个草稿 token),需要看图时再追加--vision。

关键文件速查

文件用途
BF16/config.json架构总配置:layer_types、full_attention_interval、MTP 参数
BF16/mtp-bf16.safetensors官方 BF16 MTP 头(各 safetensors 档字节一致)
FP8/DFlash2-FP8/更快的 DFlash2 投机草稿(FP8)
INT8/W8A8/MTP-BF16/INT8 档的独立 MTP 草稿目录
evaluation/BENCH_STATICFP8.jsonMTP / DFlash2 / 不开投机的完整测速原始数据
evaluation/NVFP4_CALIBRATION_METHOD.mdNVFP4 校准方法说明

小结

  • 结构:64 层 = 48 层线性注意力 + 16 层全注意力,full_attention_interval=4实现 3:1 交替;线性层压成本、全注意力层保精度,支撑 256K 上下文能力。
  • MTP:1 层隐藏层、424M 参数、15 个张量,复用主模型 embedding,内置于所有档位;实测单请求解码约 2 倍加速(91 vs 46 tok/s)。
  • 选型:追求极致速度用 DFlash2(SGLang,C1 约 180 tok/s);不想加草稿文件用 MTP;低显存端侧走 GGUF 内置 MTP + llama.cpp。

这套「混合注意力 + 内置 MTP」的组合,让 Coder390 在单卡 96GB 乃至 16GB 显存的设备上,都能以接近实时对话的速度跑出 27B 级别的推理能力。

  • 基础模型
  • 大模型
  • 多模态
  • 模型量化
  • 模型评测
  • 本地部署

【免费下载链接】Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2

项目地址:https://ai.gitcode.com/hf_mirrors/nerkyor/Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询