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界面,最好配置免密登陆
- 连接完成后,点击左下角,可进行关闭连接、连接到其他host的操作
- 连接完成后,打开文件夹、新建文件的操作都是在登陆的用户文件夹下(每次需要选择工作目录)。
- 连接完成后,插件界面会有两栏,一栏本地,一栏远程服务器,可以根据需求安装服务器版本的插件
- 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 镜像使用
- 查询可用的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构建
- 运行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 / 去根目录找你挂载的目录
-
退出docker
直接输入exit
构建镜像
1 | # 指定你的镜像要构建在哪个镜像之上 |
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集群服务器能够运行这个工程,需要将工程相关的文档压缩,并提供下载链接。
- 压缩需要的文件和文件夹
下面的指令就是把main.py、数据目录、模型目录打包进testiris.tar.gz
1 | tar -zcvf testiris.tar.gz data/ model/ main.py |
- 创建工程下载链接
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 | protocolVersion: 2 |
- 填写任务名:test_iris_job
- prerequisites:填写需要的docker image uri: lin-ai-27:5000/dlspree:2.1.4-py3-tf-gpu
- taskRoles:
- instance: 任务执行的个数
- dockerImage:需要使用的image名(prerequisites里的)
- resourcePerInstance:填写每个任务实例需要的GPU、CPU、内存
- commands: 先使用wget 下载工程,再进行解压,最后进行运行。
任务提交
可以使用vscode 提交,也可使用web端提交,由于写文档时vscode 服务器端的openpai出了点问题,这里使用web端提交(最新的插件已经修复问题)。
-
进入web端,单击Submit Job, 进入提交界面,单击Edit YAML,进行编辑
-
退出编辑,进行提交(Job Nmae 需要随便添加一个后缀,不允许同名任务)
-
提交完成后,正常运行状态由Waitring->Running->Succeeded(运行结束)
- Stdout 会输出正常打印的东西,Stderr会输出错误和警告以及GPU的信息。
- [Go to Job Metrics Page]可以查看任务的资源占用情况
SSH以及http
如果在任务的运行过程种,有ssh的需求(比如开启tensorboard等),可以点击View SSH Info ,进行SSH的链接。
HDFS
hdfs 任务清单
1 | protocolVersion: 2 |
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)
- 选择你需要进行调参的参数(学习率、优化器、网络参数等)
- 按经验设置合理的数值范围
- 填写进一个json文件里
修改代码
需要在代码中读取参数、将运行结果回调给nni
可以对照 nni/examples/trials/mnist/里的两段代码,进行对比。
填写任务清单
1 | authorName: default |
运行
1 | nnictl create --config config.yaml --port prot_num |
常用指令
只是常用指令,不是一个操作流程!!
- 查看GPU占用
1 | nvidia-smi |
- 查看进程资源占用
1 | top |
- 查看端口占用
1 | lsof -i:port_num |
- 杀进程
1 | kill -9 PID |
- 压缩和解压
1 | tar -zcvf FileName.tar.gz DirName |
- 连校园网
1 | links 10.1.61.1/a30.htm |
- 将目录挂上网(提供下载)
1 | python -m http.server port_num |
- 启用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 |
- Vscode 开启命令行
1 | Ctrl + ` |
- 查询conda env
1 | conda info -e |
- 激活conda 环境(eg :myenv)
1 | conda activate myenv |