ValueError: Connection error, and we cannot find the requested files in the cached path. Please try.

ValueError: Connection error, and we cannot find the requested files in the cached path…

Please try again or make sure your Internet connection is on.
在试图复现一篇论文的代码的时候遇到了上面这个问题。

  1. 这个项目是我从作者的公布的github上面下载下来的,所以代码本身应该没有什么问题。报错的源代码如下,起初是186行报错,错误信息也是标题这个:
    在这里插入图片描述

  2. 在百度上面一番搜索,觉得就是连外国网站下模型网不好,下不下来报错。因此,我把原模型:bart-large从镜像网站中下载到了本地,再上传到服务器该项目下的对应位置,具体如图:
    在这里插入图片描述

  3. 图片里面这个bart-large就是下载的模型。里面包括了模型的所有的文件(原文我也不知道会用到哪些,就把镜像网站上该模型的全部文件都下下来了)。包含的文件如下图:
    在这里插入图片描述

  4. 然后我将项目源代码中报错的186行,改为了实验室服务器上面保存该模型的位置,如下:
    在这里插入图片描述

  5. 在这里,我把原来的代码注释了,增加了model_path,保存的就是服务器上模型的位置,直接在AutoTokenizer.from_pretrained函数里面传入模型绝对路径。将参数cache_dir也改为模型的缓存路径(这个缓存路径是我新建的,放在项目目录里面)。我在服务器上的整个项目的目录结构如下:
    在这里插入图片描述

  6. 其中bart-large(保存我下载的bart-large模型)、bart-large-cache(我新建的模型缓存路径)、testpy.py、test.txt是我建的,其他就是项目作者原有的。testpy.py、test.txt这两个文件没什么用,就是我自己用来复现代码的时候测试导包有没有问题,路径对不对之类的。然后根据作者README中的说明运行代码,结果还是报错,而且是换了一个地方报错。。。错误信息如下:
    在这里插入图片描述

  7. 还是同样的错误,但是报错的原代码变成了207行,如下:
    在这里插入图片描述

  8. 这又是什么???

  9. 害,总之研究了整整3个小时后,我找到了报错的原因,里面那个model_args.model_name_or_path指的模型是要加载的预训练模型,其实需要下载一些数据集及对应的基础模型作者已经在README里面说了,只是我没注意这里,之后我把需要的模型下下来,放到对应位置,如下:在这里插入图片描述11

  10. 图中每个数据集下面的i_feature和xx_stage1就是需要自己去下载下来放在对应位置的(如果在服务器跑的话,记得服务器上面也要更新上去)。作者在README中的说明如下:在这里插入图片描述

  11. 又是被自己折腾的一天,之后代码就能正常运行,不报这个错误了。

  12. 醉了,又报了另一个错:

  13. RuntimeError: cuDNN error: CUDNN_STATUS_VERSION_MISMATCH
    在这里插入图片描述
    于是查看一下当前我的虚拟环境中cuda和cudnn的版本,参考链接:https://blog.csdn.net/Wzh49115/article/details/126637772

得到如下结果:
在这里插入图片描述
在这里插入图片描述
奇怪,之后参考这个查看,得到的版本还不一样!!
https://blog.csdn.net/Wzh49115/article/details/126637772
在这里插入图片描述

所以到底哪个是真实的??
再看看cuda与cudnn是否匹配:
看完之后,猜测可能是两个版本不匹配的问题,所以更换cudnn版本(因为作者指定了cuda版本,换不了)
查看版本匹配链接:
https://developer.nvidia.com/rdp/cudnn-archive
然后,我在对应的虚拟环境中使用nvcc -V查看cuda版本,结果又是另一个版本,如下图:
在这里插入图片描述
所以,这个nvcc -V查看的版本与之前的查看的11.7版本到底哪个是对的。通过一番搜索,网友说可能是nvcc指向的是系统默认的cuda,我也懒得折腾了。
于是通过conda list查看cudnn,(我之前安装cudnn是用conda安装的),然后直接通过conda uninstall cudnn卸载当前虚拟环境中的cudnn。

接下来,要安装与当前cuda匹配的cudnn,
在这里插入图片描述
当前torch为1.13.1+cu117,cuda为11.7,对应需要cudnn。
绝望,当我上面卸载了cudnn后,查看cudnn,竟然还能用???
在这里插入图片描述

谢天谢地,总算跑通了!!!
在这里插入图片描述
在这里插入图片描述
跑这一个数据集,花了26分钟。

这个代码看起来已经很完整了,不过还是有一些可以改进的地方: 1. 在文件路径中使用“\\”或者“/”代替“\”,因为“\”是转义字符,容易出现错误。 2. 可以添加一些输入输出路径的提示信息,方便用户操作。 3. 可以添加一个函数来判断文件是否存在,避免代码重复。 4. 可以将代码分解成多个函数,提高代码的可读性和可维护性。 下面是一个改进版本的代码,你可以参考一下: ```python import os def check_file(file_path): if not os.path.exists(file_path): print("Error: File does not exist! ({})".format(file_path)) return False return True def read_file(file_path): try: with open(file_path, "r", encoding="utf-8") as f: lines = f.readlines() return lines except: print("Error: Failed to read file! ({})".format(file_path)) return None def replace_seq_id(fasta_file, new_id_file, output_file): if not check_file(fasta_file): exit() if not check_file(new_id_file): exit() new_ids = read_file(new_id_file) if new_ids is None: exit() lines = read_file(fasta_file) if lines is None: exit() new_lines = [] for line in lines: if line.startswith(">"): # 获取当前id在新id列表中的索引 id_str = line.strip().lstrip(">") if id_str.isdigit(): index = int(id_str) - 1 else: try: index = new_ids.index(id_str) except ValueError: print("Error: Id not found in new id file! ({})".format(id_str)) exit() # 替换为新id new_lines.append(">{}\n".format(new_ids[index].strip())) else: new_lines.append(line) # 将替换后的fasta文件写入新文件 with open(output_file, "w") as f: f.writelines(new_lines) if __name__ == "__main__": fasta_file = input("Please input fasta file path: ") new_id_file = input("Please input new id file path: ") output_file = input("Please input output file path: ") replace_seq_id(fasta_file, new_id_file, output_file) ``` 这个版本的代码中,添加了三个函数分别用来检查文件是否存在、读取文件内容和替换序列ID。在主函数中,通过输入文件路径来执行替换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值