克隆PyTorch源码失败替换Git镜像

玖亖伍
2022-05-02 / 0 评论 / 692 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年05月02日,已超过717天没有更新,若内容或图片失效,请留言反馈。

背景

服务器已安装CUDA 11.6, 但是 PyTorch 已公开的包只兼容到 CUDA 11.3, 于是考虑从源码自行编译。但是在clone代码这一步,遇到了大量连接超时问题。

过程

clone PyTorch 代码:

git clone --recursive https://github.com/pytorch/pytorch

这一步遇到连接超时问题比较好解决, 直接使用FastGit镜像替换即可:

FastGit 仅仅是 GitHub 的代理,所以我们仅需要替换远程地址。

于是,将 仓库URL由 https://github.com/pytorch/pytorch 替换为 https://hub.fastgit.xyz/pytorch/pytorch 即可。
但是PyTorch使用了大量的第三方库都是以 submodule 方式导入的, 所以需要根据如下描述直接全局替换GitHub源。

可以直接修改 git 的配置,使用 FastGit 替换所有指向 GitHub 的链接:

git config --global url."https://hub.fastgit.xyz/".insteadOf "https://github.com/"
git config protocol.https.allow always

重新拉取前面失败的 submodule, 进入源码目录,执行如下操作:

git submodule sync
git submodule update --init --recursive --jobs 0

但是有少量 submodule 却不是在GitHub上:
pytorch-pull-submodule-failed.jpg

到这里就卡住了,经过一番搜索,从声网的一篇文章得到了启发:

WebRTC 镜像源
运行以下脚本,替换 git 源

git config --global url.http://120.92.49.206:3232/chromiumsrc/linux-syscall-support.git.insteadOf https://chromium.googlesource.com/linux-syscall-support.git

与前面替换源思路相同,只需要针对极个别的 submodule 源替换即可, 只是这里时针对具体仓库,而非域名。
而且 linux-syscall-support 是在浏览器中科学上网可以正常访问的:
linux-syscall-support.jpg

首先浏览器尝试访问 http://120.92.49.206:3232/chromiumsrc/linux-syscall-support 发现无法访问。
似乎到这里卡住了......稍作思索,想到了曲线救国的方案————利用码云(Gitee)导入 linux-syscall-support 仓库,再将Git地址换为码云的地址:
gitee-import-repo.jpg

经过尝试,发现不得行,虽然之前实践过,Gitee 可以导入 Github 的仓库,但是此刻发现 googlesource 的仓库它却无能为力。
我们通过 FastGit 已经可以畅通无阻地访问 Github 了,那么是否可以利用 Github 导入外部仓库呢? 虽然从没用过 Github 的导入功能, 但是猜测它因该是有这功能的。很快找到了它的导入:
github-import-repo.jpg

稍等几秒就导入完成了:
github-imported.jpg

接着就替换地址:

git config --global url.https://github.com/gsw945/linux-syscall-support.insteadOf https://chromium.googlesource.com/linux-syscall-support

然后重复前面的操作,更新代码

git submodule update --init --recursive --jobs 

很顺利(下图中将github.com替换为了hub.fastgit.xyz):
repo-pull-ok.jpg

至此, PyTorch 源码全部 clone 完成。

参考

2

评论 (0)

取消