pytorch2.0,号称可以缩短训练时间30%到75%,着实让人感到兴奋。花了几个小时尝试2.0版本,中间发现一些问题,记录下来。
1.按照pytorch官方教程进行,我是cuda11.7,所以
pip3 install numpy --pre torch torchvision torchaudio --force-reinstall --extra-index-url https://download.pytorch.org/whl/nightly/cu117
(一开始,用的 Mark Saroufim Blog的方法。安装不成功。)
2.安装成功后按照教程,改一下模型:
for n in self.net_list:
net = getattr(self,n)
net.cuda(gpu_id)
if config['using_PT2']:
net = torch.compile(net,backend="inductor")
# net_opt = torch.compile(net,backend="inductor")
setattr(self,n,net)
官方说其inductor的backend是最优的。
3.编译,中间碰到报链接错误的-lcuda 无法找到。看了一下我的系统是ubuntu18.04,libcuda.so安装在/usr/local/cuda/lib64/stubs下。把libcuda.so 拷贝到/usr/local/lib下面,就好了。也尝试了修改/etc/ld.so.conf.d/下的,增加/usr/local/cuda/lib64/stubs/,但是会导致cuda库异常,nvidis-smi报错。
4.实际测试,可能我的模型比较复杂,实际测试只缩小了10%不到的训练时间。用的是rtx3090,单卡。跑的卷积神经网络。我的网络分成了不同的子模型。可能是这个的原因?不想改代码。就先这样吧。