问题
- cuda版本不匹配,对于版本不匹配问题真的很难受
- CPU版本还有GPU版本问题
- 包安装,apex加速的安装,transformer版本也会限制python的版本
- 程序运行,如果程序写的是比较好的,那么这个程序给的运行命令,一定要仔细得看,然后更改到自己的目录,目录一定要正确
解决
- cuda已经要按照
nvcc -V
的命令显示的,nvidia-smi
显示的是最高支持的版本,这两个都是你安装的,可以这么理解,nvidia命令是硬件支持的最高的cuda版本,而nvcc命令你可以安装小于这个cuda版本的,例如下图:
(可以看出上面硬件最高支持11.6的cuda,但是安装的是11.0的,这样也是可以的)
但是上面就会引出另一个问题,算力不匹配的问题,例如上面硬件cuda11.6的3090支持的算力是8.6,而安装的cuda11.0的算力支持最高是11.0,可能会出现算力不匹配的问题,所以要在~/.bashrc文件下加上一句,把算力锁一下,当然如果你装的cuda和硬件cuda是匹配的就不用锁了,算力对应表
然后安装torch,按照你安装的cuda,上面是11.0,所以这里要安装1.7.0,可以根据自己安装的去找自己的,在torch历史版本命令集,找到版本对应的命令。vim ~/.bashrc # 在最后一行加上 export TORCH_CUDA_ARCH_LIST="8.0"
找到命令之后,又会出现超时的错误,就是外网的问题,因为我这个是服务器,所以翻不了墙,或者也会遇到没有找到相关版本的问题,这个问题就直接改命令,下面一般会提示还在的版本,经过我的试验,对于我的版本下面命令是可以安装成功的。
如图:# 历史版本会给出conda安装和pip安装 conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=11.0 -c pytorch # 建议用pip安装,但是会出现超时,还有可能会出现没有这个版本的问题 pip install torch==1.7.0+cu110 torchvision==0.8.0+cu110 torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html # 最后运行了上面的命令,但是出现了超时错误,从网上找到相关的包,然后上传到服务器上,下面是安装命令 pip install ./torchaudio-0.7.0-cp37-cp37m-manylinux1_x86_64.whl -i https://mirrors.aliyun.com/pypi/simple/
这里需要注意一下python版本的问题,apex如果要安装也是要python版本对应,给出图示,这里torch版本对应是3.6以上,而apex要python3.7及以上,python3.8又不太适合pytorch1.7.0,会有错误,所以总结一下python用3.7:
- CPU或者GPU的问题,其实都可以,但是GPU比较快,看个人想要用那个,如果运算需求不大,但是数据量大,那就CPU,因为服务器上内存都大,如果需要数据比较少,不会爆GPU内存,那第一选择还是GPU,安装和上面类似,但是也会出现一些问题
# 可能有疑问,为啥torch1.7.1,我也不清楚为啥,CPU版本很多包都没有,只有这个能安装成功,可能小版本没有影响吧 pip install torch==1.7.1+cpu torchvision==0.8.2+cpu torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
- apex的安装
# 服务器上安装 git clone https://github.com/NVIDIA/apex cd apex # 会经过漫长等待,因为要编译,最后会安装成功 pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
- 程序运行命令一定要看github上的命令是怎么运行的,如果不了解,容易出现参数对不上,就是传入多或者少的参数,如果只运行python文件也是不可以的,sh也会出现一些问题,所以最好就是手打命令
# 这个参数就是添加的,如果不加--mask_entity默认值就是False,如果加上值就变成True parser.add_argument('--mask_entity', action='store_true',)
补充问题:包的问题,一般从网上下载的代码,一般都可能会有包依赖问题,就是package包引入的时候会报错,所以一定不要建和项目相同的文件夹,直接从git上clone下来,或者就copy到一个空闲的目录下
后续:因为工作站最后自动升级版本,导致系统开不了机,然后重装了cuda版本,这个时候就需要去重新更新一下配置文件
source ./bashrc
最后发现不锁算力也是可行的,所以最后就没有锁算力