Ubuntu深度学习环境配置一箩筐
前言:我从其它专业转到深度学习方向,由于最开始接触的时候缺乏很多计算机方面的系统知识,所以环境配置中常常出现各种问题而不知其所。网上同一个问题往往有多种解决方案而有的可用,有的不可用,最开始只能通过不断尝试探索出解决问题的确切方案,但随着趟过的坑越来越多,也慢慢了解了一些常见问题背后的原因。为了避免自己忘记,方便查找,同时也希望能够帮助到其他和我有相同境况的小伙伴不再将大量时间浪费在信息鉴别与筛查,方案收集与试错上,谨以此记。
1. Ubuntu安装Python3&pip3
1.1 安装基础依赖
sudo apt-get install software-properties-common
1.2 添加源并更新
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
1.3 安装特定版本Python&pip3
sudo apt install -y python3.8
sudo apt install -y python3-pip
1.4 配置软链接
sudo ln -s /usr/bin/python3.8 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
如果软链接已经存在则使用-f参数进行覆盖
1.5 清理apt缓存
apt-get autoclean
apt autoclean
rm -rf /var/lib/apt/lists/*
rm -rf ~/.cache/pip
rm -rf ~/.cache/pip3
2. 打包容器为镜像并推送到DockerHub
2.1 登录DockerHub
docker login
2.2 添加commit
docker commit [ID] [Name]
2.3 打上tag并推送
docker tag [ID] 用户名/仓库名
docker push 用户名/仓库名
2.4 保存docker镜像
docker save -o docker_iamges_name.tar REPOSITORY:TAG
2.5 加载docker镜像
docker load -i docker_iamges_name.tar
3. CUDA安装结束后添加环境变量
export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc
4. Ubuntu解压zip文件
unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
5. NVIDIA驱动版本与CUDA版本对应关系
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
CUDA Toolkit | Toolkit Driver Version | Linux x86_64 Driver Version | Windows x86_64 Driver Version | CUDA 11.6 Update 1 | >=510.47.03 | >=511.65 | CUDA 11.6 GA | >=510.39.01 | >=511.23 | CUDA 11.5 Update 2 | >=495.29.05 | >=496.13 | CUDA 11.5 Update 1 | >=495.29.05 | >=496.13 | CUDA 11.5 GA | >=495.29.05 | >=496.04 | CUDA 11.4 Update 4 | >=470.82.01 | >=472.50 | CUDA 11.4 Update 3 | >=470.82.01 | >=472.50 | CUDA 11.4 Update 2 | >=470.57.02 | >=471.41 | CUDA 11.4 Update 1 | >=470.57.02 | >=471.41 | CUDA 11.4.0 GA | >=470.42.01 | >=471.11 | CUDA 11.3.1 Update 1 | >=465.19.01 | >=465.89 | CUDA 11.3.0 GA | >=465.19.01 | >=465.89 | CUDA 11.2.2 Update 2 | >=460.32.03 | >=461.33 | CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 | CUDA 11.2.0 GA | >=460.27.03 | >=460.82 | CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 | CUDA 11.1 GA | >=455.23 | >=456.38 | CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 | CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 | CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 | CUDA 10.2.89 | >= 440.33 | >= 441.22 | CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 | CUDA 10.0.130 | >= 410.48 | >= 411.31 | CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 | CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 | CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 | CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 | CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 | CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 | CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 | CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
6. 安装pytorch
6.1 v1.8.0+conda
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly -c pytorch
6.2 v1.8.0+pip
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0
pip install torch==1.8.0+cpu torchvision==0.9.0+cpu torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
6.3 v1.7.1+conda
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=9.2 -c pytorch
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.2 -c pytorch
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cpuonly -c pytorch
6.4 v1.7.1+pip
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch==1.7.1+cpu torchvision==0.8.2+cpu torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
7. Dockerfile打包镜像
docker build [OPTIONS] PATH | URL | -
Options 常用参数:
-t : 打包出镜像的名称及标签,通常写法为 name:tag --rm : 构建成功后,删除中间产生的容器。--force-rm=true : 无论是否构建成功,都删除中间产生的容器--no-cache : 构建镜像时不使用缓存。-f : 指定 DockerFile 的路径
8. 安装ssh服务端和客户端
apt-get install openssh-server
apt-get install openssh-client
启动ssh服务和检查启动情况
/etc/init.d/ssh start
ps -e | grep ssh
生成密钥
ssh-keygen
9. 使用MobaXterm本地访问远程tensorboard
9.1 配置MobaSSHTunnel
forward port:本地端口
SSH Server:服务器和SSH端口
Remote Server:localhost
Remote port:6006
9.2 激活相应conda虚拟环境
conda activate tensorboard_NN
tensorboard --log_dir=/path/to/log_dir --host=localhost
9.3 连接远程tensorboard
激活SSHTunnel后在浏览器中输入
127.0.0.1:本地端口
或
服务器ip:6006
即可访问
10. Docker使用
10.1 列出现有镜像列表
docker images
docker image ls
10.2 删除某个镜像
docker rmi repo:tag
11. 安装Nvidia docker
11.1 向库中添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
11.2 更新apt库
sudo apt-get update
Note:如果此时连接不上https://nvidia.github.io,但是服务器可以连接外网,则可能需要设置apt代理,可通过临时设置代理进行安装和更新。
sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:8889/" update
Note:8889为本机代理转发端口
11.3 安装Nvidia docker
sudo apt-get install -y nvidia-docker2
sudo apt-get install -o Acquire::http::proxy="http://127.0.0.1:8889/" nvidia-docker2
11.4 重启Docker服务
sudo systemctl restart docker
12. apt-get代理设置
12.1 通过环境变量设置
export http_proxy=http://127.0.0.1:8000
sudo apt-get update
12.2 通过配置文件设置
Acquire::http::proxy "http://127.0.0.1:8000/";
Acquire::ftp::proxy "ftp://127.0.0.1:8000/";
Acquire::https::proxy "https://127.0.0.1:8000/";
12.3 通过命令行临时设置
sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:8000/" update
13. 在Shell脚本中嵌入Python脚本
#!/bin/bash
python3 - "$@" <<-END
import torch
print('Hello, world!')
END
14. Ubuntu开启和关闭图形界面
sudo systemctl set-default multi-user.target
sudo systemctl set-default graphical.target
sudo shutdown -r now
15. Ubuntu快速安装NVIDIA显卡驱动
ubuntu-drivers devices
sudo apt install nvidia-driver-xxx-server
16. Ubuntu之间传输数据
scp -r user@ip:/path/to/file /path/to/file
17. SSH公钥/私钥免密登录
17.1 服务器端开启密钥登录模式
sudo vim /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
service sshd restart
17.2 客户端生成公私钥
ssh-keygen
此命令会在用户目录/.ssh文件夹下创建公私钥:id_rsa(私钥)、id_rsa.pub(公钥)
17.3 上传公钥到服务器
ssh-copy-id -i user/.ssh/id_rsa.pub user@ip
17.4 将公钥写入到授权文件中
cat >>~/.ssh/authorized_keys<id_rsa.pub
18. Ubuntu弹出移动硬盘
sudo udisksctl power-off -b /dev/sdb
19. 本地访问远程服务器上的jupyter lab
19.1 建立conda环境并安装jupyter lab
conda create -n jupyter python=3.8
conda activate jupyter
pip install jupyter lab
19.2 生成jupyter notebook登录密码
ipython
from notebook.auth import passwd
passwd()
19.3 生成jupyter配置文件
jupyter notebook --generate-config
vim ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.allow_remote_access = True
c.NotebookApp.open_browser = False
c.NotebookApp.ip='*'
c.NotebookApp.port = 8888
c.NotebookApp.password = 'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
- 允许远程访问
- 不使用本地浏览器打开
- IP白名单
- 映射到本地的端口
- 配置密码(上一步的输出字符串)
19.4 服务器运行jupyter
nohup jupyter lab &
19.5 本地使用
在浏览器中输入服务器ip:端口,即可访问
总结
之前本想通过超链接的方式以一篇文章作为目录,链接到其它文章中,没想到可以直接在前面加目录。希望这一箩筐能够帮到大家,我也会不定时更新~
|