「炼丹」AutoDL炼丹日记

题外话
讲下博主为啥选择 AutoDL,其实最开始的时候,博主有一台2070和3080Ti,但是 显存都略小,一个8G一个12G,对于稍微大点的模型,Batchsize都很小,复现论文效果很都难,特别是在自己小论文需要的时候,就真的很缺设备。没办法,老师没钱,自己也买不起,只能将目光转移至云服务,对比了阿里云、腾讯云、百度云、华为云等,价格都贵的离谱,一小时动辄20+,一天下来就400+了,太贵太贵,一篇论文下来,都可以买两台显卡了。此外还有Colab 等云服务,不过没怎么体验过。当然了,如果小伙伴们用的是Paddle的话,必须推荐百度的 Ai Studio,可以免费试用,而且Paddle的架构和Pytorch的大体一致,学习起来也快,还是很推荐的。
最后就是AutoDL,虽然之前听说过,但是没使用过,好在,在我困惑的时候,同组的一个小伙伴给我推荐了一次,然后就马上注册体验了下,价格是真的便宜,就拿3090来说,一小时才1.5左右,一天下来也才40左右,比其他云顺眼多了,特别是学生党,简直就是我们的福星。而且上面有专门的教程,一般的问题都可以查到,而且使用也是方便的,本身提供20G的系统盘,可以用来放代码相关的数据,数据盘有50G,一般的数据集都是够用的,环境而是安装好的,可以直接上手用。

点击链接注册体验 https://www.autodl.com/ ,新人还有10元的体验券

在这里插入图片描述


1、解压数据集

博主用的数据集是 COCO2017,在AutoDL中的路径是 /root/autodl-pub/COCO2017 ,系统盘只有20G,如果将数据集解压到系统盘的话,很可能会报错 disk quota exceeded(超出磁盘配额)。因此,我们将数据集解压至AutoDL提供的 数据盘 /root/autodl-tmp

AutoDL本身收集了常见的数据集,在/root/autodl-pub/路径下,而且不算在数据盘空间

在这里插入图片描述

cd /root/autodl-pub
unzip -d /root/autodl-tmp/  ann*.zip
unzip -d /root/autodl-tmp/  val*.zip
unzip -d /root/autodl-tmp/  test*.zip
unzip -d /root/autodl-tmp/  train*.zip
#1、把文件解压到当前目录下
unzip test.zip

#2、如果要把文件解压到指定的目录下,需要用到-d参数。
unzip -d /temp test.zip

#3、解压的时候,有时候不想覆盖已经存在的文件,那么可以加上-n参数
unzip -n test.zip
unzip -n -d /temp test.zip

#4、只看一下zip压缩包中包含哪些文件,不进行解压缩
unzip -l test.zip

#5、查看显示的文件列表还包含压缩比率
unzip -v test.zip

#6、检查zip文件是否损坏
unzip -t test.zip

#7、将压缩文件test.zip在指定目录tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
unzip -o test.zip -d /tmp/

2、压缩文件夹

AutoDL虽然提供了上传下载的功能,但是下载只对单个的文件有效,对于文件夹则是无法使用,因此,就需要对文件夹进行压缩后,在下载到本地了

  1. 使用zip打包文件夹,代码为
zip -r -q -o pack.zip mark/

上面命令将目录 mark/ 下的所有文件,打包成一个压缩文件,并查看了打包后文件的大小和类型。第一行命令中,
-r 参数表示递归打包包含子目录的全部内容,
-q 参数表示为安静模式,即不向屏幕输出信息,
-o,表示输出文件,需在其后紧跟打包输出文件名。

  1. 使用【-e】参数可以创建加密压缩包,代码为
zip -r -e o pack.zip mark/

接着输入两次密码就可以了


2、配置conda 环境

AutoDL配有Miniconda,并且使用显卡运行情况下,Miniconda是调用CUDA版本的Pytorch,大家不需要单独安装,毕竟安装期间也是收费的。

AutoDL 默认情况下是没有创建环境的,需要我们单独创建自己的环境,但是!创建完环境之后,并不能直接使用,如果直接进入环境的话,则会出现如下的错误

在这里插入图片描述
这个错误是因为我们没有初始化 conda 所造成的,首先我们需要通过 echo $SHELL 命令查看,系统默认的 shell 是哪个,然后再通过 conda init bash && source /root/.bashrc 命令进行初始化 conda ,初始化完之后,会给出一些AutoDL 的系统信息,到此即可

# 查看系统所使用的 shell
echo $SHELL

# 初始化 conda
conda init bash && source /root/.bashrc

在这里插入图片描述

然后就可以自行安装一些自己所需要的库了。AutoDL 已经帮忙安装好好 对应版本的Pytorch、torchvision等库了,无需重复安装

在这里插入图片描述


3、监控显卡信息

在win系统上面,博主一般是直接查看「任务管理器里面的性能」,进行对GPU信息的查看。但是任务管理器里面只能对GPU的内存、温度、占用率等信息监视,不能够详细。且此方法只能够在win系统上面使用,Linux上面无法使用。

那么在Linux系统上面个人是比较推荐使用 nivtop 库的,可以通过 pip install nvitop 直接进行安装,安装完之后在 终端输入 nvitip 即可,下图是监视界面。

nvitop 不仅可以在 Linux系统上面使用,也可以在 win系统上面使用,使用方法一样

在这里插入图片描述

除了使用nvitop 还可以使用 nvida-smi 命令进行查看

nvidia-smi:查看当前的显卡使用
nvidia-smi -L:列出所有显卡的信息
nvidia-smi -l 2:动态显示显卡使用信息,每一秒更新一次,参数值可以自己修改
nvida-smi -lms:循环动态显示
nvidia-smi dmon:设备监视(device monitor)
nvidia-smi -i n:显示指定的显卡(如果你有多块显卡,n的值对应显卡的位置)

通过 nvidia-smi -l 2 命令实时显示时,会在终端不断输出监控信息,个人觉得不如 nvitop 等价清晰简约


4、Tensorboard 监控

AutoDL 提供 tensorboard 监控,只是需要将日志信息放置在 /root/tf-logs 否则无法调取 tensorboard
在这里插入图片描述

cp -r ./runs/Nov22-16-54\ resnet101_evolution_head_COCO\ 2017/ /root/tf-logs/

cd /root
tensorboard --logdir=tf0logs

5、安装 CUDA/cuDNN

这一部分是AutoDL已经安装好的,在此只是记录下,便于日后自己需要

如果AutoDL安装的PyTorch和CUDA版本不是我们需要的,需要单独安装时,首先可以在AutoDL 中选择 Miniconda/CUDA=1x.x 的平台镜像,迫不得已的情况下再自行安装

Pytorch 与 CUDA 有对应要求,如Pytorch=1.9.0 需要CUDA=11.1


查询默认CUDA/cuDNN版本

通过 nvidia-smi 查看到的 CUDA信息,上面的驱动版本是安装的最高版本,并不代表实例安装的就是CUDA版本

终端中执行查看默认镜像自带的CUDA版本(安装目录为/usr/local/):

查询平台内置镜像中的cuda版本
$ ldconfig -p | grep cuda
        libnvrtc.so.11.0 (libc6,x86-64) => /usr/local/cuda-11.0/targets/x86_64-linux/lib/libnvrtc.so.11.0
        libnvrtc.so (libc6,x86-64) => /usr/local/cuda-11.0/targets/x86_64-linux/lib/libnvrtc.so
        libnvrtc-builtins.so.11.0 (libc6,x86-64) => /usr/local/cuda-11.0/targets/x86_64-linux/lib/libnvrtc-builtins.so.11.0

查询平台内置镜像中的cudnn版本
$ ldconfig -p | grep cudnn
        libcudnn_ops_train.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8
        libcudnn_ops_train.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so
        libcudnn_ops_infer.so.8 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8
        libcudnn_ops_infer.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so

上边的输出日志.so后的数字即为版本号。如果你通过conda安装了cuda那么可以通过以下命令查看:

$ conda list | grep cudatoolkit
cudatoolkit               10.1.243             h6bb024c_0    defaults
$ conda list | grep cudnn
cudnn                     7.6.5                cuda10.1_0    defaults

安装其他版本的CUDA/cuDNN

方法一:使用conda进行安装

优点:简单
缺点:一般不会带头文件,如果需要做编译,则需要照方法二安装

方法:

$ conda install cudatoolkit==xx.xx
$ conda install cudnn==xx.xx

如果你不知道版本号是什么那么可以搜索:

$ conda search cudatoolkit
Loading channels: done
# Name                       Version           Build  Channel             
cudatoolkit                      9.0      h13b8566_0  anaconda/pkgs/main  
cudatoolkit                      9.2               0  anaconda/pkgs/main  
cudatoolkit                 10.0.130               0  anaconda/pkgs/main  
cudatoolkit                 10.1.168               0  anaconda/pkgs/main  
cudatoolkit                 10.1.243      h6bb024c_0  anaconda/pkgs/main  
cudatoolkit                  10.2.89      hfd86e86_0  anaconda/pkgs/main  
cudatoolkit                  10.2.89      hfd86e86_1  anaconda/pkgs/main  
cudatoolkit                 11.0.221      h6bb024c_0  anaconda/pkgs/main  
cudatoolkit                   11.3.1      h2bc3f7f_2  anaconda/pkgs/main

方法二:下载安装包安装

CUDA下载地址:https://developer.nvidia.com/cuda-toolkit-archive

安装方法:

下载.run格式的安装包后:
$ chmod +x xxx.run   # 增加执行权限
$ ./xxx.run          # 运行安装包

cuDNN下载地址:https://developer.nvidia.com/cudnn


安装方法:

先解压, 后将动态链接库和头文件放入相应目录

$ mv cuda/include/* /usr/local/cuda/include/
 $ chmod +x cuda/lib64/* && mv cuda/lib64/* /usr/local/cuda/lib64/

安装完成以后,增加环境变量:

$ echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:${LD_LIBRARY_PATH} \n" >> ~/.bashrc
$ source ~/.bashrc && ldconfig

提示:
默认镜像都内置了最原生的CUDA和cuDNN,如果自己安装了cudatoolkits等,那么一般会默认优先使用conda中安装的cudatoolkits,



结尾

最后,如果小伙伴也觉得AutoDL不错的话,可以点击链接注册体验下https://www.autodl.com/ 。通过邀请注册,还可以获得 10元代金券,相当于可以免费试用10元。觉得不错的话,再充值使用,毕竟薅羊毛的地方越来越少了。

猜你喜欢

转载自blog.csdn.net/ViatorSun/article/details/127385170