-1 写在最前
首先是账号,该平台需要在校园网环境下使用(webvpn目前无效),第一次登录平台时会提示需要申请权限,通过后才能进行后续操作。
A800架设在集群上 简单来说这是一台公共服务器 用脚本来执行任务 每个人分配一个文件夹作为个人的空间,用户通过远程到这个空间,配置环境调试代码;
我粗略的扫了一遍官方的帮助文档,集群使用这块应该是没举例说明怎么在自己申请的地方配置环境,因此写了本文作为记录
教程里一上来就教你点集群->提交作业 但这一步是在你脚本完全可用的基础下进行的
正常情况跑深度学习,conda环境都没配 只用这个脚本跑不起来;
这里以跑point transformer为例子 举例说明如何在集群上面跑深度学习代码
0 远程到集群实例
可以使用终端登录或者ssh登录(终端登录可以跳过下面这一步)
点击ssh端口信息会弹出ssh端口号
使用任意的ssh工具进行登录 。
ssh登录的账号是u+学号 如我的是u2022110xxx
默认的密码 需要在点击右上角 重置密码 来获得 否则会提示没有访问权限
进入控制台后用salloc命令创建一个节点
然后ssh 节点名
直接用salloc命令默认会给你一个cpu节点,用来调试环境
1 导入数据集和代码
网页导入:
导入导出数据都是在这里。
本地将代码和数据集打包 点击上传,拖进去(推荐打包成tar格式 我用zip格式 超过4g无法用服务器当前版本的uzip解压…)
这个方法只能走校园网 速度比较慢(以及导入的时候不要放进share文件夹 所有人都看得见这里面的东西)
其他导入方式参考官方教程
2 创建环境
进入后直接使用conda命令没有反应 原因是没有同步系统的环境变量
vim ~/.bashrc
编辑路径,在脚本末尾添加
export PATH=/opt/app/anaconda3/bin:$PATH
然后运行命令
source ~/.bashrc
使配置的环境变量生效。
source完后就能正常用conda了(视情况可能要进出一下控制台) 默认有一个pytorch1.12的环境和一个llm的环境
再用conda create xxx 去创建环境 下包
补充 自己建的conda环境默认不带cudnn(不带cudnn容易跑不起来 ptv1里pointops就依赖cudnn),推荐是克隆已有的conda环境(不推荐自己去安miniconda弄环境(泣))
conda create -n pointcept --clone pytorch-1.12.1-cuda11.3.1-py38
#conda create -n pointcept python=3.8 -y
conda activate pointcept
conda install ninja -y
# Choose version you want here: https://pytorch.org/get-started/previous-versions/
# conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch -y
conda install h5py pyyaml -c anaconda -y
conda install sharedarray tensorboard tensorboardx yapf addict einops scipy plyfile termcolor timm -c conda-forge -y
conda install pytorch-cluster pytorch-scatter pytorch-sparse -c pyg -y
pip install torch-geometric
# spconv (SparseUNet)
# refer https://github.com/traveller59/spconv
#pip install spconv-cu113
# PTv1 & PTv2 or precise eval
cd libs/pointops
# usual
python setup.py install
# docker & multi GPU arch
TORCH_CUDA_ARCH_LIST="ARCH LIST" python setup.py install
# e.g. 7.5: RTX 3000; 8.0: a100 More available in: https://developer.nvidia.com/cuda-gpus
TORCH_CUDA_ARCH_LIST="7.5 8.0" python setup.py install
cd ../..
# Open3D (visualization, optional)
pip install open3d
创建依赖环境 安装pointcept
安装完可以初步看一下脚本有没有调包报错的问题。
3 申请gpu资源
在集群→分区查看当前机器的资源使用情况,如gpu1机器只有两个cpu 假如gpu1机器有空闲的gpu,如果我们要申请使用gpu1机器 申请命令的-n就要调整到2
用以下命令申请gpu在线调试环境
[u2022110xxx@workstation ~]$ salloc -p gpu-a800 -N 1 -n 6 --gres=gpu:1 -t 2:00:00
salloc: Granted job allocation 240263
salloc: Waiting for resource configuration
salloc: Nodes gpu4 are ready for job
[u2022110xxx@workstation ~]$ ssh gpu4
Warning: Permanently added 'gpu4,192.168.0.98' (ECDSA) to the list of known hosts.
[u2022110xxx@gpu4 ~]$ ls
7d546382292307a41318706a72425252.250a9_bin 7d546382292307a41318706a72425252.fdb4_info share web-jobs
[u2022110xxx@gpu4 ~]$ nvidia-smi
进入后验证一下脚本能不能跑,如果能跑就退出环境,使用作业的方法跑网络。
(pointcept) [u2022110xxx@workstation Pointcept]$ export PYTHONPATH=./
(pointcept) [u2022110xxx@workstation Pointcept]$ python tools/train.py --config-file configs/s3dis/semseg-pt-v1-0-base.py --options save_path=exp/ptv1
4 提交作业
集群→提交作业
1 选择public_cluster 2 填写名称 3 再选一个作业模板 修改成以下内容
#!/bin/bash
#SBATCH --partition=gpu-a800
###指定使用gpu-a800队列
#SBATCH --nodes=1
###使用1个节点
#SBATCH --ntasks-per-node=5
###每个节点使用6个核心
#SBATCH --gres=gpu:1
###声明需要的GPU数量【单节点最大申请8个GPU】
###以下程序为运行程序,替换为自己的程序
hostname
source ~/.bashrc
conda activate pointcept
cd ~/Pointcept
export PYTHONPATH=./
python tools/train.py --config-file configs/s3dis/semseg-pt-v2m1-0-base.py --options
#根据实际修改一下batch size 一张A800不够跑默认的batchsize 12
save_path=exp/ptv2
点击提交作业
提交成功后 可以在集群→分区→已分配作业 里看到自己的提交 ,点击后可以看到对应的log