Baseline实验环境准备

发布时间 2023-07-17 21:13:18作者: 智子lock

实验Baseline环境搭建准备

为了尽快地写成论文初稿,首先需要把实验完成。先将待做实验按几个方面分类:

  • 数据集
    • GLUE数据集
  • 任务
    • SST
  • 模型
    • Transformer
    • Bert
  • 评价指标
    • BLEU
    • BERT Similarity
    • Bit Rate

对于GLUE数据集以及其对应的相关任务,我还有点懵逼,在网上也找不到Transformer+GLUE这样的关键字组合形成的项目实例,因此我决定先从模型入手,先准备一个组装好的BERT模型,如果能运行,再试着调换它用的数据集,接下来再改动它的内部结构。
在经过一些斟酌后,我认为还是应该使用IKRQ这篇文章提供的源码,并在其源码基础上,做数据集和模型的改动。
在搭建实验环境的过程中,我把遇到的问题都记录下来并整理,方便日后分析。

第一个问题

在将原来的代码发送到ubuntu服务器上后,直接运行报了这样的错误:

RuntimeError: cublas runtime error: the GPU program failed to execute at /opt/conda/conda-bld/pytorch_1525909934016/work/aten/src/THC/THCBlas.cu:249

参考博客[1]的解决方案。
首先,用下述代码

import torch
print(torch.version.cuda)

查看到该版本torch里cuda的版本是9.0.176.
随后,使用在Ubuntu命令行里输入

nvidia-smi

发现CUDA版本是11.4,说明二者并不匹配。
因此去官网[2]下载对应版本的torch。

第二个问题

当我去官网查找CUDA版本是11.4的pytorch时,发现pytorch的版本直接从11.3跳过到了11.5,没有11.4版本的。但我又不敢直接装一个,害怕那样行不通。经过百度查找答案,找到了一篇解决方案[3]。上面说可以下载pytorch 1.12对应CUDA11.3版本的,指令为

conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch

第三个问题

当下载完最新的torch后,base里的torch版本变了,但是我自创环境下的torch版本并没有改变,因此需要把它的版本转变为gpu版。
我采用了一个比较笨的方法,就是在自创环境glue下再下载一次。

第四个问题

解决了前三个问题后,当我再次运行时,还是报错,错误信息如下:

RuntimeError: Numpy is not available

一开始我以为是没有装numpy包,但是当我检查时发现是装了的。经过百度查找答案[4],发现是忽略了Pytorch与Tensorflow的直接关联性。如果环境中只有torch而没有tensorflow,那么torch使用到的tensor变量将失去tensor相关的操作函数,亦如torch.numpy()。
因此,重新在环境中装上tensorflow。当装完以后,重新运行代码时,报了如下错误:

ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy in ['/home/xinke909/anaconda3/envs/glue/lib/python3.6/site-packages/numpy']. One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this version.

看起来像是numpy版本太低,通过百度解决方案[5],虽然我认为我的问题和他的问题原因不同,但是他的解决方案是适用于我的。于是我卸载了我现有的numpy后

pip uninstall numpy

重装了一遍numpy

 pip install numpy

现在程序终于能运行了。并且发现其速度很快,看来GPU带来的提升确实很大。

问题总结

主要的问题在于:pytorch是分cpu版本和gpu版本的,以前我用的macbook跑代码,它只有cpu,所以在上面的torch版本是适配的cpu。而在服务器上跑,肯定是要用gpu的,所以需要gpu版本的torch。
同时,gpu版本的torch,它的cuda版本还要和显卡的cuda版本适配,在这方面需要根据显卡的cuda去下载对应版本的torch,比较麻烦。

Tips

  • Ubuntu + Vscode + Conda
    在ubuntu里,打开vscode后,vscode的python是base环境,要将其改为自己的环境的话,在键盘上按ctrl+shift+p,然后输入Python:Select Interpreter,点击后下拉查找,即可更换到自己对应的环境。
  • 查看ubuntu版本信息(比如我的目前是ubuntu 20.04)
    命令行输入cat /proc/version
  • 查看Ubuntu显卡
    命令行输入sudo lshw -C display
  • 查看Ubuntu显卡CUDA版本
    命令行输入nvidia-smi
    我使用的服务器显卡为GeForce RTX 2080 SUPER。
  • 查看cuda是否可用
import torch
print(torch.cuda.is_available())

参考网站

[1] https://blog.csdn.net/mrjeremy/article/details/124883431
[2] https://download.pytorch.org/whl/torch_stable.html
[3] https://blog.csdn.net/qq_39779233/article/details/127395572
[4] https://blog.csdn.net/weixin_40923064/article/details/119081081
[5] https://blog.csdn.net/weixin_45459911/article/details/105004456