代码复现问题以及解决

问题

  1. cuda版本不匹配,对于版本不匹配问题真的很难受
  2. CPU版本还有GPU版本问题
  3. 包安装,apex加速的安装,transformer版本也会限制python的版本
  4. 程序运行,如果程序写的是比较好的,那么这个程序给的运行命令,一定要仔细得看,然后更改到自己的目录,目录一定要正确

解决

  1. 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是匹配的就不用锁了,算力对应表
    vim ~/.bashrc 
    # 在最后一行加上
    export TORCH_CUDA_ARCH_LIST="8.0" 
    
    然后安装torch,按照你安装的cuda,上面是11.0,所以这里要安装1.7.0,可以根据自己安装的去找自己的,在torch历史版本命令集,找到版本对应的命令。
    在这里插入图片描述
    找到命令之后,又会出现超时的错误,就是外网的问题,因为我这个是服务器,所以翻不了墙,或者也会遇到没有找到相关版本的问题,这个问题就直接改命令,下面一般会提示还在的版本,经过我的试验,对于我的版本下面命令是可以安装成功的。
    # 历史版本会给出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:
    在这里插入图片描述
  2. 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
    
  3. apex的安装
    # 服务器上安装
    git clone https://github.com/NVIDIA/apex
    cd apex
    # 会经过漫长等待,因为要编译,最后会安装成功
    pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
    
  4. 程序运行命令一定要看github上的命令是怎么运行的,如果不了解,容易出现参数对不上,就是传入多或者少的参数,如果只运行python文件也是不可以的,sh也会出现一些问题,所以最好就是手打命令
    # 这个参数就是添加的,如果不加--mask_entity默认值就是False,如果加上值就变成True
    parser.add_argument('--mask_entity', action='store_true',)
    

补充问题:包的问题,一般从网上下载的代码,一般都可能会有包依赖问题,就是package包引入的时候会报错,所以一定不要建和项目相同的文件夹,直接从git上clone下来,或者就copy到一个空闲的目录下

后续:因为工作站最后自动升级版本,导致系统开不了机,然后重装了cuda版本,这个时候就需要去重新更新一下配置文件

source ./bashrc

最后发现不锁算力也是可行的,所以最后就没有锁算力

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值