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

如何重新下载Hugging Face tokenizer,解决加载cardiffnlp模型分词器报错问题

问题原因
  • 调用model.save_pretrained(model_name)后,本地生成了与Hugging Face模型ID同名的目录,目录内仅包含模型权重、模型配置文件,无tokenizer所需的词汇表、合并规则等文件
  • 后续调用AutoTokenizer.from_pretrained(model_name)时,transformers库会优先读取本地同名路径的内容,检测到路径存在但缺少tokenizer相关文件,就会抛出OSError
  • 最初终端可正常运行是因为当时还未生成本地同名目录,库直接从远程拉取tokenizer;本地目录生成后,所有环境都会优先读本地残缺文件,因此后续终端也会报错
解决方法

临时解决(可联网场景)

强制让库从远程拉取tokenizer,忽略本地残缺目录,执行以下代码即可:

tokenizer = AutoTokenizer.from_pretrained(model_name, force_download=True)

如果不需要保留本地已保存的模型,也可以直接删除本地生成的cardiffnlp/twitter-roberta-base-emotion目录,再正常调用加载tokenizer的代码即可。

正确本地存储方案

后续如果需要将模型和tokenizer都保存在本地离线使用,按照以下流程操作:

  1. 加载时同时拉取模型和tokenizer
  2. 保存时两者都执行保存操作,建议单独指定存储路径,不要和Hugging Face的公共模型ID同名,避免冲突

示例代码:

from transformers import AutoModelForSequenceClassification, AutoTokenizer

model_name = "cardiffnlp/twitter-roberta-base-emotion"
# 同时加载模型和分词器
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 指定本地存储路径
local_save_path = "./twitter-roberta-base-emotion-local"
# 两者都执行保存
model.save_pretrained(local_save_path)
tokenizer.save_pretrained(local_save_path)

# 后续离线加载时直接使用本地路径即可
loaded_model = AutoModelForSequenceClassification.from_pretrained(local_save_path)
loaded_tokenizer = AutoTokenizer.from_pretrained(local_save_path)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:04