https://git.ustc.edu.cn/ypb/gpu-cluster
首先要跟管理员要个账号,这个不做叙述
Dockerfile
因为使用集群必须用Docker,所以这里要写一个Dockerfile,当然也可以用现成的,也就是别人编译的
现成的
ssh g101
进入G101节点,sudo docker imges
查看有没有适合自己的
Dockerfile
编写一个dockerfile,然后放到/ghome/your_account/dockertmp
目录下,ssh g101
进入G101节点,用以下命令编译
sudo docker build -t bit:5000/your_docker_name dockertmp
注意这里的bit:5000
是必须的,然后编译成功的话跟管理员说一下发布即可
Docker命令
在G101节点使用,ssh g101
进入节点
- 查看docker镜像:sudo docker images
- 查看docker容器:sudo docker ps -a
- 停止容器:sudo docker stop <container_id>/<your_name>
- 进入容器:startdocker -u “-it --ipc=host --shm-size=64G -v /gdata/your_account/:/gdata/your_account/” -c /bin/bash bit:5000/wangyh_cuda101_v3
提交job
接下来有了自己的镜像之后就可以提交job了,但是提交之前需要先调试
调试
调试需要进入G101节点,因此ssh g101
进入节点,然后选择一个镜像开容器
startdocker -u "--ipc=host --shm-size=64G -v /gdata/your_account/:/gdata/your_account/ --gpus all" -c /bin/bash bit:5000/wangyh_cuda101_v3
然后进入容器之后按照常规操作调试即可,但是注意,即使这个容器是你用自己的镜像创建的,应该也没有root权限,如果需要的话跟管理员说一下给自己开一个root权限的容器
提交job
提交job需要写xxx.pbs
文件,文件内容如下
#PBS -N 11_recur
#PBS -o /gdata/wangyh2/out/11_recur/out-mango
#PBS -e /gdata/wangyh2/out/11_recur/err-mango
#PBS -l nodes=1:gpus=4:q
#PBS -r y
cd $PBS_O_WORKDIR
echo Time is `date`
echo Directory is $PWD
echo This job runs on following nodes:
echo -n "Node:"
cat $PBS_NODEFILE
echo -n "Gpus:"
cat $PBS_GPUFILE
echo "CUDA_VISIBLE_DEVICES:"$CUDA_VISIBLE_DEVICES
startdocker -u "--ipc=host --shm-size=64G -v /gdata/your_account/:/gdata/your_account/ --gpus all" -c "python /gdata/wangyh2/11_recur/train.py" bit:5000/wangyh_cuda101_v3
- 第一行:你提交的job名字
- 第二行:程序运行过程中命令行的输出文件位置(需要提前创建,不然会报错)
- 第三行:程序运行过程中如果报错,错误信息的输出文件位置
- 第四行:1:gpus=4:q就是说一个节点中用几张卡,这里是说一个节点,就是单机,4:q就是说4张2080Ti,后面这个有编号,可以在服务器查看
- 到后面都不用管,看最后一行就是你的运行命令,-c后面就是进入容器后自动运行的命令了
其他的一些命令
- 查看所有人的job以及卡的利用情况:chk_gpu
- 只查看自己的job:chk_gpu |grep your_name
- 提交自己的job:【在gwork上】qsub xxx.pbs
- kill自己的job:qdel task_id
其他的一些Bug
- 在集群上如果代码里有创建文件夹什么的,要用绝对路径,不要用相对路径
- 如果有的命令显示没有权限,可以加上sudo,但是sudo的命令不多
持续更新ing