1. 使用nvcc -V命令查看cuda版本,再在官网选择对应版本的pytorch。(是的不要根据python的版本去选择pytorch指令)
2. 用conda安装pytorch可能一直有cpuonly的玄学问题。(哪怕选择的是CUDA版本的pytorch安装命令)改用pip安装。
3. torchtext不会被顺带安装,要安装完pytorch之后pip安装指定版本的。
4. miniconda下一个的安装包默认是在当前的虚拟环境,可以用conda list查看当前环境已经安装的包。
5. 安装torchtext的时候如果torchtext和pytorch版本不一致,哪怕是第二个小数点后的版本不一致,pytorch也会被重新安装。torchtext 0.9.1 和 pytorch 1.8.1刚好对应。妙哉。
6. 能用pip install 安装就尽量不用 conda install ,因为conda 会“好心”地把已经安装的包也给改成对应版本,这样可能引发新的问题。
7. pip install一个包,若环境中已存在这个包的其他版本(无论高或低),那么会在安装完成后卸载掉。
8. 不要过分迷信官网给的安装指令。pytorch官网中给的安装命令中有的包括torchvision,torchaudio,但是如果不做视觉、声音方面的东西,后面两个包根本没用嘛,比如我做序列处理,需要的torchtext反而没被安装。我先安装torchtext,再安装pytorch才把一篇论文中的模型复现的。
9. 打印CUDA_VISIBLE_DEVICES这个环境变量看看(echo $CUDA_VISIBLE_DEVICES),显示的是你可以用哪几块GPU,如果结果是2,3,那么你在程序中写的gpu_ranks:0实际上是第二块GPU。这也是为什么明明GPU显存看上去很够用,但是报错CUDA out of memory.
比较好的方式是在运行前使用nvidia-smi查看哪几块卡显存充足,再在程序开头加上os.environ["CUDA_VISIBLE_DEVICES"] = '0,1,2,3'