SSH

win : Xshell(下载Xftp 可以实现ftp) Putty Finalshell (包含ftp)

Linux & Mac: ssh 用户名@GPU测试平台ip

或者通过vscode->Remote-SSH

Vscode

Remote-SSH

用于在vscode上连接服务器,并同步编写代码和运行代码。

需要本地安装了openssh

安装

  • Ctrl + Shift + x 或者直接点击左边菜单插件选项即可搜索添加插件

  • 安装成功就会在左边菜单显示一个图标,点开有ssh列表

添加ssh配置

  • 点击ssh列表顶端的齿轮,就能添加,弹出如下图所示的界面,选择自己电脑用户界面下的ssh 配置文件

  • 选完如下图所示

添加ssh连接

  • 点击加号,输入 ssh user@ip -A, 完成建立, 然后弹窗指定ssh配置文件,完毕后,会弹窗提示输入密码,完成ssh连接

  • 如要配置免密登陆,可参考

https://blog.csdn.net/weixin_40607008/article/details/98471293

简单操作

注:建立链接、打开文件夹都会刷新vscode界面,最好配置免密登陆

  1. 连接完成后,点击左下角,可进行关闭连接、连接到其他host的操作

  1. 连接完成后,打开文件夹、新建文件的操作都是在登陆的用户文件夹下(每次需要选择工作目录)。
  2. 连接完成后,插件界面会有两栏,一栏本地,一栏远程服务器,可以根据需求安装服务器版本的插件

  1. Ctrl + ` ,即可唤出bash

OpenPai

可以向GPU集群提交任务,或者查询任务状态。(其实也可以不用这个插件)

本地和服务器上都可以安装这个插件,但是目前出了点小bug,服务器端的使用可能不成功。

任务可以在本地\服务器的vscode右键提交,也可以复制配置内容去web提交。视情况选择。

安装

还是和上面一样搜

添加集群

F1, ">"右侧输入pai: add pai cluster回车。然后输入 OpenPAI 平台的IP地址:172.31.246.52,回车。

在弹出来的配置文件中,修改 username 和 password,保存。注意,右下角会弹出一个提示,让你点击 Finish 完成编辑,点击 Finish 按钮。

然后这个配置文件会自动关闭,文件浏览器左侧最下面有个 PAI CLUSTER EXPLORER,里面就会出现很多按钮。

Docker

​ 因为openpai集群在提交任务时,需要提供运行任务的dokcer镜像,所以需要在测试和运行时选择或者搭建合适的docker镜像。

​ 为了保证提交的任务能够准确在提交的docker 镜像上运行,最好在服务器上运行这个docker,测试自己代码能否运行成功。

Docker 镜像使用

  1. 查询可用的docker, 使用下述指令,就能得到可用的docker信息
1
docker images

可以根据image的信息来选择使用哪个image

lin-ai-27:5000/dlspree:2.1.4-py3-tf-gpu:这个images包括tf(1.13), keras, skleran, pytorch,jupyter 等,一般够用了,缺少哪个模块可以考虑用这个image构建

  1. 运行docker

在使用docker进行测试的时候,可以使用如下指令运行docker

nvidia-docker run -it -p 7777:8888 --ipc=host -v $PWD:/workdir b7ec1590ce28

  • nvidia-docker : 支持GPU的Image 需要使用nvidia-docker进行运行

  • -p 7777:8888 : 表示端口映射,就是把主机的7777端口映射到docker容器的8888端口

  • $PWD: 表示当前路径

  • /workdir:docker容器里的目录

  • -v $PWD:/workdir : 意为把当前目录挂载到docker 容器的workdir里,注意,并不是复制,是挂载。不同的docker可能设置不同,可能一进去就是对应的workdir也可能是根目录或者其他目录。

  • b7ec1590ce28: 最后一串数字是Image ID, 可使用之前的指令进行查询,也可以用

    REPOSITORY:TAG 进行替代,例如

    1
    nvidia-docker run -it -p 7779:8888 --ipc=host -v $PWD:/workdir lin-ai-27:5000/xuwei/dlspree:hdfs

    注意,测试的时候,进入的目录不一定是你挂载的目录,可能需要cd / 去根目录找你挂载的目录

  1. 退出docker

    直接输入exit

构建镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
# 指定你的镜像要构建在哪个镜像之上
# 如果你要用GPU,那就一定要构建在nvidia/cuda这个镜像上
FROM lin-ai-27:5000/xuwei/dlspree:hdfs

# 写一下你的名字和邮箱
LABEL XuWei 20120437@bjtu.edu.cn


# RUN pip install torchsummary
RUN apt-get -y update
RUN apt-get install sshpass
RUN pip install pytorch_model_summary

1
docker build -t xuwei/dlspree:hdfs .
1
docker tag xuwei/dlspree:hdfs lin-ai-27:5000/xuwei/dlspree:hdfs
1
docker push lin-ai-27:5000/xuwei/dlspree:hdfs
1

OpenPai 任务提交

这里在一个简单的数据集上进行一个简单的任务提交测试

工程示例

​ 上图是一个简单的实验工程,数据放在data文件夹内,模型放在model文件夹内,main.py为待运行的代码文件,test_job.pai.yaml 就是任务清单,按照需求还可以添加其他的代码、目录文件。

提交工程目录

​ 为了让Openpai集群服务器能够运行这个工程,需要将工程相关的文档压缩,并提供下载链接。

  1. 压缩需要的文件和文件夹

下面的指令就是把main.py、数据目录、模型目录打包进testiris.tar.gz

1
tar -zcvf testiris.tar.gz data/ model/ main.py 
  1. 创建工程下载链接

7777 是指定的端口,如果被占用,换其他的就可以了

1
python -m http.server 7798

鼠标移到testiris.tar.gz,复制下载链接,就可以得到下载链接了

1
http://172.31.246.53:7788/testiris.tar.gz

填写任务清单

test_job.pai.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
protocolVersion: 2
name: test_iris_job_dsdwddws
type: job
prerequisites:
- name: image
type: dockerimage
uri: lin-ai-27:5000/dlspree:2.1.4-py3-tf-gpu
taskRoles:
train:
instances: 1
dockerImage: image
resourcePerInstance:
cpu: 4
memoryMB: 4096
gpu: 1
commands:
- wget http://172.31.246.53:7798/testiris.tar.gz
- tar -zxvf testiris.tar.gz
- python main.py
  1. 填写任务名:test_iris_job
  2. prerequisites:填写需要的docker image uri: lin-ai-27:5000/dlspree:2.1.4-py3-tf-gpu
  3. taskRoles:
    • instance: 任务执行的个数
    • dockerImage:需要使用的image名(prerequisites里的)
    • resourcePerInstance:填写每个任务实例需要的GPU、CPU、内存
  4. commands: 先使用wget 下载工程,再进行解压,最后进行运行。

任务提交

​ 可以使用vscode 提交,也可使用web端提交,由于写文档时vscode 服务器端的openpai出了点问题,这里使用web端提交(最新的插件已经修复问题)。

  1. 进入web端,单击Submit Job, 进入提交界面,单击Edit YAML,进行编辑

  2. 退出编辑,进行提交(Job Nmae 需要随便添加一个后缀,不允许同名任务)

  3. 提交完成后,正常运行状态由Waitring->Running->Succeeded(运行结束)

  1. Stdout 会输出正常打印的东西,Stderr会输出错误和警告以及GPU的信息。
  2. [Go to Job Metrics Page]可以查看任务的资源占用情况

SSH以及http

​ 如果在任务的运行过程种,有ssh的需求(比如开启tensorboard等),可以点击View SSH Info ,进行SSH的链接。

HDFS

hdfs 任务清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
protocolVersion: 2
name: ESTGCN_test_pai_0810c54
type: job
jobRetryCount: 0
prerequisites:
- name: output_dir
type: output
uri: 'hdfs://172.31.246.52:9000/XuWei/output'
- type: dockerimage
uri: '172.31.246.45:5000/dlspree:hdfs'
name: image
taskRoles:
train:
instances: 1
completion:
minFailedInstances: 1
minSucceededInstances: 1
dockerImage: image
resourcePerInstance:
cpu: 4
memoryMB: 8196
gpu: 1
commands:
- >-
python train.py --epochs 100 --gpu 0 --batch_size 256 --sub 3 --k 2
--learning_rate 0.005 --kersize 3
- 'hdfs dfs -mkdir -p hdfs://172.31.246.61:9000/XuWei/output/$PAI_JOB_NAME'
- 'hdfs dfs -cp output hdfs://172.31.246.61:9000/XuWei/output/$PAI_JOB_NAME'
taskRetryCount: 0
deployments:
- name: prod
taskRoles:
train:
preCommands:
- 'wget http://172.31.246.46:8899/data_0_40.tar.gz '
- 'wget http://172.31.246.46:8899/test_pai.tar.gz '
- tar -zxvf data_0_40.tar.gz
- tar -zxvf test_pai.tar.gz
defaults:
deployment: prod
virtualCluster: default

HDFS上传和下载

集群下载

1
wget http://172.31.246.61:50070/webhdfs/v1/XuWei/output/XuWei~ESTGCN_test_pai_0810c54/output/model.py?op=OPEN -O modelload.py

使用wget下载hdfs文件时,需要使用wget xxxx -O filname

一般下载

1
hdfscli download /XuWei/trajectory/XuWei~trajectory_s2_005_v6_4c7db607 test/

需要安装hdfscli并配置。

一般上传

1
hdfscli upload ssvep_data.zip /XuWei/SSVEP

NNI

  • Install
1
python3 -m pip install --user --upgrade nni
  • GIT(可以看看样例)
1
git clone https://github.com/Microsoft/nni.git

定义搜索空间(search space)

  1. 选择你需要进行调参的参数(学习率、优化器、网络参数等)
  2. 按经验设置合理的数值范围
  3. 填写进一个json文件里

修改代码

需要在代码中读取参数、将运行结果回调给nni

可以对照 nni/examples/trials/mnist/里的两段代码,进行对比。

填写任务清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
authorName: default
experimentName: test_gat_nni
trialConcurrency: 3
maxExecDuration: 2h
maxTrialNum: 30
#choice: local, remote, pai
trainingServicePlatform: local
searchSpacePath: search_space.json
#choice: true, false
useAnnotation: false
tuner:
#choice: TPE, Random, Anneal, Evolution, BatchTuner
#SMAC (SMAC should be installed through nnictl)
builtinTunerName: TPE
classArgs:
#choice: maximize, minimize
optimize_mode: maximize
trial:
command: python main.py
codeDir: .
gpuNum: 1

运行

1
nnictl create --config config.yaml --port prot_num

常用指令

只是常用指令,不是一个操作流程!!

  1. 查看GPU占用
1
nvidia-smi
  1. 查看进程资源占用
1
top
  1. 查看端口占用
1
lsof -i:port_num
  1. 杀进程
1
kill -9 PID
  1. 压缩和解压
1
2
tar -zcvf FileName.tar.gz DirName
tar -zxvf FileName.tar.gz
  1. 连校园网
1
links 10.1.61.1/a30.htm
  1. 将目录挂上网(提供下载)
1
python -m http.server port_num
  1. 启用Docker
1
nvidia-docker run -it -p 7798:8888 --ipc=host -v $PWD:/workdir lin-ai-27:5000/dlspree:2.1.4-py3-tf-gpu
  1. Vscode 开启命令行
1
Ctrl + `
  1. 查询conda env
1
conda info -e
  1. 激活conda 环境(eg :myenv)
1
conda activate myenv