代码复现问题以及解决

问题

  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

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

### 代码复现常见问题解决方案 #### 配置文件引起的漏洞利用风险 在某些情况下,即使采取了一定的安全措施,仍然可能存在安全风险。对于`log4j2`漏洞而言,尽管官方提供了相应的补丁和更新建议,但如果配置不当或者未能及时升级到安全版本,则可能继续面临攻击威胁[^1]。 针对此类情况,应当严格按照官方文档指导调整应用系统的日志框架设置,并定期审查现有环境中的依赖库状态以确保其安全性。 #### 库函数变更引发的兼容性错误 当尝试重现一篇关于图像处理的研究成果时遇到了如下异常:“AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS'”。这主要是因为从Pillow v10.0.0起移除了对旧版抗锯齿算法的支持[^2]。 为了使原有代码能够正常运行,在不改变原意的前提下可采用替代方案来实现相同效果: ```python from PIL import Image image = image.resize( ( int(image.size[0] * (64 / image.size[1])), 64 ), Image.LANCZOS # 使用更先进的重采样滤波器代替已废弃属性 ).convert('L') ``` 通过上述修改不仅解决了当前报错问题,同时也提高了图片缩放质量。 #### 数据集差异带来的实验偏差 不同研究者所使用的数据源往往存在细微差别,这些变化可能会导致模型训练结果有所波动。因此,在进行代码移植前应仔细核对输入样本特征是否一致;必要时还需重新收集或预处理原始素材以便更好地匹配目标场景需求。 #### 运行环境搭建困难 由于软件包版本迭代速度快以及跨平台特性等原因,有时很难找到完全相同的开发条件来进行验证工作。此时推荐创建虚拟隔离空间(如Docker容器),并依据项目说明精确指定所需安装组件清单,从而减少外部干扰因素影响最终结论准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值