You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Colab运行Hugging Face的KOSMOS 2模型遇Kosmos2Tokenizer未定义错误

解决Kosmos 2模型加载时Kosmos2Tokenizer未定义的问题

问题重现

使用Hugging Face的ydshieh/kosmos-2-patch14-224模型执行图像识别与描述任务时,运行以下代码:

import requests
from PIL import Image
from transformers import AutoProcessor, AutoModelForVision2Seq

# Load model and processor
model = AutoModelForVision2Seq.from_pretrained("ydshieh/kosmos-2-patch14-224", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("ydshieh/kosmos-2-patch14-224", trust_remote_code=True)

触发NameError:

NameError: name 'Kosmos2Tokenizer' is not defined

错误根源为模型缓存目录中的tokenization_kosmos2_fast.py文件,其中Kosmos2TokenizerFast类引用了未导入的Kosmos2Tokenizer类。

解决方案

方法1:手动导入慢分词器类

在加载processor前,将模型缓存目录添加到Python路径,并导入依赖的慢分词器:

import requests
from PIL import Image
from transformers import AutoProcessor, AutoModelForVision2Seq
import sys

# 替换为你本地缓存的实际路径(哈希值需匹配)
sys.path.append("~/.cache/huggingface/modules/transformers_modules/ydshieh/kosmos-2-patch14-224/ada61181d314e7e7c5ff5656322e03a3f1912ba8/")
from tokenization_kosmos2 import Kosmos2Tokenizer

# 加载模型与处理器
model = AutoModelForVision2Seq.from_pretrained("ydshieh/kosmos-2-patch14-224", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("ydshieh/kosmos-2-patch14-224", trust_remote_code=True)

方法2:修复缓存中的fast分词器文件

找到本地缓存的tokenization_kosmos2_fast.py文件,在文件开头添加导入语句:

from .tokenization_kosmos2 import Kosmos2Tokenizer

补全依赖链后,重新运行原代码即可正常加载处理器。

方法3:从本地unilm仓库加载

利用已克隆的microsoft/unilm仓库,直接加载本地模型与处理器,规避远程代码的导入问题:

import sys
from PIL import Image
# 替换为你的unilm仓库中kosmos-2目录的路径
sys.path.append("/path/to/unilm/kosmos-2")
from modeling_kosmos2 import Kosmos2ForVision2Seq
from tokenization_kosmos2 import Kosmos2Tokenizer
from processing_kosmos2 import Kosmos2Processor

# 替换为本地下载的模型权重目录
model = Kosmos2ForVision2Seq.from_pretrained("/path/to/local/kosmos-2-patch14-224")
processor = Kosmos2Processor.from_pretrained("/path/to/local/kosmos-2-patch14-224")

问题核心原因

AutoProcessor加载远程代码时,Kosmos2TokenizerFast类依赖同目录下的Kosmos2Tokenizer慢分词器类,但远程代码未自动导入该依赖,导致触发NameError。手动补全导入或修改缓存文件即可解决。

内容的提问来源于stack exchange,提问作者Octavio Mesa Varona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 22:36:29