Debian服务器加载Hugging Face分词器失败求助
解决Debian服务器加载Hugging Face DPR分词器失败的问题
问题现象
在Debian服务器上运行Milvus相关代码时,调用DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")反复抛出OSError: Can't load tokenizer for 'facebook/dpr-ctx_encoder-single-nq-base'错误。相同代码在Mac本地可正常执行,服务器端失败,怀疑是代理配置或模型下载问题。
完整报错栈:
Traceback (most recent call last): File "/root/a.py", line 2, in <module> tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/root/milvus/hello/lib/python3.11/site-packages/transformers/tokenization_utils_base.py", line 2012, in from_pretrained raise EnvironmentError( OSError: Can't load tokenizer for 'facebook/dpr-ctx_encoder-single-nq-base'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'facebook/dpr-ctx_encoder-single-nq-base' is the correct path to a directory containing all relevant files for a DPRContextEncoderTokenizer tokenizer.
解决方案
1. 配置服务器代理访问外网
如果服务器处于内网环境,需为Python配置代理以访问Hugging Face模型仓库:
- 临时生效(当前终端会话):
export HTTP_PROXY=http://你的代理IP:端口 export HTTPS_PROXY=http://你的代理IP:端口 - 永久生效(写入用户配置文件):
编辑~/.bashrc或~/.zshrc,添加上述两行配置,执行以下命令使配置生效:source ~/.bashrc - 代码内直接设置代理:
在加载分词器的代码前添加:import os os.environ['HTTP_PROXY'] = 'http://你的代理IP:端口' os.environ['HTTPS_PROXY'] = 'http://你的代理IP:端口'
2. 手动下载模型到服务器本地
若代理配置无效,可通过能正常访问外网的环境下载模型,再上传到服务器:
- 在Mac或其他可访问外网的环境执行代码,保存模型和分词器文件:
from transformers import DPRContextEncoderTokenizer, DPRContextEncoder tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base") model = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base") # 保存到本地目录 tokenizer.save_pretrained("./dpr-ctx-encoder") model.save_pretrained("./dpr-ctx-encoder") - 通过
scp将本地dpr-ctx-encoder目录上传到Debian服务器:scp -r ./dpr-ctx-encoder root@你的服务器IP:/目标保存路径 - 修改服务器代码,加载本地目录的分词器:
tokenizer = DPRContextEncoderTokenizer.from_pretrained("/目标保存路径/dpr-ctx-encoder")
3. 排查本地同名目录冲突
确保服务器当前代码执行目录下,不存在名为facebook/dpr-ctx_encoder-single-nq-base的本地目录,避免与模型仓库路径冲突导致加载失败。
4. 统一transformers版本
检查Mac和服务器上的transformers版本是否一致,版本差异可能引发兼容性问题:
pip show transformers
若版本不一致,在服务器安装与Mac相同的版本:
pip install transformers==对应版本号
内容的提问来源于stack exchange,提问作者L ZH
相关产品推荐
相关产品推荐

