Qwen3.8-27B 的视频 fps:README 说默认 2,配置里没有这个键

2026-08-16

如果你照着 Qwen3.8-27B 的 model card 配视频输入,很可能会在某一刻停下来找一个键:README 里写着「默认 fps=2」,那这个默认值应该写在某个配置文件里吧?

我们把 Hugging Face Qwen/Qwen3.8-27B 仓库快照 1d4bf0f(核对日 2026-08-16)的随仓文本配置逐个检索了一遍,结论是:preprocessor_config.jsonvideo_preprocessor_config.jsonconfig.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——它只有 modelmessages 两个参数。

所以「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())
"

结果是:两个预处理配置里,fpsnum_framesdo_sample_framesmax_pixelsmin_pixels 全部为 False,只有 longest_edge / shortest_edge 为 True;config.jsonfps 同样为 False。

再往外扩一圈也没有增量:这个仓库我们本地只取到 8 个文本文件(LICENSEREADME.mdchat_template.jinjaconfig.jsongeneration_config.jsonpreprocessor_config.jsontokenizer_config.jsonvideo_preprocessor_config.json),没有任何 .safetensors 权重。也就是说,fps=2do_sample_frames=True 这两个默认值究竟由哪一层提供,在这 8 个文件里我们没能核实到,README 也没有说明。

三、那两个预处理配置里到底有什么

既然键不在那儿,就得知道它们实际有什么。这两个文件都只有 21 行,字段少到可以整张列出来(行号为实读):

字段preprocessor_config.jsonvideo_preprocessor_config.json
size.longest_edge1677721625165824
size.shortest_edge655364096
patch_size1616
temporal_patch_size22
merge_size22
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_edgesize.shortest_edge,以及末尾那个类型键。归一化参数(image_mean / image_std 均为 0.5)、patch_sizetemporal_patch_sizemerge_sizeprocessor_class 在两个文件里完全一致。

值得注意的是这两个文件只有上表这 9 个键——连 do_resizedo_rescaledo_normalizerescale_factordo_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 里的 1677721665536 分别对应多少,我们在仓库里没有找到说明,因此也不做任何推算。

同一批「只活在 README 文本里」的键还有几个。我们对 README 全文做了逐行检索:num_frames 只出现在 README.md:405 一行,mm_processor_kwargs 只出现在 README.md:415 一行,--media-io-kwargs 只出现在 README.md:405 一行;fps 出现在 README.md:406409410415 四行,do_sample_frames 出现在 409410415 三行。而 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);而仓库实际发布的是 25165824video_preprocessor_config.json:3)。shortest_edge 两处一致,都是 4096

README 还写明这类覆盖也可以通过引擎启动参数完成,并给出两个外部 PR 链接(README.md:566)——同样不在仓库内,我们没有访问。

到这里差异就陈述完了。哪一处「是对的」、为什么两处不一样,我们没有依据判断,也不打算替它解释;以你实际拉到的仓库状态为准。

五、这条线索能推到哪、以及什么时候说明不是它

如果你正在排查「视频输入的抽帧行为跟预期不一样」,这条差异能给你的判定动作是有限的、但明确的:

  1. 先确认你改的不是随仓配置。preprocessor_config.json / video_preprocessor_config.json 里加 fps 键这件事,仓库里没有任何依据说它会被读取——README 把这条路径明确挂在推理框架侧(extra_body + mm_processor_kwargs)。
  2. 确认框架。 README.md:407 原文写的是 This feature is currently supported only in vLLM.,指的就是上文那条「用 extra_body 配置视频抽帧」的能力。换到别的框架,README 没有给出等价说法。
  3. 确认前提参数。 README 把 --media-io-kwargs '{"video": {"num_frames": -1}}' 描述为启用这条路径的前提;但它没有说明 num_frames 的含义、-1 代表什么、有没有默认值。num_frames 全 README 只出现在 README.md:405 这一行。
  4. 验证方式只能靠框架侧。 具体填什么值、怎么看生效,仓库里没有给出验证方法,只能以你所用推理框架的官方文档与 --help 实际输出为准。这里要说明清楚:我们没有下载权重、没有安装任何推理框架、也没有启动过 vLLM 或别的服务,上面这四步全部停在 model card 与随仓配置文件的文本口径上;model card 内容会随上游更新而变,行号与字段也可能对不上,请以你拉到的那份仓库为准。

什么情况说明不是这个原因:如果你的调用根本没走 extra_body(就像 README 那个真正会执行的视频示例一样只传了 modelmessages),那么抽帧参数这一层压根没被你碰到,问题多半在别处——比如输入结构本身。顺带一提,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 键在三个配置文件中不存在这件事也是逐个检索出来的。这两类信息不要混着记。

延伸阅读


本文依据 Hugging Face 仓库 Qwen/Qwen3.8-27B 的 model card 与随仓配置文件 (config.jsongeneration_config.jsonpreprocessor_config.jsonvideo_preprocessor_config.jsonchat_template.jinja 等)整理, 核对日 2026-08-16,对应仓库快照 1d4bf0f。 本文内容为 model card 与配置文件口径,我们没有下载权重、没有部署、也没有推理过这个模型, 因此不涉及生成质量、推理速度与显存占用的任何描述;文中所有评测数字均为 model card 自述,我们没有复现。 模型仓库内容随上游更新而变动,请以官方最新说明为准。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。