调用SentenceTransformer('sentence-transformers/sentence-t5-base')时遇SSL错误
解决Hugging Face模型下载时的SSL证书验证失败问题
问题场景
在seclab虚拟机的Python 3.8终端执行以下代码:
from sentence_transformers import SentenceTransformer st_model = SentenceTransformer('sentence-transformers/sentence-t5-base')
触发如下SSL证书验证错误:
File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.8/site-packages/sentence_transformers/SentenceTransformer.py", line 87, in __init__ snapshot_download(model_name_or_path, File "/usr/local/lib/python3.8/site-packages/sentence_transformers/util.py", line 442, in snapshot_download model_info = _api.model_info(repo_id=repo_id, revision=revision, token=token) File "/usr/local/lib/python3.8/site-packages/huggingface_hub/utils/_validators.py", line 94, in _inner_fn return fn(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/huggingface_hub/utils/_deprecation.py", line 98, in inner_f return f(*args, **kwargs) File "/usr/local/lib/python3.8/site-packages/huggingface_hub/hf_api.py", line 1283, in model_info r = requests.get( File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 73, in get return request("get", url, params=params, **kwargs) File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 59, in request return session.request(method=method, url=url, **kwargs) File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 701, in send r = adapter.send(request, **kwargs) File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 563, in send raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /api/models/sentence-transformers/sentence-t5-base (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1131)')))
已尝试以下方法但未解决:
- 方法1:
import ssl ssl._create_default_https_context = ssl._create_unverified_context
- 方法2:
import os os.environ["CURL_CA_BUNDLE"] = ""
可行解决方案
方法1:下载模型时显式禁用SSL验证
直接在模型下载环节指定跳过SSL验证,再从本地路径加载模型:
from huggingface_hub import snapshot_download from sentence_transformers import SentenceTransformer # 下载模型并禁用SSL验证 model_local_path = snapshot_download( 'sentence-transformers/sentence-t5-base', verify=False ) # 从本地路径加载模型 st_model = SentenceTransformer(model_local_path)
方法2:设置Hugging Face Hub专属环境变量
在终端执行Python代码前,先设置环境变量跳过SSL验证:
export HF_HUB_DISABLE_SSL_VERIFICATION=1
之后再正常运行模型加载代码即可。
方法3:更新系统CA证书(若虚拟机权限允许)
如果虚拟机可以修改系统配置,更新CA证书包以解决自签名证书链问题:
- Debian/Ubuntu系统:
sudo apt-get update && sudo apt-get install ca-certificates sudo update-ca-certificates
- CentOS/RHEL系统:
sudo yum install ca-certificates sudo update-ca-trust extract
更新完成后重新尝试加载模型。
方法4:手动下载模型到本地
若上述方法均无效,可手动从Hugging Face平台下载模型文件包,上传至虚拟机指定目录,然后直接从本地路径加载:
st_model = SentenceTransformer('/your/local/path/to/sentence-t5-base')
内容的提问来源于stack exchange,提问作者Pankaj Mishra
相关产品推荐
相关产品推荐

