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
相关产品推荐
相关产品推荐

