基础篇

Ubuntu系统的基本使用

终端基本命令

快捷键ctrl + alt + T打开终端

终端基本使用方法:

$ cd path # 切换到目录
$ ls # 列出当前目录下的文件
$ pwd # 查看当前所在目录
$ cp file path # 文件复制到另一个目录
$ rm file # 删除文件
$ rm -rf path # 删除文件夹
$ touch file # 新建文件
$ mkdir dir_name # 新建文件夹
$ cat file # 查看文件内容(内容为文本的文件)
$ gedit file # 利用gedit文本编辑器编辑文本
$ vim file # 利用vim编辑文本
$ nvidia-smi # 查看当前显卡状态
$ top # 查看当前内存、cpu等使用状态
$ mv filename newfilename # 文件或文件夹的重命名,也可以用来移动文件或文件夹
$ bash file.sh # 执行sh文件
$ tar -zxvf file # 解压文件
$ sudo dpkg -i file # 安装.deb文件(类似windows中的exe文件)
$ chmod 777 file # 开放文件权限
$ chmod 777 -R file # 开放文件夹权限

补充:

.. 代表上级文件夹

Tab 键可自动补全

sudo代表使用管理员权限,当出现permission denied或权限不足提示时,首先尝试在命令前加sudo

需要安装的基本应用

Nvidia显卡驱动

CUDA

CUDNN

Pycharm

Anaconda(或miniconda)

安装过程自行搜索,或者参考我的另一篇博客传送门

实验和代码

实验环境

首先安装好上面的基本应用

pixel2pixel 为例:

# 创建conda环境,环境名为pix2pix,python版本为3.6
$ conda create -n pix2pix python=3.6
# 激活conda环境
$ conda activate pix2pix
# 安装所需的python第三方包,pytorch等
$ conda install pytorch
$ conda install torchvision
$ conda install visdom
$ pip install dominate

然后按照实验的README下载数据集,运行代码等

一些常见问题:

兼容问题

例如pytorch不同版本和tensorflow不同版本之间的函数接口可能不同(pytorch还好,tensorflow这个问题比较严重);python、cuda、cudnn、pytorch、tensorflow等版本互相不兼容等问题

解决:安装对应的版本,以pytorch为例:

# 寻找pytorch所有版本(我在结果里删掉了一部分便于显示)
$ conda search pytorch
Loading channels: done
# Name                       Version           Build  Channel                            
pytorch                        0.4.1  py37ha74772b_0  pkgs/main           
pytorch                        1.0.1 cuda100py27he554f03_0  pkgs/main                     
pytorch                        1.0.1 cuda80py27ha8650f8  pkgs/main           
pytorch                        1.0.1 cuda80py36ha8650f8_0  pkgs/main             
pytorch                        1.1.0 cuda92py36h65efead_0  pkgs/main           
pytorch                        1.1.0 cuda92py37h65efead_0  pkgs/main           
pytorch                        1.2.0 cpu_py27h00be3c6_0  pkgs/main                
pytorch                        1.2.0 cuda92py36hd3e106c_0  pkgs/main           
pytorch                        1.2.0 cuda92py37hd3e106c_0  pkgs/main                    
pytorch                        1.3.1 cpu_py37h62f834f_0  pkgs/main           
       
# 安装对应的版本:
$ conda install pytorch==1.3.1
或
$ conda install pytorch=1.3.1=cpu_py37h62f834f_0

注意到conda search pytorchbuild列中可能会出现cpu…/py…/.cuda…cudnn…等,其含义:

cpu:pytorch是在cpu环境下编译的,安装这种类型的包一般无法使用GPU

py: python版本,例如py37指实在python3.7环境下编译的(python2和python3之间可能会起冲突,一般python2.几内部和python3.几内部影响不大)

cuda: cuda版本,安装后会自动下载cudatookit,可以代替电脑中的cuda使用。例如cuda92代表在cuda9.2环境下编译

cudnn: cudnn版本,安装后自动下载cudnn,可以代替电脑中的cudnn使用。

因此多数情况下的cudnn error、cuda问题等直接通过conda解决更好解决。

cuda问题

cuda爆显存:CUDA out of memory

一般情况下是由于batch-size较大导致的,尝试减小batch-size

如果是因为模型太大,参数量太多,改代码减少参数量或者换去服务器里多调用几块显卡

$ watch nvidia-smi

去观察显存使用情况,如果显存逐渐升高然后爆显存,大多是因为在执行测试或evaluation时没有阻止反向传播,修改测试部分的代码:

with torch.no_grad():
    model.test()

cuda,cudnn版本问题:首先尝试用conda install 去安装不同版本的cudatookit或cudnn,如果失败建议使用docker搭建环境。

cuda和cudatookit的区别

大多数情况下使用cudatookit就足够了,必须使用电脑中的cuda实际是需要使用gcc,g++,nvcc等,例如PointNet++的tensorflow代码中需要使用nvcc编译一部分代码。

有些古老版本的代码会直接和显卡冲突

没找到解决方案,感觉无解……

实验室还有几块1080Ti的显卡,借着用一下

看代码、修改代码

初学建议使用Pycharm中的debug逐行看代码,观察代码的运行过程。

可以参考这篇文章——> 传送门

在pycharm中运行和debug代码需要提前配置好python环境:

File————> Settings————> Project Interpreter————> 小齿轮————> Add————>Conda environment————> Existing environment————> 更改Interpreter的位置

注: ununtu中默认的conda环境位置为:/home/username/anaconda3/envs/envname/bin/python

服务器的使用

详细使用教程见另一篇博客 传送门

进阶篇

科学上网

上外网下载数据集,可以找机场节点(一般是用ssr代理),对应的客户端为:

windows: shadosocksR

ubuntu: electron-ssr

mac: ShadowsocksX-NG-R

有些机场也有v2ray代理的节点,对应客户端为:

Windows:·v2rayN
Mac:v2rayU
Linux:v2rayL

我自搭的v2ray节点分享出来(速度一般):

vmess://ewogICJ2IjogIjIiLAogICJwcyI6ICJ3dWxhYmluZ19jbG91ZC56YXNldmVuemFlaWdodC50b3AiLAogICJhZGQiOiAiY2xvdWQuemFzZXZlbnphZWlnaHQudG9wIiwKICAicG9ydCI6ICI1NTU1IiwKICAiaWQiOiAiMjVjNTc3NWItYTdkMi00ZmY5LWJlNjgtMjdjZWE2MjA4NGFiIiwKICAiYWlkIjogIjIiLAogICJuZXQiOiAid3MiLAogICJ0eXBlIjogIm5vbmUiLAogICJob3N0IjogImNsb3VkLnphc2V2ZW56YWVpZ2h0LnRvcCIsCiAgInBhdGgiOiAiLzkwMTBiNzllLyIsCiAgInRscyI6ICJ0bHMiCn0K

复制后,在v2ray客户端中导入

注: ssr的作者被请去喝茶了,现在ssr已经不再更新,并且ssr容易被监测到,推荐使用v2ray。

利用Git进行版本控制

基本命令参考另一篇博客 传送门

利用tensorboardX进行结果可视化:

参考: ref1.

ref2.

利用Docker搭建环境,防止冲突

当环境问题和系统的cuda版本、cudnn版本,以及一些内核文件冲突时,推荐使用Docker。

Dockerhub

参考

利用Neptune调参、模型可视化等

ref

Neptune