huggingface(_hub)下载load报错ConnectionError: Couldn‘t reach ‘fusing/fill50k‘ on the Hub (SSLError)解决指南!

问题描述

最近在使用hugging face跑基于controlnet的微调stable diffusion实验,需要跑通example/controlnet/train_controlnet,py的官方案例,在程序的第590行有如下代码:

dataset = load_dataset(
            args.dataset_name,
            args.dataset_config_name,
            cache_dir=args.cache_dir,
        )

这实际上是需要从huggingface的dataset中下载fill50k数据集,即转化为如下代码:

from datasets import load_dataset
dataset = load_dataset("fusing/fill50k")

等待一会,报错:

ConnectionError: Couldn't reach "fusing/fill50k" on the Hub (ConnectionError)

很明显这是网络连接问题,无法访问外网。于是科学上网打开,重新运行,又报错:

ConnectionError: Couldn't reach "fusing/fill50k" on the Hub (SSLError)

这种错误查了一圈,都没有很好的解决办法:包括:
1、手动在浏览器下载保存至本地(在本地又不知道如何用load_dataset函数加载本地数据,试了好几次都失败了)
2、在pycharm配置代理,如这篇文章,并没有解决,还是报上面的错误。

解决历程

我开始重新审视这个问题,即报错中的“SSLError”。经chatgpt搜寻一番:
chatgpt给到的结果
我以为是huggingface_hub需要认证你的身份信息,于是我在huggingface官网设置了access token(这里有个参考),并在命令行上输入:(需要安装huggingface_hub)

huggingface-cli login

出现如下界面,粘贴进去你的access token即可,很可惜,还是登陆不上,报错:(后来想想你要是能身份认证讲道理应该也能下载,下个数据而已)
huggingface_hub登录报错
非常重要!!!重点来了!!!
报错信息中有个很关键的点:

urllib3

以及:

SSLEOFError: EOF occurred in violation of protocol (_ssl.c:1129)

看起来似乎是开了科学上网之后,python里面urllib3中request请求中的代理并没有配置好!!!经过一番搜寻查找,在这篇文章里找到了解决办法!感谢大佬!!!
具体的,打开:

D:\software\anaconda\envs\python39_pytorch1.10\Lib\urllib\request.py

请对应找到自己的文件路径!打开这个request.py文件,定位到下图的位置:
request.py
改成图中的样子即可!(即注释掉那三行换成下面的三行)

重新运行,成功了!!!!!!!
成功下载huggingface fusing/fill50k数据集
文章的评论区还给到了另一种即插即用方法大家也可以去尝试!!!这里是一劳永逸的方法。更多原理也请参考他!!!解决完上述问题之后,使用此方法后从huggingface上下载东西都不会有问题了!!!非常方便!!!

再次鸣谢

【日常踩坑】从 SSLEOFError 到正确配置 Proxy

感言

身为计算机科学与技术的学生连这个问题都无法解决实在是太难过了,知识一定要学精啊!希望自己以后继续努力!努力专研

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值