曙光智算计算服务人工智能深度学习平台普通用户使用手册
使用方法一:SothisAI方法
SothisAI是一种可以直观、快速地领略深度学习魅力的方式。它的本质在于创建docker镜像,并在镜像环境内快速启动程序,训练、调优、推理,不需要输入代码,只需要动动鼠标,是一种新手友好的方式。但对于老手来说,我们更推荐方法二、方法三。因为其更高的灵活度,以及比镜像更快的速度。
1 创建基础镜像
进入计算服务首页,鼠标放到“科学计算”处,会出现如下服务和产品界面,依次点击“人工智能”“训练”“创建训练”“Tensorflow/Pytorch”。
相关选项说明: (1)“任务名”可以进行自定义,但不能重复; (2)“Python代码”可以根据提示 加载已有文件,或者 上传本地文件; (3) “Python参数”可以自定义输入对应参数; (4) “工作空间”可以通过 自定义选择工作路径,一般填入Python参数会自动生成; (5) “TB日志路径”也可自定义,可不填; (6) “环境变量”根据需要填写即可; (7) “任务类型”分为分布式和非分布式,根据需要选择即可; (8) “加速器类型”会根据实际的申请资源显示,昆山为DCU; (9) “框架版本”点击后面的箭头选择需要的即可; (10)“资源分组”为实际申请的dcu队列名; (11)“Parameter Server”可以调整CPU数量和内存大小,申请时默认CPU数量2核,内存16G; (12)“Worker”可以调整CPU数量、DCU数量、内存大小,申请时默认CPU数量1核,DCU数量1卡,内存16G; (13)超时限制默认为10h。 注:资源占用会显示最终的总CPU核数和DCU卡数以及内存占用总数。另昆山资源单节点32核4卡,建议资源申请以核:卡为8:1的比例申请。
点击提交,创建镜像后,需要等待“状态”属性变成完成说明运行完成。
2 创建分享镜像和数据集
进入“人工智能”“训练”界面后,可以看到创建的所有镜像
2.1 镜像克隆
在“创建训练”界面,点击对应任务名称后的 “操作”下面 ,克隆需要的镜像。同样地,需要给克隆镜像填入命名等后点击提交。
2.2 数据集克隆
进入“人工智能” “资产集市”界面后,查看需要的数据集,点击 订阅需要的数据集;点击克隆,选择个人账户路径,最后点击完成进行数据克隆。
注:可以在“人工智能”->“数据”->“我的订阅”查看到已经订阅的数据集。
另外可以在“人工智能”->“数据”->“我的数据”->“添加数据集”上传自己的数据集。
3 镜像查看
进入“人工智能”“训练”,点击“任务名称”下的作业名可以查看到如下基础镜像信息
4 镜像修改
(1)镜像修改定制化需要连接外网,因此需要添加代理(请联系对应工程师申请proxy代理账号)。然后在~/.bashrc中添加以下内容,或者编辑一个shell文件添加以下内容后在容器内执行脚本。
export http_proxy='http://username:password@10.15.150.2:3000'
export https_proxy='http://username:password @10.15.150.2:3000'
export ftp_proxy='http://username:password@10.15.150.2:3000'
(2)下面示例以基础版pytorch1.9-py36为base创建一个新容器。
1)容器仅自己使用,不进行分享: 添加proxy代理生效后,使用which pip或which pip3 确认pip所调用的python源为容器中的python,加载已经配置好的porxy文件,使用pip install 进行安装
2)修改容器,并进行分享: 进入容器后,首先sudo su进入容器root,然后which pip,确认调用python为容器python,加载配置的代理文件,执行安装指令
5 镜像固化
点击“容器”->“容器实例”,在操作下面点击第三个按钮进行固化,然后在弹出框点击“固化”。固化后的镜像可在“镜像管理”查看,点击“分享”后即可在共享中心查看、订阅。
6 创建容器
在“计算服务”首页,服务部分的“容器”一栏,点击“容器实例”->“创建容器”。在弹出的对话框进行相应参数填写,最后点击弹出框右下角的“创建”完成容器创建。
相关选项说明: (1) 名称:表示该容器的名称; (2) 描述:简要描述容器(可省略); (3) 任务类型:选择相应应用框架; (4) 镜像版本:选择已存在的镜像版本; (5) 资源分组:选择需要的队列; (6) 资源规格:表示容器参数配置。
7 Notebook
进入“人工智能”->“Notebook”“创建Notebook”这里共有三种开发工具:Jupyter、VS code和RStudio。
7.1 Jupyter
进入Jupyter模块,如图所示:
相关选项说明: (1)名称:自定义命名创建的任务; (2) 开发工具:Notebook共提供三种开发工具:Jupyter、VS code和RStudio; (3) 框架版本:Jupyter共提供CPU和GPU两种框架; (4) 资源规格:Jupyter共提供三种不同配置的资源供选择。
--------------------------------测试用例 - 简单矩阵乘法-----------------------------------
1、输出pytorch的版本以及是否有GPU;
import torch
import time
from torch import autograd
torch.cuda.is_available()
print(torch.__version__)
2、创建tensor及三次计算的耗时; 其中第一次是CPU计算,第二次和第三次是GPU计算。第二次比第一次时间明显减少,因为用了gpu加速;第三次比第二次同样少很多,应该是cpu存在缓存。
a=torch.randn(10000,1000)
b=torch.randn(1000,10000)
print(a)
print(b)
t0=time.time()
c=torch.matmul(a,b)
t1=time.time()
print(a.device,t1-t0,c.norm(2))
device=torch.device('cuda')
print(device)
a=a.to(device)
b=b.to(device)
t0=time.time()
c=torch.matmul(a,b)
t2=time.time()
print(a.device,t2-t0,c.norm(2))
t0=time.time()
c=torch.matmul(a,b)
t2=time.time()
print(a.device,t2-t0,c.norm(2))
7.2 VS code
点击“创建Notebook”,选择VS code模块,如图所示:
相关选项说明 (1) 名称:自定义命名创建的任务; (2) 开发工具:Notebook共提供三种开发工具:Jupyter、VS code和RStudio; (3) 框架版本:VS code共提供pytorch和tensorflow两种框架; (4) 资源规格:VS code共提供三种不同配置的资源供选择。
7.3 RStudio
点击“创建Notebook”,选择Rstudio模块,如图所示:
(1)名称:自定义命名创建的任务;
(2)开发工具:RStudio共提供三种开发工具:Jupyter、VS code和RStudio;
(3)框架版本:RStudio共提供pytorch和tensorflow两种框架;
(4)资源规格:RStudio共提供三种不同配置的资源供选择。
--------------------------------测试示例 - 正太分布画图-----------------------------------
画出随机变量X服从 N(0,0.5),N(0,1), N(0,2)累计分布曲线。
正态分布的累计分布函数是:
累积分布函数的定义(cumulative distribution function):对连续函数,所有小于等于a的值,其 出现概率的和。F(a)=P(x<=a)。
> x = seq(-5,5,length.out=100)
> y <-pnorm(x,0,1)
> plot(x,y,col='red',xlim=c(-5,5),ylim = c(0,1),type='l',xaxs='i',ylab = 'density',xlab='+',main='the Normal Cumulative Distribution')
> line(x,pnorm(x,0,0.5),col='green')
> lines(x,pnorm(x,0,0.5),col='green')
> lines(x,pnorm(x,-2,1),col='orange')
使用方法二:E-Shell方式 Module调用固定模板
1 切换ROCM版本
ROCM默认版本为rocm-2.9。若需要切换rocm-3.9.1或rocm-4.0.1,版本切换命令如下:
// 方式一
module rm compiler/rocm/2.9
module load compiler/rocm/3.9.1
// 方式二
module switch compiler/rocm/3.9.1
2 加载不同的App的Module
1) 设置某项目的环境变量可以通过module load 命令加载相应环境变量。例如,加载TensorFlow1.15.3。 // 查找已有环境变量
module av
//找到需要添加的环境变量,添加环境变量
module load apps/TensorFlow/tf1.15.3-rocm4.0.1/hpcx-2.4.1-gcc-7.3.1
即加载了TensorFlow1.15.3环境。
2) 查看已经加载上的环境变量:
module list
3 sbatch脚本提交任务
本节以公共目录下的图片分类任务(ImageNet_v2模型)为例进行展示。
(1) 将ImageNet_v2模型从公共目录拷贝到个人目录。
ImageNet_v2路径:/public/software/apps/DeepLearning/Benchmark/PyTorch/
cp -rf /public/software/apps/DeepLearning/Benchmark/PyTorch/imagenet_v2 ./
(2) 编辑脚本,参数设置如下,可选择单节点单卡,单节点多卡,以及多节点多卡运算模式。(此脚本“mpi_slurm.sbatch”在个人目录里的imagenet_v2文件夹中有)
(3) 提交脚本运行。
(4) 生成标准结果输出文件和标准错误输出文件。
使用方法三:E-Shell Conda自定义环境使用
1 MiniConda安装
1) 使用wget下载
wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.9.2-Linux-x86_64.sh -i https://pypi.tuna.tsinghua.edu.cn/simple/
(或者使用本地sh安装包,路径在:/public/software/apps/DeepLearning/whl/Miniconda/)
2) 添加权限并运行
chmod +x Miniconda3-py37_4.9.2-Linux-x86_64.sh
mkdir -p ~/miniconda3/
bash Miniconda3-py37_4.9.2-Linux-x86_64.sh -b -f -p "~/miniconda3/"
rm -rf Miniconda3-py37_4.9.2-Linux-x86_64.sh
3) 初始化 conda 环境
~/miniconda3/bin/conda init
source ~/.bashrc
2 两种方式自定义PyTorch环境
2.1 本地安装PyTorch-1.7
1) 本地whl所在目录
/public/software/apps/DeepLearning/whl
2) conda创建python3.6环境
conda create -n pytorch_1.7-rocm_3.9.1-custom python=3.6
3) 在conda环境中安装PyTorch1.7
conda activate pytorch_1.7-rocm_3.9.1-custom
pip install /public/software/apps/DeepLearning/whl/rocm-3.9.1/torch-1.7.0a0-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
4) 安装依赖包
pip install absl-py six wrapt -i https://pypi.tuna.tsinghua.edu.cn/simple/
5) 安装方式一:自定义安装所需文件包
conda install lmdb=0.9.24 -y
ln -s /public/home/user_name/miniconda3/envs/pytorch_1.7-rocm_4.0.1/lib/liblmdb.so /public/home/user_name/miniconda3/envs/pytorch_1.7-rocm_4.0.1/lib/liblmdb.so.0.0.0
conda install openblas -y
编译opencv:opencv2.4 位于/public/software/apps/DeepLearning/whl/rocm-4.0.1/
cp -r /public/software/apps/DeepLearning/whl/rocm-4.0.1/opencv-2.4.13.6.tar.gz /public/home/user_name/software
tar -zxvf opencv-2.4.13.6.tar.gz
mkdir -p /public/home/user_name/miniconda3/opencv-2.4/
cd opencv-2.4.13.6
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/public/home/user_name/miniconda3/opencv-2.4 ..
make -j4 && make install
添加环境变量
vi ~/.bashrc
export LD_LIBRARY_PATH=/public/home/user_name/miniconda3/opencv-2.4/lib/:$LD_LIBRARY_PATH
source ~/.bashrc
添加所需软链接
ln -s /public/software/apps/DeepLearning/PyTorch/lib/libglog.so.0 /public/home/user_name/miniconda3/envs/pytorch_1.7-rocm_4.0.1/lib/libglog.so.0
ln -s /public/software/apps/DeepLearning/PyTorch/lib/libgflags.so.2.1 /public/home/user_name/miniconda3/envs/pytorch_1.7-rocm_4.0.1/lib/
6) 安装方法二:加载集群已安装的文件路径
修改~/.bashrc文件,加载集群已安装的PyTorch依赖包,依赖包路径在:/public/software/apps/DeepLearning/PyTorch/
vi ~/.bashrc
将如下变量放进~/.bashrc中:
export SSL_HOME=/public/software/apps/DeepLearning/Libs/openssl-1.1.0j
export OPENBLAS_HOME=/public/software/apps/DeepLearning/PyTorch/openblas-0.3.7-build
export LDMB_HOME=/public/software/apps/DeepLearning/PyTorch/lmdb-0.9.24-build
export OPENCV_HOME=/public/software/apps/DeepLearning/PyTorch/opencv-2.4.13.6-build
export BOOST_HOME=/public/software/mathlib/boost/1.72.0
export PYTORCH_LIB=/public/software/apps/DeepLearning/PyTorch
export LD_LIBRARY_PATH=${SSL_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${OPENBLAS_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${LDMB_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${OPENCV_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${BOOST_HOME}/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=${PYTORCH_LIB}/lib:$LD_LIBRARY_PATH
更新系统文件
$ source ~/.bashrc
7) 安装TorchVision,安装whl包位置在目录:
/public/software/apps/DeepLearning/whl/rocm-4.0.1
激活conda环境
conda activate pytorch_1.7-rocm_3.9.1-custom
pip install /public/software/apps/DeepLearning/whl/rocm-4.0.1/torchvision-0.8.0a0+132984f-cp36-cp36m-linux_x86_64.whl
8) 申请并登录计算节点,进行测试
salloc -p kshdtest -N 1 --gres=dcu:4
登录计算节点
ssh e05r4n01
切换rocm编译器版本,删除rocm_2.9,加载rocm_3.9.1
module rm compiler/rocm/2.9
module load compiler/rocm/3.9.1
加载conda环境中自定义安装的PyTorch环境,运行python3,检查安装情况
conda activate pytorch_1.7-rocm_3.9.1-custom$ python3
>>> import torch
>>> import torchvision
>>> torch.__version__
>>> torchvision.__version__
>>> torch.cuda.is_available()
9) 如果有提交作业脚本,在slurm脚本中添加配置MIOPEN环境变量
export MIOPEN_DEBUG_DISABLE_FIND_DB=1
export MIOPEN_DEBUG_CONV_WINOGRAD=0
export MIOPEN_DEBUG_CONV_IMPLICIT_GEMM=0
export HSA_USERPTR_FOR_PAGED_MEM=0
export GLOO_SOCKET_IFNAME=ib0,ib1,ib2,ib3
export MIOPEN_SYSTEM_DB_PATH=/temp/pytorch-miopen-2.8
2.2 在线安装PyTorch-1.9
1) 创建环境
conda create -n pytorch_1.9-rocm_4.0.1 python=3.6
conda activate pytorch_1.9-rocm_4.0.1
2) 安装pytorch-1.9和torchvision-0.10.0
pip3 install torch -f https://download.pytorch.org/whl/rocm4.0.1/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip3 install ninja -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip3 install 'git+https://github.com/pytorch/vision.git@v0.10.0'
(该文件若无法下载请联系支持人员)
3) 在slurm脚本中添加配置MIOPEN环境变量
export MIOPEN_DEBUG_DISABLE_FIND_DB=1
export MIOPEN_DEBUG_CONV_WINOGRAD=0
export MIOPEN_DEBUG_CONV_IMPLICIT_GEMM=0
export HSA_USERPTR_FOR_PAGED_MEM=0
export GLOO_SOCKET_IFNAME=ib0,ib1,ib2,ib3
export MIOPEN_SYSTEM_DB_PATH=/temp/pytorch-miopen-2.8
4) 在bashrc文件中添加路径
vi ~/.bashrc
export LD_LIBRARY_PATH=/public/home/user_name/miniconda3/bin/../lib/:$LD_LIBRARY_PATH
source ~/.bashrc
5) 测试
module switch compiler/rocm/4.0.1
conda activate pytorch_1.9-rocm_4.0.1
python3
>>>import torch
>>>torch.cuda.is_available()
True
2.3 本地安装PyTorch-1.9
1) 创建python3.6环境
conda create -n pytorch_1.9-rocm-4.0.1 python=3.6
2) 安装pytroch-1.9,本地wheel包在/public/software/apps/DeepLearning/whl/rocm-4.0.1/目录下。
conda activate pytorch_1.9-rocm-4.0.1
pip install /public/software/apps/DeepLearning/whl/rocm-4.0.1/torch-1.9.0+rocm4.0.1-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple/
将公共目录中torchvision包拷贝到自定义的conda环境中的site-package中(注意修改拷贝目的地路径的用户名)
cp -r /public/software/apps/DeepLearning/whl/rocm-4.0.1/torchvision-0.10-pytorch1.9-rocm-4.0.1-py36/torchvision/ /public/home/username/miniconda3/envs/pytorch_1.9-rocm-4.0.1/lib/python3.6/site-packages/
cp -r /public/software/apps/DeepLearning/whl/rocm-4.0.1/torchvision-0.10-pytorch1.9-rocm-4.0.1-py36/torchvision-0.10.0a0+cde7ff0.dist-info/ /public/home/username/miniconda3/envs/pytorch_1.9-rocm-4.0.1/lib/python3.6/site-packages/
安装依赖包:(可以使用清华源)
pip3 install numpy pillow -i https://pypi.tuna.tsinghua.edu.cn/simple/
3) 在slurm脚本中添加配置MIOPEN环境变量
export MIOPEN_DEBUG_DISABLE_FIND_DB=1
export MIOPEN_DEBUG_CONV_WINOGRAD=0
export MIOPEN_DEBUG_CONV_IMPLICIT_GEMM=0
export HSA_USERPTR_FOR_PAGED_MEM=0
export GLOO_SOCKET_IFNAME=ib0,ib1,ib2,ib3
export MIOPEN_SYSTEM_DB_PATH=/temp/pytorch-miopen-2.8
4) 在bashrc文件中添加路径
vi ~/.bashrc
export LD_LIBRARY_PATH=/public/home/user_name/miniconda3/bin/../lib/:$LD_LIBRARY_PATH
source ~/.bashrc