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

使用csebuetnlp/mT5_multilingual_XLSum模型时遇词汇加载错误求助

解决本地Jupyter Notebook加载csebuetnlp/mT5_multilingual_XLSum时spiece.model找不到的问题

以下是几个代码层面的可行解决方案:

1. 手动指定词汇文件路径

直接在初始化tokenizer时显式指定vocab_file参数,避免transformers自动路径解析出错:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
import os

# 替换为你的本地模型缓存快照路径
model_dir = "~/.cache/huggingface/hub/models--csebuetnlp--mT5_multilingual_XLSum/snapshots/[你的快照ID]"
vocab_path = os.path.expanduser(os.path.join(model_dir, "spiece.model"))

# 手动指定词汇文件初始化tokenizer
tokenizer = AutoTokenizer.from_pretrained(
    "csebuetnlp/mT5_multilingual_XLSum",
    vocab_file=vocab_path,
    local_files_only=True  # 强制使用本地文件,避免远程下载干扰
)
model = AutoModelForSeq2SeqLM.from_pretrained("csebuetnlp/mT5_multilingual_XLSum", local_files_only=True)

2. 清除并重新下载模型缓存

本地缓存的文件可能存在损坏,先删除对应缓存目录,再重新加载:

import shutil
import os

# 模型缓存目录路径
cache_dir = os.path.expanduser("~/.cache/huggingface/hub/models--csebuetnlp--mT5_multilingual_XLSum")

# 删除缓存目录
if os.path.exists(cache_dir):
    shutil.rmtree(cache_dir)

# 重新下载并加载模型
tokenizer = AutoTokenizer.from_pretrained("csebuetnlp/mT5_multilingual_XLSum")
model = AutoModelForSeq2SeqLM.from_pretrained("csebuetnlp/mT5_multilingual_XLSum")

3. 直接用sentencepiece加载词汇文件后初始化tokenizer

绕开transformers的自动加载逻辑,手动用sentencepiece加载模型文件:

import sentencepiece as spm
from transformers import MT5Tokenizer, AutoModelForSeq2SeqLM
import os

# 替换为你的本地模型缓存快照路径
model_dir = "~/.cache/huggingface/hub/models--csebuetnlp--mT5_multilingual_XLSum/snapshots/[你的快照ID]"
vocab_path = os.path.expanduser(os.path.join(model_dir, "spiece.model"))

# 手动加载sentencepiece模型
sp = spm.SentencePieceProcessor()
sp.Load(vocab_path)

# 初始化MT5Tokenizer并传入已加载的processor
tokenizer = MT5Tokenizer(
    vocab_file=vocab_path,
    sp_model=sp
)
model = AutoModelForSeq2SeqLM.from_pretrained("csebuetnlp/mT5_multilingual_XLSum", local_files_only=True)

4. 验证文件路径与权限

先确认文件实际可访问,在代码中添加路径检查:

import os

vocab_path = "你的spiece.model实际路径"
print(f"文件是否存在:{os.path.exists(vocab_path)}")
print(f"是否可读:{os.access(vocab_path, os.R_OK)}")

如果输出False,检查路径是否有拼写错误(比如Windows系统的大小写敏感问题),或者调整文件读取权限。

内容的提问来源于stack exchange,提问作者dicloflom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:19