USTC服务器使用笔记
本機系統:Windows 10 (我真是堅持走在用Windows寫python的路上不回頭。。。)
使用軟件:putty(ssh連接) 和 WinSCP(文件管理)
1.登陸
putty軟件輸入IP地址和端口號, 登陸gwork
2.環境
/ghome下的有一userid命名的文件夾,賬號創建即生成,限額20G, 代碼及script文件放在這里
/gdata下可以自從創建userid命名的文件夾,限額300G,用于儲存job生成的結果。
/gpubg公共數據區
3.使用
調試:從gwork主機sshG101,斷開ssh連接的方法,logout
startdocker -u "-it" -c /bin/bash bit:5000/deepo bit:5000/deepo是一個集中了幾乎所有深度學習框架的一個docker 鏡像,使用上述命令將進入docker container內部,相當于一個虛擬機,你在內部對系統所做的任何操作都將在系統退出后丟失,但對用戶根目錄下(/ghome/<username>)的文件操作將不會丟失。此命令沒有用-P命令掛載用戶代碼和配置目錄,系統默認掛載了整個用戶根目錄,也沒有使用-D掛載數據目錄,用戶可以根據需要掛載。退出docker的命令:
exit退出G101后,查看鏡像的命令
sudo docker images如果沒有正確得退出docker(如直接關閉terminal),需要利用命令查看docker id,并且關閉
sudo docker pssudo docker stop CONTAINER_ID
調試成功后,編寫pbs文件提交,注意windows系統下的換行符需要改成unix模式(可以使用notepad++編輯器)。
pbs中的命令行如下:
startdocker -D <mydatapath> -P <my-proc-config-path> -s <my-script-file> bit:5000/deepo """-s 參數后的my-script-file 可以是shell腳本或python腳本,但都需要在第一行加解釋器,如shell腳本需要加:#!/bin/bashpython腳本需要加:#!/usr/local/bin/bash
""" 下面是一個pbs文件示例: #PBS -N myjob1 #PBS -o /home/liulm/myjob1.out #PBS -e /home/liulm/myjob1.err #PBS -l nodes=1:gpus=1:S #PBS -r y cd $PBS_O_WORKDIR echo Time is 'date' echo Directory is $PWD echo This job runs on the following nodes: cat $PBS_NODELIFE cat $PBS_GPULIFE ./myproc
"""
-N: job 名
-o: 輸出文件路徑
-e: 報錯文件輸出路徑
-l: 集群資源分配, 節點數和gpu數(通常一就可以滿足要求)
-r:? 任務操作類型, -r表示job立即執行
"""
對job的操作指令集合:
qsub myjob1.pbs #提交作業 qstat -n #查看作業 qhold job_id #掛起作業,被掛起的job狀態顯示為H qrls job_id #取消掛起作業,job重新運行 pbsnodes #查看節點 pbsnodes -l free #查看空閑節點?4.自定義docker鏡像文件(相當于安裝庫?)
emmm,步驟比較復雜。
而自己python程序中比較小的packeage可以使用如下方法:
不需要構建鏡像。以numpy為例: 1. 下載numpy的源碼(一般能從個人PC上拷貝),放入服務器上的某個目錄,比如/gdata/xxx/pylib 2. 掛載目錄,-v /gdata/xxx/pylib:/data/pylib 3. 將掛載后的目錄加入python import的搜索路徑,兩個方法a. 指定容器的PYTHONPATH, 在startdocker的-u里面加入-e PYTHONPATH=/data/pylib,此時/data/pylib的優先級可能次于系統自帶路徑(沒測過),import numpy 會導入系統的numpyb. 在程序的一開始加入下面兩行代碼import syssys.path.insert(1, '/data/pylib')1表示/data/pylib的優先級僅次于程序所在目錄此時/data/pylib的優先級高于系統自帶路徑,import numpy 會導入/data/pylib的numpy?
5. DGX1服務器使用
slurm構成的小集群, 操作仍在gwork 上,共享文件系統
script格式如下:
my.slurm#!/bin/bash #SBATCH --job-name=myjob1 #SBATCH -gres=gpu:4 #SBATCH --output=myjob.out echo "Submitted from $SLURM_SUBMIT_DIR" on node "$SLURM_SUBMIT_HOST" echo "Running on node "$SLURM _JOB_NODELIST echo "Allocate Gpu Units:" $CUDA_VISABLE_DEVICES ##program here## startdocker {-c <mycd>|-s <myscript>} nvdl.githost.io:4678/dgx/cuda:9.0-cudnn7-devel-ubuntu16.04操作命令:
sbatch <myscript> #提交文件 squeue #查看隊列情況 scancel <jobid> #取消job?
轉載于:https://www.cnblogs.com/fassy/p/8818883.html
總結
以上是生活随笔為你收集整理的USTC服务器使用笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css中background-image
- 下一篇: 三种虚拟化技术比较