问题描述
最近在使用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搜寻一番:
我以为是huggingface_hub需要认证你的身份信息,于是我在huggingface官网设置了access token(这里有个参考),并在命令行上输入:(需要安装huggingface_hub)
huggingface-cli login
出现如下界面,粘贴进去你的access token即可,很可惜,还是登陆不上,报错:(后来想想你要是能身份认证讲道理应该也能下载,下个数据而已)
非常重要!!!重点来了!!!
报错信息中有个很关键的点:
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文件,定位到下图的位置:
改成图中的样子即可!(即注释掉那三行换成下面的三行)
重新运行,成功了!!!!!!!
文章的评论区还给到了另一种即插即用方法大家也可以去尝试!!!这里是一劳永逸的方法。更多原理也请参考他!!!解决完上述问题之后,使用此方法后从huggingface上下载东西都不会有问题了!!!非常方便!!!
再次鸣谢
【日常踩坑】从 SSLEOFError 到正确配置 Proxy文章来源:https://www.toymoban.com/news/detail-755745.html
感言
身为计算机科学与技术的学生连这个问题都无法解决实在是太难过了,知识一定要学精啊!希望自己以后继续努力!努力专研!文章来源地址https://www.toymoban.com/news/detail-755745.html
到了这里,关于huggingface(_hub)下载load报错ConnectionError: Couldn‘t reach ‘fusing/fill50k‘ on the Hub (SSLError)解决指南!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!