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

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. 手动下载模型到服务器本地

若代理配置无效,可通过能正常访问外网的环境下载模型,再上传到服务器:

  1. 在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")
    
  2. 通过scp将本地dpr-ctx-encoder目录上传到Debian服务器:
    scp -r ./dpr-ctx-encoder root@你的服务器IP:/目标保存路径
    
  3. 修改服务器代码,加载本地目录的分词器:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:32:52