连接Huggingface报requests.exceptions.SSLError错误

embedded/2024/10/21 20:29:26/

最近在学习使用 SHAP 算法解释 BERT 模型的输出结果,然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误,本文用于记录错误类型和解决错误的方法。

1 代码示例

SHAP 官方展示的代码如下:

import datasets
import numpy as np
import scipy as sp
import torch
import transformers
from transformers import BertTokenizer, BertForSequenceClassification
import shap# load a BERT sentiment analysis model
tokenizer = transformers.DistilBertTokenizerFast.from_pretrained("distilbert-base-uncased"
)
model = transformers.DistilBertForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english"
).cuda()# define a prediction function
def f(x):tv = torch.tensor([tokenizer.encode(v, padding="max_length", max_length=512, truncation=True) for v in x]).cuda()outputs = model(tv)outputs = outputs[0].detach().cpu().numpy()scores = (np.exp(outputs).T / np.exp(outputs).sum(-1)).Tval = sp.special.logit(scores[:, 1])  # use one vs rest logit unitsreturn val# build an explainer using a token masker
explainer = shap.Explainer(f, tokenizer)# explain the model's predictions on IMDB reviews
imdb_train = datasets.load_dataset("imdb")["train"]
shap_values = explainer(imdb_train[:10], fixed_context=1, batch_size=2)
shap.plots.bar(shap_values.abs.sum(0))

2 报错详情

在安装好所有相关依赖库后,运行上述代码出现了如下错误:

大致意思是找不到 dataset_info.json 文件,也就是说这个文件没有被成功下载,于是尝试打开科学上网。在开启科学上网后,继续运行代码出现下列关于 SSLError 的错误:

说明网络连接仍然存在问题,无法访问到 Huggingface。在网上搜罗了各种方法后,终于找到了相应的解决方案,亲测有效。

3 解决方案

首先找到目前使用的深度学习环境中的 request.py 文件,例如在我的环境中该文件的路径为:

D:\Anaconda\envs\test\Lib\urllib\request.py

然后通过搜索 proxyServer 关键字定位到下图代码处:

将 else 块中的代码修改为下列代码:

proxies['http'] = 'http://%s' % proxyServer
proxies['https'] = 'http://%s' % proxyServer
proxies['ftp'] = 'http://%s' % proxyServer

修改完的代码如下所示:

重新运行代码(注意继续保持科学上网):

成功下载模型!

4 参考

[1] Welcome to the SHAP documentation — SHAP latest documentation

[2] huggingface(_hub)下载load报错ConnectionError: Couldn‘t reach ‘fusing/fill50k‘ on the Hub (SSLError)解决指南!_dataset hub connectionerror-CSDN博客

[3] 【日常踩坑】从 SSLEOFError 到正确配置 Proxy-CSDN博客


http://www.ppmy.cn/embedded/51205.html

相关文章

Python基础教程(三十一):pyecharts模块

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝💝💝如有需要请大家订阅我的专栏【Python系列】哟!我会定期更新相关系列的文章 💝💝💝关注!关注!!请…

c# 协议数据计算陀螺仪的角度,带符号

subStrL str.Substring((76 - 8), 2); subStrH str.Substring((78 - 8), 2); Data[7] (short)(Convert.ToInt16(subStrH, 16) * 256 Convert.ToInt16(subStrL, 16));//角度X subStrL str.Substring((80 - 8), 2); subStrH str.Subst…

windows设置开机启动项

将文件放到下面路径即可实现每次开机启动 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

机器学习课程复习——ANN

Q:ANN? 基本架构 由输入层、隐藏层、输出层等构建前馈/反馈传播 工作原理 先加权求和:每个神经元的输出是输入加权和的激活再送入激活函数:激活函数的存在使得其能够拟合各类非线性任务 联想:像adaboosting的加权求…

Fastweb - Lua操作SQLite数据库

本文演示FastWeb网站开发中处理SQLite数据库 示例演示如何创建、查询、删除与更新,SQL在文章底部。 local dkjson require("dkjson") local db sqlite_db.new() -- 清空示例 function sqlite_delete()-- 清空数据local ppst db:setsql("DELETE …

MySQL中的客户端选项(四)

用于连接到服务器的传输协议。当其他连接参数通常导致使用的协议不是您想要的协议时,它很有用。 不缓存每个查询的结果,而是实时地打印每一行,如果输出被挂起,这可能会减慢服务器的速度。有了这个选项,mysql就不会使用…

HTTP性能测试工具-wrk

wrk性能测试工具详解 wrk是一款轻量级但功能强大的HTTP基准测试工具,主要用于在单机多核CPU环境下对HTTP服务进行性能测试。它通过利用系统自带的高性能I/O机制(如epoll、kqueue等),结合多线程和事件模式,能够产生大量…

数学建模系列(1/4):数学建模简介

引言 数学建模是将现实中的问题转化为数学语言,通过构建数学模型加以解决的一门强大工具。其应用广泛,涵盖了从工程、金融到生物学等多个领域。本文将详细讲解数学建模的基本概念、历史背景、应用领域、数学建模的步骤,以及一个实际案例。 1.…