Qwen3.8-27B 的线性注意力参数:卷积核宽度与 key/value 头数
在 Hugging Face 仓库 Qwen/Qwen3.8-27B 里翻 config.json,如果你按 linear_ 这个前缀搜一遍,会在文件中段连着搜出五行;再往下一行还有一个 mamba_ 开头的字段。这六行是连续的,占据 config.json:87 到 config.json:92。
这一小段容易被跳过,因为它既不像 num_hidden_layers 那样有明确对应的 model card 参数表条目,也不像 layer_types 那样一眼能数出结构。但如果你要照着配置去对 model card 里的 “Gated DeltaNet” 那两行,绕不开它。
以下所有数值都来自我们在 2026-08-16 采集的仓库快照 1d4bf0f。我们没有下载权重、没有部署、也没有推理过这个模型,所以这篇只做一件事:把字段名、取值、所在行号照录出来,再和 model card 对一遍,说清哪些对得上、哪些没有对应表述。
六行原文
先把这六个键按文件中的出现顺序照录,都在 text_config 这一层下面:
| 字段名 | 值 | 行号 |
|---|---|---|
linear_conv_kernel_dim | 4 | config.json:87 |
linear_key_head_dim | 128 | config.json:88 |
linear_num_key_heads | 16 | config.json:89 |
linear_num_value_heads | 48 | config.json:90 |
linear_value_head_dim | 128 | config.json:91 |
mamba_ssm_dtype | "float32" | config.json:92 |
config.json 整个文件是 4,312 字节、140 行,只有三层结构:顶层、text_config、vision_config。上面这六个键全都在 text_config 直属层,而 text_config 一共 34 个键,这六个占其中六席。
它们在文件里的位置也值得提一句:layer_types 那个数组从 config.json:21 的 [ 一直排到 config.json:86 的 ],中间 64 个元素各占一行。这六行紧跟在数组的收尾之后,所以你在编辑器里从上往下翻 config.json 时,很容易连着 64 行数组一起滚过去,回头再按前缀搜才发现它们。
与 model card 参数表的逐项对照
model card 的 “Model Overview” 节在 README.md:32 到 README.md:53。与线性注意力直接相关的是这两行原文:
- Gated DeltaNet:
- Number of Linear Attention Heads: 48 for V and 16 for QK
- Head Dimension: 128
分别位于 README.md:42、README.md:43、README.md:44。逐项对:
README.md:43的 48 for V 对应linear_num_value_heads = 48(config.json:90),数值一致。- 同一行的 16 for QK 对应
linear_num_key_heads = 16(config.json:89),数值一致。但要注意 model card 这一行把 Q 与 K 合并写成 “for QK”,而text_config的 34 个键里没有任何一个名字里带 query 的linear_字段——配置侧只写了 key 头数这一个数。两处并列陈述,我们不推断这是怎么回事。 README.md:44的 Head Dimension: 128 在config.json里被拆成了两个键:linear_key_head_dim = 128(config.json:88)与linear_value_head_dim = 128(config.json:91)。model card 给一个数,配置给两个字段,两个字段当前取值相同。
剩下两个字段的处境不一样。linear_conv_kernel_dim 与 mamba_ssm_dtype 在 “Model Overview” 的参数表里没有对应条目。我们把 README.md:36 到 README.md:52 的每一行都拿去和 config.json 对过一遍,参数表覆盖的是隐藏维、层数、词表、两组注意力的头数与头维、FFN 中间维、LM 输出、MTP 这些项,卷积核宽度和 SSM 的 dtype 都不在其中。
另外,model card 里 DeltaNet 与 Gated 这两个词只出现在 README.md:41、42、43、45 四行,全都在 “Model Overview” 那一小块里;而 config.json 里一次都没有出现 “Gated DeltaNet” 这个名词,同一位置上写的字符串是 "linear_attention"。把这两组名词对上,是我们按数量(48 / 16)和排布顺序做出的核对结论,不是 config.json 里写明的映射关系。这个边界要说清楚,因为后面你如果照着 model card 的名词去配置里搜,是搜不到的。
顺着 “Gated” 这个词再补一句:text_config 里另外有两个键看上去与门控有关,attn_output_gate 的值是 true(config.json:11),output_gate_type 的值是 "swish"(config.json:100)。它们和 model card 里 “Gated DeltaNet” / “Gated Attention” 的那个 “Gated” 是不是指同一件事,本仓的文件没有说明,我们不推断。这两个键也不在上面那六行里,位置隔得很远,搜前缀时不会被一起搜出来。
两个 4 别混为一谈
linear_conv_kernel_dim 的值是 4。在同一个 text_config 里,还有一个字段的值也是 4:full_attention_interval(config.json:15)。
这两个是完全不同的两个键,一个在第 15 行、一个在第 87 行,只是数值碰巧相同。full_attention_interval 与 layer_types 数组的排布在数值上自洽——layer_types 长度 64,其中 full_attention 16 项、linear_attention 48 项,full_attention 的 0 基下标是 3, 7, 11 … 63,相邻间距恒为 4,而 64 ÷ 4 = 16。而 linear_conv_kernel_dim 与层的排布没有已知关系。
linear_conv_kernel_dim 的确切含义,我们未能从本仓的任何文件中确认。 这是模型权重仓,config.json:3 里那个 Qwen3_5ForConditionalGeneration 类的实现不在本仓,model card 也没有解释这个字段。我们只照录数值 4,不解释它是什么维度上的宽度、也不说改了会怎样。
顺带一个同样属于「数值巧合,别混」的点:线性注意力的 value 头数是 48、key 头数是 16;而 layer_types 里 linear_attention 恰好是 48 层、full_attention 恰好是 16 层。头数和层数是两码事,数字撞在一起只是巧合,看表时别把这两组 48 / 16 读串了。
和全注意力那一组字段的对照
同一个 text_config 里还有另一组头数字段,对应 model card 的 “Gated Attention”:
| 侧 | 头数字段 | 值 | 头维字段 | 值 |
|---|---|---|---|---|
| 线性侧 | linear_num_value_heads(config.json:90) | 48 | linear_value_head_dim(config.json:91) | 128 |
| 线性侧 | linear_num_key_heads(config.json:89) | 16 | linear_key_head_dim(config.json:88) | 128 |
| 全注意力侧 | num_attention_heads(config.json:97) | 24 | head_dim(config.json:16) | 256 |
| 全注意力侧 | num_key_value_heads(config.json:99) | 4 | 同上 | 256 |
有三点值得单独标出来:
- 命名不对称。 线性侧的头维是两个带前缀的独立字段(
linear_key_head_dim/linear_value_head_dim),全注意力侧则共用一个不带前缀的head_dim。你在文件里搜head_dim会同时命中三处,别以为是同一个东西。同样容易看串的还有两个都带 key 字样的键:linear_num_key_heads是16(config.json:89),num_key_value_heads是4(config.json:99),一个在第 89 行、一个在第 99 行,字段名不同、取值不同,引用时把行号一起写上比只写字段名更保险。 - 头维数值不同。 线性侧是
128,全注意力侧是256。model card 的README.md:44与README.md:47也是分别写 128 与 256,两侧口径一致。 - 乘积。 我们用 Python 乘了一下:
linear_num_value_heads × linear_value_head_dim = 48 × 128 = 6144,linear_num_key_heads × linear_key_head_dim = 16 × 128 = 2048;全注意力侧num_attention_heads × head_dim = 24 × 256 = 6144,num_key_value_heads × head_dim = 4 × 256 = 1024。两侧的「大头」乘积都是 6144,而hidden_size是5120(config.json:18),与 6144 不等。这些乘积是我们自己算的,config.json里并没有直接写出来,这里只作为数值关系记录,不用它推导参数量、显存或任何性能结论。
mamba_ssm_dtype 与 dtype 并存
config.json:92 的 mamba_ssm_dtype 是 "float32",而同一个 text_config 里 config.json:13 的 dtype 是 "bfloat16"。两个字段并存,取值不同。
这两个 dtype 各自作用在什么地方,本仓文件没有说明,我们不推断。 也要说清楚:我们没有打开过任何一个 safetensors 分片,权重实际以什么类型存储,没有核实过。配置里写着什么,就只是配置里写着什么。
自己核一遍
这几个数不用相信任何二手转述,config.json 是纯文本,几行 Python 就能读出来:
python -c "
import json
d = json.load(open('config.json', encoding='utf-8'))
t = d['text_config']
for k in ['linear_conv_kernel_dim','linear_key_head_dim','linear_num_key_heads',
'linear_num_value_heads','linear_value_head_dim','mamba_ssm_dtype',
'full_attention_interval','head_dim','num_attention_heads','num_key_value_heads']:
print(k, '=', t[k])
print('query-side linear field?', [k for k in t if 'linear' in k])
"
在 Windows 上用 PowerShell 或 CMD 跑同样这条命令时,把外层的双引号与内层引号换个位置更省事:把整段脚本写进一个 .py 文件再 python 文件名.py,可以避开引号转义的麻烦。Linux 与 macOS 侧则可直接照抄上面这条。以上是按仓库中的字段名组合的读取示例,我们没有运行过它,取值以你手上那份 config.json 为准。
最后一行 print 是用来确认「线性侧没有 query 头数字段」的:截至 2026-08-16 的快照,它会把 text_config 里所有含 linear 的键列出来,也就是上面表里那五个。
边界
写到这里得把话说死:
- 这六个字段改成别的值会牵动什么,我们没有依据说。本仓只有权重与配置,没有建模源码;model card 也没有给出任何调参说明。该调成多少取决于你的用法,项目没给通用值。
linear_conv_kernel_dim、mamba_ssm_dtype这两个字段的确切语义,我们未能在本仓任何文件里找到定义,只记录取值。- 线性侧与全注意力侧是不同的架构选择,效果如何我们没有依据评价,也不做任何两侧之间的优劣判断。
- model card 里那句
Number of Parameters: 27B(README.md:37)是 model card 自述;config.json里没有任何参数量字段,我们无法从配置核对它。
延伸阅读
- 从头读起:Qwen3.8-27B 是什么:一个模型仓里有哪些文件、各自负责什么
- 本专题共 35 篇,完整分组目录见专题页
- Qwen3.8-27B 的混合注意力:由 config 里哪几个字段承载
- Qwen3.8-27B 的 GQA:24 个 Q 头配 4 个 KV 头、head_dim 是 256
本文依据 Hugging Face 仓库 Qwen/Qwen3.8-27B 的 model card 与随仓配置文件
(config.json、generation_config.json、preprocessor_config.json、chat_template.jinja 等)整理,
核对日 2026-08-16,对应仓库快照 1d4bf0f。
本文内容为 model card 与配置文件口径,我们没有下载权重、没有部署、也没有推理过这个模型,
因此不涉及生成质量、推理速度与显存占用的任何描述;文中所有评测数字均为 model card 自述,我们没有复现。
模型仓库内容随上游更新而变动,请以官方最新说明为准。