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

如何在离线环境下从磁盘加载使用spacy-transformers模型

你当前的报错是两个问题叠加导致的:1. 代码中路径拼写错误;2. 导出的transformer组件目录缺少Hugging Face模型的完整文件,加载时transformers库尝试联网拉取缺失文件失败。以下是可落地的解决方法:

方案1:直接离线安装en_core_web_trf包(推荐,复杂度最低)

这是最不容易出问题的适配方案,操作步骤:

  • 在有网络的环境下,下载和你spacy版本匹配的en_core_web_trf安装包,spacy 3.0.5对应版本为en_core_web_trf==3.0.0,直接下载对应的whl安装包即可
  • 将安装包拷贝到离线企业环境,使用pip install 安装包文件名.whl完成安装
  • 安装完成后直接调用spacy.load("en_core_web_trf")即可正常使用,全程不需要联网。

方案2:修复手动导出/加载流程

如果必须单独拆分transformer组件使用,你需要做以下调整:

第一步:修正路径拼写错误

你示例代码中导出组件时写的路径是transfomer_pretrained(漏写了字母r),加载时写的是transformer_pretrained,路径不匹配会直接导致文件找不到,先修正该问题。

第二步:补充完整Hugging Face模型文件

en_core_web_trf底层使用的是roberta-base模型,你需要手动下载以下所有文件,放到你导出的transformer_pretrained目录下:

  • config.json:模型核心配置文件
  • pytorch_model.bin:PyTorch格式的模型权重文件
  • vocab.json:RoBERTa分词器词汇表
  • merges.txt:BPE分词合并规则表
  • tokenizer_config.json:分词器配置文件
  • tokenizer.json(可选,Fast分词器依赖文件,建议补充)

第三步:调整加载代码

加载时不需要排除vocab,修正后的代码如下:

import spacy
import spacy_transformers

# 有网环境执行这段导出代码,将导出目录整体拷到离线环境
# nlp_trf = spacy.load("en_core_web_trf")
# transformer = nlp_trf.get_pipe("transformer")
# transformer.to_disk("transformer_pretrained") 

# 离线环境执行加载代码
nlp = spacy.blank("en") 
trf = nlp.add_pipe("transformer")
trf.from_disk("transformer_pretrained")

方案3:直接用本地HF模型初始化组件

如果你已经单独下载好了roberta-base的所有本地文件,也可以跳过导出步骤直接初始化:

import spacy

nlp = spacy.blank("en")
# 括号内替换为你本地存放roberta-base所有文件的目录绝对路径
trf = nlp.add_pipe("transformer", config={"model": {"name": "/本地/roberta-base/目录路径"}})
# 用样本文档初始化模型,不需要联网
trf.model.initialize([nlp.make_doc("hello world")])

注意:你使用的transformers版本为4.5.1,下载模型文件时需要确认和该版本兼容,不要下载过新的版本的模型配置和权重,避免出现兼容性报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:33:04