背景
服务器已安装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上:
到这里就卡住了,经过一番搜索,从声网的一篇文章得到了启发:
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 是在浏览器中科学上网可以正常访问的:
首先浏览器尝试访问 http://120.92.49.206:3232/chromiumsrc/linux-syscall-support
发现无法访问。
似乎到这里卡住了......稍作思索,想到了曲线救国的方案————利用码云(Gitee)导入 linux-syscall-support 仓库,再将Git地址换为码云的地址:
经过尝试,发现不得行,虽然之前实践过,Gitee 可以导入 Github 的仓库,但是此刻发现 googlesource 的仓库它却无能为力。
我们通过 FastGit 已经可以畅通无阻地访问 Github 了,那么是否可以利用 Github 导入外部仓库呢? 虽然从没用过 Github 的导入功能, 但是猜测它因该是有这功能的。很快找到了它的导入:
稍等几秒就导入完成了:
接着就替换地址:
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
):
至此, PyTorch 源码全部 clone 完成。
评论 (0)