集群服务器GPU深度模型训练笔记(PBS作用调度系统)

相关手册与软件准备

官方使用手册

用户手册:https://hpc.sustech.edu.cn/ref/cluster_User_Manual.pdf
培训视频:https://hpc.sustech.edu.cn/ref/meeting_20230810.mp4
启明2.0使用手册:https://hpc.sustech.edu.cn/ref/qiming_User_Manual_v3.0.pdf
Anaconda官方教程:https://hpc.sustech.edu.cn/ref/anaconda-install-by-user.html

集群服务器GPU深度模型训练笔记(PBS作用调度系统)_第1张图片

安装前置软件

  1. FileZilla传输数据
    filezilla是一款用于与远程服务器传输数据的软件。
    下载FileZilla,下载教程参考https://blog.csdn.net/SoloVersion/article/details/124579221
    FileZilla官方使用说明:https://welcome.filezilla-project.org/welcome?type=client&category=documentation_network&version=3.66.1
    FileZilla官方网络设置手册:https://wiki.filezilla-project.org/Network_Configuration

按照步骤登录节点,注意:在站点管理器中,传输协议要选择SFTP!!!不然会连接失败。

  1. xshell登录节点
    xshell用于远程登陆服务器以及进行命令行操作。
    xshell安装官网:https://www.xshell.com/zh/free-for-home-school/
    集群服务器GPU深度模型训练笔记(PBS作用调度系统)_第2张图片

深度学习模型单节点训练

以yolov5最基本模型训练为例

1. 配置Anaconda

Anaconda官方教程:https://hpc.sustech.edu.cn/ref/anaconda-install-by-user.html

因为anaconda相关文件会存储在自己的工作文件夹里,所以和环境相关的步骤可以直接在登录节点执行。

下载Anaconda(只需完成一次)

test -d ~/softwares/python/anaconda3 || mkdir -p ~/softwares/python/anaconda3 #创建安装目录
wget https://mirrors.sustech.edu.cn/anaconda/archive/Anaconda3-2020.07-Linux-x86_64.sh #下载安装包
sh Anaconda3-2020.07-Linux-x86_64.sh -b -p ~/softwares/python/anaconda3/2020.07 #自动安装到目录

在安装目录写入环境变量文件anaconda.2020.07.source,此文件也可以放在任意计算时可以调用的目录,在命令行输入:

cat>~/softwares/python/anaconda3/2020.07/anaconda.2020.07.source<<EOF
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/work/ccse-tangh/softwares/python/anaconda3/2020.07/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "~/softwares/python/anaconda3/2020.07/etc/profile.d/conda.sh" ]; then
        . "~/softwares/python/anaconda3/2020.07/etc/profile.d/conda.sh"
    else
        export PATH="~/softwares/python/anaconda3/2020.07/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<
EOF

在用户目录写入.condarc文件,配置国内更新源,以便于加快更新和安装环境或者软件包的速度,在命令行输入:

cat>~/.condarc<<EOF
channels:
  - defaults
show_channel_urls: true
channel_alias: https://mirrors.sustech.edu.cn/anaconda
default_channels:
  - https://mirrors.sustech.edu.cn/anaconda/pkgs/main
  - https://mirrors.sustech.edu.cn/anaconda/pkgs/free
  - https://mirrors.sustech.edu.cn/anaconda/pkgs/r
  - https://mirrors.sustech.edu.cn/anaconda/pkgs/pro
custom_channels:
  conda-forge: https://mirrors.sustech.edu.cn/anaconda/cloud
  msys2: https://mirrors.sustech.edu.cn/anaconda/cloud
  bioconda: https://mirrors.sustech.edu.cn/anaconda/cloud
  menpo: https://mirrors.sustech.edu.cn/anaconda/cloud
  pytorch: https://mirrors.sustech.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.sustech.edu.cn/anaconda/cloud
EOF

加载环境变量,清理索引缓存,更新:

source ~/softwares/python/anaconda3/2020.07/anaconda.2020.07.source
conda clean -i 
conda update --prefix ~/softwares/python/anaconda3/2020.07 anaconda -y

为每一个任务创建一个conda环境

直接在登陆节点创建并配置好requirement,在pbs文件里activate就可以了。在训练节点无法联网,不能下载相关包或者创建环境!!!

先激活bash使用conda:

conda init bash
source ~/.bashrc

然后就是标准conda操作了:

conda create -n yolov5 python=3.8 -y -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda activate yolov5

cd yolov5
pip install -r requirements.txt

再正常使用,比如创建,激活等

配置cuda+torch

这里不知道卡了多久,配置cuda和torch主要有几个要点,分别是:

  1. 显卡与驱动(NIVIADA driver)是否适配。
  2. cuda版本与显卡是否适配。
  3. torch是否为gpu版本
  4. torch版本与cuda,与python是否适配
  5. touchvision版本与torch是否适配。

详细内容见http://t.csdnimg.cn/KnLK9
注意没conda create一个环境都要手动装一下torch和torchvision

pip install torch-2.0.0+cu118-cp311-cp311-linux_x86_64.whl
pip install torchvision-0.15.1+cu118-cp311-cp311-linux_x86_64.whl

2. pbs文件编写

成功完成训练pbs文件示例:

!/bin/bash
#PBS -N yolov5_train
#PBS -l nodes=1:ppn=1,gpus=1
#PBS -l walltime=1:00:00
#PBS -o yolov5_train.out
#PBS -e yolov5_train.err
#PBS -A your_account
#PBS -V
#PBS -q gpu

export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

# 查看gpu版本
#nvcc --version
# Display GPU information
# nvidia-smi

conda init bash
source ~/.bashrc
conda activate checkcuda5

export GIT_PYTHON_REFRESH=quiet

# 载入cuda
module load cuda/11.8

cd yolov5

python -c "import torch; print(torch.cuda.is_available())"

python train.py --img 640 --epochs 2 --data data/coco128.yaml --weights yolov5s.pt

# 退出 conda 环境
conda deactivate

3.作业提交与监控

因为我们的pbs文件是在win上编辑好后再传过去的,在提交之前需要转化为unix格式:

dos2unix train_job14.pbs
qsub -q 2a100-80 train_job14.pbs
队列选择

启明所有队列:
集群服务器GPU深度模型训练笔记(PBS作用调度系统)_第3张图片
查看当前队列使用情况

qstat

查看自己的作业

bjobs

Multi-GPU Training

你可能感兴趣的:(服务器,深度学习,人工智能)