Linux服务器配置Python+PyTorch+CUDA深度学习环境
前言
远程链接Linux服务器 - Windows:详见本人另一篇文章,链接 。
本地配置Python+PyCharm+PyTorch+CUDA深度学习环境:详见本人另一篇文章,链接 。
Python安装第三方库:详见本人另一篇文章,链接 。
pip常用命令:详见本人另一篇文章,链接 。
本篇文章介绍如何在Linux服务器上配置Python+PyTorch+CUDA深度学习环境。包含安装Anaconda、Python虚拟环境、配置PyTorch+CUDA环境、服务器使用教程、conda命令、等内容。
配置前需要通过Xshell软件连接到Linux服务器,连接方法详见我的另一篇文章,链接 。
安装Anaconda
详情可见本人的另一篇文章:Linux系统安装Anaconda
此处仅简略介绍。
下载
Anaconda官网:链接 。
个人版下载网址:链接 。
早期版本下载网址:链接 。
安装
使用Xftp软件将Linux版安装包(一般为Linux-x86_64架构的sh文件)传到服务器端,并使用Xshell软件连接到服务器命令行,cd
到安装包所在文件夹,使用bash
命令进行安装,命令如下:
bash [package.sh]
输入命令anaconda -V
可以查看Anaconda的版本。
更新
输入如下命令可更新Anaconda:
conda update anaconda
或将新的Linux版安装包传输到服务器上,cd
到安装包所在文件夹,使用如下命令可以进行Anaconda的更新:
bash -u [package.sh]
Python虚拟环境
详情可查看本人的另一篇文章:创建Python虚拟环境
此处仅简略介绍。
创建Python虚拟环境
安装好Anaconda后,可以通过命令创建Python虚拟环境,命令如下:
conda create -n [venvName] python=[version]
# 示例:
# 创建一个Python版本为3.6的名为py36的虚拟环境
conda create -n py36 python=3.6
查看虚拟环境
若忘记虚拟环境的名称,则可以查看所有虚拟环境名称,找到要进入的虚拟环境名称,命令如下:
conda env list
进入虚拟环境
要使用虚拟环境,需要先激活它,即进入虚拟环境,命令如下:
conda activate [venvName]
# 或
source activate [venvName]
退出虚拟环境
命令如下:
conda deactivate
删除虚拟环境
命令如下:
conda remove -n [venvName] --all
配置PyTorch+CUDA环境
安装显卡驱动
若Linux服务器已经安装好显卡驱动,则无需重复安装,可以通过命令nvidia-smi
查看是否安装显卡驱动,若安装,则效果如下图:
若未安装显卡驱动,则需安装显卡驱动。
NVIDIA官网:链接。
简要流程:在NVIDIA官网搜索指定显卡型号(如,RTX3090)的驱动下载并安装,驱动的版本越新,支持的最高CUDA版本越新(新版本的CUDA要求新版本的驱动,新版本的驱动可以兼容旧版本的CUDA)。
具体安装过程在这里不在详细介绍,因为不是本文的重点,读者可以自行查看其他教程进行驱动安装。
安装CUDA驱动
检测CUDA驱动是否安装,在服务器命令行中输入命令:
nvcc -V
若提示找不到命令,则表示没有安装CUDA驱动,需要安装CUDA驱动。
安装CUDA驱动可查看本人的另一篇文章:Ubuntu安装CUDA驱动 。
查看服务器CUDA版本
在服务器命令行中输入命令:
nvcc -V
此命令可以查看当前CUDA版本.
另外,补充如下命令:
nvidia-smi
此命令可以查看当前显卡驱动允许的最高CUDA版本,效果如下图:
安装PyTorch
一定要安装对应CUDA版本的PyTorch,安装命令点击官网的Get started
查看。
服务器使用教程
查看GPU使用状态
通过nvidia命令查看
系统已安装Nvidia显卡驱动后,可使用以下命令查看GPU状态:
nvidia-smi
输出效果如下:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05 Driver Version: 525.147.05 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:01:00.0 Off | N/A |
| 0% 38C P8 18W / 320W | 160MiB / 16376MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
补充:若想更简洁的查看GPU状态,可使用gpustat命令,介绍如下。
通过gpustat命令查看
首先安装gpustat:
作为系统包进行安装(推荐)
sudo apt install gpustat
作为Python库进行安装
pip install gpustat
pip安装需要添加环境变量
# 编辑bashrc文件
vim ~/.bashrc
# or
gedit ~/.bashrc
# bashrc文件添加环境变量,[user]为当前用户名
export PATH=/home/[user]/.local/bin/:$PATH
# or
export PATH="/home/[user]/.local/bin/:$PATH"
# 重新加载bashrc文件
source ~/.bashrc
查看GPU使用状态:
gpustat
实时查看GPU使用状态,[time]
的单位为秒:
gpustat -i
或
gpustat -i [time]
输出效果如下:
admin1-COM-NAME Tue Jan 2 14:57:15 2024 525.147.05
[0] NVIDIA GeForce RTX 4080 | 42°C, 0 % | 322 / 16376 MB | nsjim(220M) nsjim(99M)
运行Python代码
命令如下:
python path/filename.py
或cd
到代码文件夹,输入如下命令:
python filename.py
为代码指定显卡
在服务器终端指定GPU
CUDA_VISIBLE_DEVICES=0 python your_file.py # 指定GPU集群中第一块GPU使用,其他的屏蔽掉
CUDA_VISIBLE_DEVICES=1 Only device 1 will be seen
CUDA_VISIBLE_DEVICES=0,1 Devices 0 and 1 will be visible
CUDA_VISIBLE_DEVICES="0,1" Same as above, quotation marks are optional 多GPU一起使用
CUDA_VISIBLE_DEVICES=0,2,3 Devices 0, 2, 3 will be visible; device 1 is masked
CUDA_VISIBLE_DEVICES="" No GPU will be visible
在python代码中指定
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0" #指定第一块gpu
为GPU设置使用量
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.9 # 占用GPU90%的显存
session = tf.Session(config=config)
使GPU的使用量可持续增长
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config)
Tmux会话管理
Tmux简介
Tmux 是一个终端复用器(terminal multiplexer),功能强大方便。当我们使用SSH连接远程服务器时,若关闭窗口(包含网络断线),则与服务器的会话也会断开,会话内部的进程也会随之终止,不管进程是否运行完毕。
使用Tmux可以解决避免这种问题的发生,它可以将会话与窗口解绑。窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话绑定其他窗口。
Tmux作用
Tmux 是会话与窗口解绑的工具,将它们彻底分离。
- 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
- 它可以让新窗口"接入"已经存在的会话。
- 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
- 它还支持窗口任意的垂直和水平拆分。
基础用法
安装:
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
# Mac
$ brew install tmux
使用流程:
- 新建会话
tmux new -s my_session
。 - 在
Tmux
窗口运行所需的程序。 - 按下快捷键
Ctrl+b d
或使用命令tmux detach
将会话分离。 - 下次使用时,重新连接到会话
tmux attach-session -t my_session
。
具体使用方法:
详见我的另一篇博客:Tmux使用教程。
附录:conda命令
详细命令
请查看这篇文章:链接 。
常用命令如下
conda update conda #更新 conda
conda update anaconda #更新 anaconda
conda activate xxxx #开启xxxx环境
conda deactivate #关闭环境
conda remove -n xxxx --all #删除xxxx环境
conda env list #显示所有的虚拟环境
conda info --envs #显示所有的虚拟环境
conda list #查看已经安装的文件包
conda list -n xxxx #指定查看xxxx虚拟环境下安装的package
conda update xxxx #更新xxxx文件包
conda uninstall xxxx #卸载xxxx文件包
数据源
若国外的数据源导致下载缓慢,则可以更换为国内的数据源:
#显示目前conda的数据源有哪些
conda config --show channels
#添加数据源:例如, 添加清华anaconda镜像:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
#删除数据源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/