快速结论:该报错通常发生在从 Transformers v4 升级到 v5 后加载 BarthezTokenizer 时,原因是 BPE 词汇表被硬编码的 Unigram 初始化逻辑拒绝。优先检查你使用的模型是否为 moussaKam/barthez(BPE)而非 moussaKam/mbarthez(UNIGRAM),并考虑改用 TokenizersBackend 直接加载 tokenizer.json。
适用环境:Transformers v5.17.0.dev0(main 分支),Python 3.10.20,PyTorch 2.12.0+cu130(CUDA),tokenizers 0.23.1,Linux 系统,CPU only 加载 tokenizer 时触发。
最快修复方案:Issue 中暂无经过确认的“一键修复”代码方案。维护者建议可以尝试使用 TokenizersBackend.from_pretrained 直接加载 tokenizer.json 文件绕过该问题,但此方案未在 Issue 中被实际验证为完整替代方案。
注意事项:该问题归属于 Transformers v5 的回归缺陷,官方尚未合并修复补丁。仅将 model = Unigram 写入类中不可行,会导致 BPE 词汇被错误切分(如 '▁B', 'on', 'jour' 而非 '▁Bonjour')。
问题场景
用户在加载 moussaKam/barthez 模型时触发此问题,调用 AutoTokenizer.from_pretrained("moussaKam/barthez") 即抛出 TypeError。该模型在 Transformers v4.57.1 中可以正常加载并返回标记 ID [0, 17678, 36, 715, 2],但在 v5 主分支上完全不可用。此回归影响自定义加载脚本以及官方文档示例。
报错原文
TypeError: argument 'vocab': 'dict' object is not an instance of 'Sequence'
File ".../models/barthez/tokenization_barthez.py", line 118, in __init__
self._tokenizer = Tokenizer(Unigram(self._vocab, unk_id=3, byte_fallback=False))
原因分析
可能原因:moussaKam/barthez 与 moussaKam/mbarthez 两个检查点使用不同的 sentencepiece 算法(前者为 BPE,后者为 UNIGRAM),而 BarthezTokenizer 在 v5 的 __init__ 中硬编码为始终构建 Tokenizer(Unigram(...))。当传入 BPE 模型的词汇表时(tokenizer.json 中 vocab 为 dict + 114917 merges),Unigram 构造函数拒绝 dict 类型的 vocab,从而抛出此 TypeError。
进一步的回归根源是 #42563 引入的 convert_to_native_format 将检查点自身的 vocab 直接送入硬编码的 Unigram 路径;此前在 v4 中该类型不匹配未被执行检查,所以可以“侥幸”加载。
环境排查
- 确认 transformers 版本:v5 系列受影响(如 5.17.0.dev0),v4.57.1 正常。
- 确认目标模型:
moussaKam/barthez(BPE)会报错;moussaKam/mbarthez(UNIGRAM)正常。 - 检查
tokenizer.json中 vocab 的结构:dict + merges 表示 BPE;list of [piece, score] 对表示 UNIGRAM。 - 确认加载路径:无论从 spm 文件还是 tokenizer.json 加载,最终都会走到构造
Unigram的代码行并失败。 - 无需 GPU;纯 CPU 加载 tokenizer 即可复现。
解决步骤
- 确认是否必须使用 v5:如果生产环境仍依赖 Transformers v4,可先固定
transformers==4.57.1,该版本下moussaKam/barthez正常返回预期 ID。 - 可优先尝试的绕行方案:使用
TokenizersBackend.from_pretrained("moussaKam/barthez")直接加载该检查点的 tokenizer.json 文件,绕过 BarthezTokenizer 的 Unigram 硬编码构造逻辑。此方案来自维护者建议,尚未在原始 Issue 中得到完整代码验证。 - 检查测试是否被误导:若你在维护依赖该模型的测试套件,注意
tests/models/barthez/test_tokenization_barthez.py固定使用的是moussaKam/mbarthez(UNIGRAM),因此不会暴露此回归。不要把测试通过当作该模型可用的证据。 - 追踪官方修复:关注 huggingface/transformers 中针对该 Issue 的 Pull Request。修复方向是在
__init__中按照 vocab 形状分派后端(dict + merges → BPE,list of pairs → Unigram),并连通 merges 数据。
验证方法
运行与 Issue 中完全一致的代码,确认不再抛 TypeError:
from transformers import AutoTokenizer
AutoTokenizer.from_pretrained("moussaKam/barthez")
预期输出:[0, 17678, 36, 715, 2](v4.57.1 ID)。若使用 tokenizer.json 直接加载,可对照 Tokenizer.from_file(...).encode("Bonjour le monde") 的结果,正确的分段应为 ['▁Bonjour', '▁le', '▁monde']。
参考来源
huggingface/transformers #48567
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug]: JSON Schema pattern on string items causes maxLength to be ignored in structured outputs](https://www.chat-gpts.plus/wp-content/uploads/2026/09/45592-d177bcc5-768x403.jpg)
![[Bug]: OffloadingConnector stores but never serves when MTP/EAGLE speculative decoding is enabled (hybrid GDN model, XPU)](https://www.chat-gpts.plus/wp-content/uploads/2026/09/52735-70676ec7-768x403.jpg)