Qwen3.8-27B 的视频 fps:README 说默认 2,配置里没有这个键
如果你照着 Qwen3.8-27B 的 model card 配视频输入,很可能会在某一刻停下来找一个键:README 里写着「默认 fps=2」,那这个默认值应该写在某个配置文件里吧?
我们把 Hugging Face Qwen/Qwen3.8-27B 仓库快照 1d4bf0f(核对日 2026-08-16)的随仓文本配置逐个检索了一遍,结论是:preprocessor_config.json、video_preprocessor_config.json、config.json 三个文件里,fps 这个键一次都没有出现。
这篇就把这处差异说清楚:它究竟写在哪一行、怎么自己复核、以及说到哪里必须停下来。
一、先把「README 说的」这句话的位置说准
很多人转述这条时会说成「model card 的视频章节规定了默认抽帧率」。更贴近原文的说法是:这句话出现在 README.md:409,而 README.md:405-417 这一整段在 README 里是注释状态——每一行都以 # 开头,不是一段会执行的代码。
原文这几行(照抄 README):
# When vLLM is launched with `--media-io-kwargs '{"video": {"num_frames": -1}}'`,
# video frame sampling can be configured via `extra_body` (e.g., by setting `fps`).
# This feature is currently supported only in vLLM.
#
# By default, `fps=2` and `do_sample_frames=True`.
# With `do_sample_frames=True`, you can customize the `fps` value to set your desired video sampling rate.
同一段被注释掉的还有一次带 mm_processor_kwargs 的调用(README.md:411-417),其中 README.md:415 写的是 "mm_processor_kwargs": {"fps": 2, "do_sample_frames": True},。
而 Video Input 小节里真正会执行的那个请求(README.md:400-403),没有传任何 extra_body、没有传采样参数、也没有传 reasoning_effort——它只有 model 和 messages 两个参数。
所以「README 说默认 fps=2」这句话本身是准确的,但它的载体是一段注释里的说明文字,不是一份参数表,也不是一段示例代码的实际入参。
二、怎么自己确认:一条可复现的检索
不用读完 583 行 README,把随仓的文本文件下下来,直接对键名做包含检查就行。我们用的就是下面这条:
python -c "
import io
for name in ['preprocessor_config.json','video_preprocessor_config.json']:
d=io.open(name,encoding='utf-8').read()
for kw in ['fps','num_frames','do_sample_frames','max_pixels','min_pixels','longest_edge','shortest_edge']:
print(name,kw,kw in d)
print('fps in config.json:', 'fps' in io.open('config.json',encoding='utf-8').read())
"
结果是:两个预处理配置里,fps、num_frames、do_sample_frames、max_pixels、min_pixels 全部为 False,只有 longest_edge / shortest_edge 为 True;config.json 里 fps 同样为 False。
再往外扩一圈也没有增量:这个仓库我们本地只取到 8 个文本文件(LICENSE、README.md、chat_template.jinja、config.json、generation_config.json、preprocessor_config.json、tokenizer_config.json、video_preprocessor_config.json),没有任何 .safetensors 权重。也就是说,fps=2 与 do_sample_frames=True 这两个默认值究竟由哪一层提供,在这 8 个文件里我们没能核实到,README 也没有说明。
三、那两个预处理配置里到底有什么
既然键不在那儿,就得知道它们实际有什么。这两个文件都只有 21 行,字段少到可以整张列出来(行号为实读):
| 字段 | preprocessor_config.json | video_preprocessor_config.json |
|---|---|---|
size.longest_edge | 16777216 | 25165824 |
size.shortest_edge | 65536 | 4096 |
patch_size | 16 | 16 |
temporal_patch_size | 2 | 2 |
merge_size | 2 | 2 |
image_mean | [0.5, 0.5, 0.5] | [0.5, 0.5, 0.5] |
image_std | [0.5, 0.5, 0.5] | [0.5, 0.5, 0.5] |
processor_class | "Qwen3VLProcessor" | "Qwen3VLProcessor" |
| 类型键 | image_processor_type: "Qwen2VLImageProcessorFast" | video_processor_type: "Qwen3VLVideoProcessor" |
两个文件的差异只有三处:size.longest_edge、size.shortest_edge,以及末尾那个类型键。归一化参数(image_mean / image_std 均为 0.5)、patch_size、temporal_patch_size、merge_size、processor_class 在两个文件里完全一致。
值得注意的是这两个文件只有上表这 9 个键——连 do_resize、do_rescale、do_normalize、rescale_factor、do_convert_rgb 这类常见键都没有。我们不对这些缺席键的缺省行为作任何推断,只陈述文件里有什么。
换句话说:视频这一侧的随仓配置管的是尺寸与分块(longest_edge / shortest_edge / patch_size / temporal_patch_size / merge_size),而抽帧(fps / do_sample_frames / num_frames)这一组键,在随仓配置里根本没有对应位置。
顺便说一个容易被想当然的点:longest_edge 这个值到底怎么换算成 token 数,仓库里没有通用公式。README 只在视频那一处括注了「469762048 对应 224k video tokens」,preprocessor_config.json 里的 16777216 与 65536 分别对应多少,我们在仓库里没有找到说明,因此也不做任何推算。
同一批「只活在 README 文本里」的键还有几个。我们对 README 全文做了逐行检索:num_frames 只出现在 README.md:405 一行,mm_processor_kwargs 只出现在 README.md:415 一行,--media-io-kwargs 只出现在 README.md:405 一行;fps 出现在 README.md:406、409、410、415 四行,do_sample_frames 出现在 409、410、415 三行。而 extra_body 全文出现 5 次、chat_template_kwargs 出现 5 次——后两个至少还在多个可执行示例里露过面,前面那三个则集中在同一段注释里。这不是什么质量判断,只是提醒你检索时别把出现次数当成文档覆盖度。
四、顺带说清同一段里另外两处对不上的地方
第一处:带 --media-io-kwargs 的完整启动命令,README 里不存在。
README.md:405 那行注释提到「When vLLM is launched with --media-io-kwargs '{"video": {"num_frames": -1}}'」,但全文的 vllm serve 命令只出现在 README.md:542(## Best Practices 第 3 条 “Processing Ultra-Long Texts” 之下),那条命令里没有 --media-io-kwargs,而且它自带 ... 省略占位——那个省略号是 README 原文就有的,不是我们删的,README 也没说明该处填什么。也就是说,仓库内没有一条可以直接复制去启用这条路径的完整命令。
另外,### Serving Qwen3.8 这一小节(README.md:229-240)全文没有任何启动命令,只有一个 [!Important] 提示块和 SGLang / vLLM / TokenSpeed 三条外链,指向三个外部文档站——那三个站点的内容我们没有访问,不在本文范围内。
第二处:视频 longest_edge 的建议值与发布值不是一个量级。
README.md:561 写着「the size parameter in the released video_preprocessor_config.json is conservatively configured」,并给出示例 JSON {"longest_edge": 469762048, "shortest_edge": 4096}(原文括注该值对应 224k video tokens);而仓库实际发布的是 25165824(video_preprocessor_config.json:3)。shortest_edge 两处一致,都是 4096。
README 还写明这类覆盖也可以通过引擎启动参数完成,并给出两个外部 PR 链接(README.md:566)——同样不在仓库内,我们没有访问。
到这里差异就陈述完了。哪一处「是对的」、为什么两处不一样,我们没有依据判断,也不打算替它解释;以你实际拉到的仓库状态为准。
五、这条线索能推到哪、以及什么时候说明不是它
如果你正在排查「视频输入的抽帧行为跟预期不一样」,这条差异能给你的判定动作是有限的、但明确的:
- 先确认你改的不是随仓配置。 在
preprocessor_config.json/video_preprocessor_config.json里加fps键这件事,仓库里没有任何依据说它会被读取——README 把这条路径明确挂在推理框架侧(extra_body+mm_processor_kwargs)。 - 确认框架。
README.md:407原文写的是This feature is currently supported only in vLLM.,指的就是上文那条「用extra_body配置视频抽帧」的能力。换到别的框架,README 没有给出等价说法。 - 确认前提参数。 README 把
--media-io-kwargs '{"video": {"num_frames": -1}}'描述为启用这条路径的前提;但它没有说明num_frames的含义、-1代表什么、有没有默认值。num_frames全 README 只出现在README.md:405这一行。 - 验证方式只能靠框架侧。 具体填什么值、怎么看生效,仓库里没有给出验证方法,只能以你所用推理框架的官方文档与
--help实际输出为准。这里要说明清楚:我们没有下载权重、没有安装任何推理框架、也没有启动过 vLLM 或别的服务,上面这四步全部停在 model card 与随仓配置文件的文本口径上;model card 内容会随上游更新而变,行号与字段也可能对不上,请以你拉到的那份仓库为准。
什么情况说明不是这个原因:如果你的调用根本没走 extra_body(就像 README 那个真正会执行的视频示例一样只传了 model 和 messages),那么抽帧参数这一层压根没被你碰到,问题多半在别处——比如输入结构本身。顺带一提,README 的视频示例传的是 "type": "video_url" + "video_url": {...}(README.md:387-390),而 chat_template.jinja:19 的视频分支判定条件写的是 'video' in item or item.type == 'video',不含 video_url;同文件 :8 的图像分支则包含 image_url。这两处文本不对称,请求在到达模板前是否被推理框架改写,我们无法从这个仓库核实,因此运行时会发生什么本文不作推断。
最后提醒一句口径问题:README 里的 fps=2,是 model card 的自述说明,写在一段注释里;本文所有数字都是我们在快照 1d4bf0f 上实读的,fps 键在三个配置文件中不存在这件事也是逐个检索出来的。这两类信息不要混着记。
延伸阅读
- 从头读起:Qwen3.8-27B 是什么:一个模型仓里有哪些文件、各自负责什么
- 本专题共 35 篇,完整分组目录见专题页
- Qwen3.8-27B 的视频输入怎么传:那段被整体注释掉的抽帧示例
- Qwen3.8-27B 的 YaRN 长上下文:三处配置对不上
本文依据 Hugging Face 仓库 Qwen/Qwen3.8-27B 的 model card 与随仓配置文件
(config.json、generation_config.json、preprocessor_config.json、video_preprocessor_config.json、chat_template.jinja 等)整理,
核对日 2026-08-16,对应仓库快照 1d4bf0f。
本文内容为 model card 与配置文件口径,我们没有下载权重、没有部署、也没有推理过这个模型,
因此不涉及生成质量、推理速度与显存占用的任何描述;文中所有评测数字均为 model card 自述,我们没有复现。
模型仓库内容随上游更新而变动,请以官方最新说明为准。