深入浅出:如何在超算平台上高效使用深度学习环境

简介: 之前已经介绍过 Slurm 基本指令的学习,于是我准备新开一个笔记,来一个综合应用:在超算平台能跑个深度学习模型。在很多教程都是教大家加载 conda 环境变量,重新安装一个。而我感觉只要平台有,就用平台的,因此先用 module avail 看看有没有可以使用的环境刚好我在太原超算看到 apps/Pytorch/1.8.0-dtk21.04-cp6,本着能用尽用的原则,以此来进行我的教程,当然最后也附带了从零开始制作自己的环境教程。

之前已经介绍过 Slurm 基本指令的学习,于是我准备新开一个笔记,来一个综合应用:在超算平台能跑个深度学习模型。


在很多教程都是教大家加载 conda 环境变量,重新安装一个。

而我感觉只要平台有,就用平台的,因此先用 module avail 看看有没有可以使用的环境

刚好我在太原超算看到 apps/Pytorch/1.8.0-dtk21.04-cp6,本着能用尽用的原则,以此来进行我的教程,当然最后也附带了从零开始制作自己的环境教程。

手动挡

  1. 查看队列:whichpartition

申请节点:salloc -p 队列名 -N 1 --gres=dcu:1,ps:看看自己账号能申请多少个 dcu;salloc 具体参数根据情况配置,我这里只是假设。(等待出现:salloc: Nodes b09r3n18 are ready for job,后来可能附带冲突关系不用理会!,目测是因为开辟的新节点与当前环境变量冲突,开辟的新节点由于需要 DCU,会自动加载 compiler/devtoolset/7.3.1 、 mpi/hpcx/2.11.0/gcc-7.3.1 、compiler/dtk/22.10.1(随着时间变化可能不同))

登录节点:ssh b09r3n18,注意登录之后,原来的环境变量已经被切换了

这一步可能省略,由于我要加载的 pytorch 需要 21.04 版本的 dtk,因此需要使用:module switch compiler/dtk/21.04

加载 pytorch 预设环境变量:module load apps/Pytorch/1.8.0-dtk21.04-cp6

启动 python 环境测试, python3 ,注意:有些超算平台可能存在 python2,如果输入 python,会进入 python2,而我们可以通过 module show apps/Pytorch/1.8.0-dtk21.04-cp6 看到这是安装 python3.6.8 下的。

输入 import torch、torch.cuda.is_available()、torch.__version__,如果输出无误,就可以 ctrl+D 退出 python 环境,在登录的节点运行 python xxx.py --batch_size=8 ->当然这是单卡运行

自动挡-sbatch 式

自己建立. sh 作业提交脚本,

首先也需要查看队列:whichpartition 以及查看面板的可用资源,再编写。

不能在登录的计算节点里使用作业提交脚本,当提交 sh 文件,相当于使用 salloc 分配,系统会自动进入开辟的空间。

  • test. sh:
#!/bin/bash
# 作业名称
#SBATCH -J weather_classification
# 指定队列,通过`whichpartition`看
#SBATCH -p ty_normal
# 节点数,可以看首页的可访问队列有多少空闲节点
#SBATCH -N 1
# 运行的任务数量
#SBATCH -n 2
# 表示每个任务占用多少个CPU,也就是说-n * -c = CPU核数!现在说明申请4核。
#SBATCH -c 2
# 需要1个dcu,后面的数字根据首页的加速卡数量,如果是英伟达GPU,改成gpu:1即可
#SBATCH --gres=dcu:1
#SBATCH -o %j.out  
#SBATCH -e %j.err
module swtich compiler/dtk/21.04
module load apps/Pytorch/1.8.0-dtk21.04-cp6
python3 test.py

注意:python3!

  • test. py:
import torch
print(torch.cuda.is_available())
print(torch.__version__)

最后执行 sbatch test.sh


有时候输出 sbatch: error: Batch job submission failed: Requested node configuration is not available,说明申请的资源不可取,太大了。


扩展-从零开始制作自己的环境教程

扩展-从零开始制作自己的环境教程

当然,官方安装的有些包是不存在的,这时候我们就不能依赖官方的,需要激活 conda 环境以安装。

首先通过 module avail 看看有什么版本的 anaconda,正好看到 apps/anaconda3/5.2.0,于是通过 module load apps/anaconda3/5.2.0 激活。

然后 conda create -n torch python=3.6.8 创建环境,source activate torch 在这个环境安装一些不在系统预存的包需要附带 -i https://pypi.tuna.tsinghua.edu.cn/simple 加速安装。(注销是:source deactivate)

适用 pip3 install /public/software/apps/DeepLearning/whl/dtk21.04.1/torch-1.7.0a0-cp36-cp36m-linux_x86_64.whl 安装适配 DCU 的 pytorch 教程 (其它东西都在这类 /public/software/apps/DeepLearning/whl/ 目录找找,能安装 paddlepaddle、tensorflow 等等;dtk 建议老版本,毕竟稳定最重要了;为什么在前面安装 python 3.6.8 版本,看吧,原因就在这里,这 whl 也只适合 36)

之后安装自己需要的包即可。注意:在老版本 python 安装 opencv,需要指定版本,例如版本 4.3.0.38,不然会报错。

添加环境变量(如果没有报错就不需要!)。当引用 torch 可能会出现如下错误, ImportError: libglog.so.0: cannot open shared object file: No such file or directory,这时需要

vi ~/pytorch_env.sh

export LD_LIBRARY_PATH=/public/software/apps/DeepLearning/PyTorch_Lib/lib:/public/software/apps/DeepLearning/PyTorch_Lib/lmdb-0.9.24-build/lib:/public/software/apps/DeepLearning/PyTorch_Lib/opencv-2.4.13.6-build/lib:/public/software/apps/DeepLearning/PyTorch_Lib/openblas-0.3.7-build/lib:$LD_LIBRARY_PATH

保存并退出,然后执行 source ~/pytorch_env.sh。以后每次登录新的节点时,都要执行一次

  1. 编写脚本
#!/bin/bash
# 作业名称
#SBATCH -J weather_classification
# 指定队列,通过`whichpartition`看
#SBATCH -p ty_normal
# 节点数,可以看首页的可访问队列有多少空闲节点
#SBATCH -N 1
# 运行的任务数量
#SBATCH -n 1
# 表示每个任务占用多少个CPU,也就是说-n * -c = CPU核数!
#SBATCH -c 1
# 需要1个dcu,后面的数字根据首页的加速卡数量,如果是英伟达GPU,改成gpu:1即可
#SBATCH --gres=dcu:1
#SBATCH -o %j.out  
#SBATCH -e %j.err
module load apps/anaconda3/5.2.0
source activate torch
module switch compiler/dtk/21.04
python test.py

最后,提醒大家:

丹规千万条,核时第一条。关炉不规范,钞票两行泪!

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
27天前
|
机器学习/深度学习 并行计算 算法框架/工具
在Python中进行深度学习环境准备
在Python中进行深度学习环境准备
33 4
|
28天前
|
机器学习/深度学习 PyTorch TensorFlow
在Python中搭建深度学习处理环境安装深度学习框架
在Python中搭建深度学习处理环境安装深度学习框架
26 3
|
28天前
|
机器学习/深度学习 并行计算 PyTorch
在Python中搭建深度学习处理环境创建虚拟环境
在Python中搭建深度学习处理环境创建虚拟环境
18 3
|
1月前
|
机器学习/深度学习 并行计算 TensorFlow
在Python中搭建深度学习处理环境
在Python中搭建深度学习处理环境
25 4
|
1月前
|
机器学习/深度学习 人工智能 分布式计算
阿里云PAI:一站式AI研发平台,引领深度学习潮流
阿里云PAI:一站式AI研发平台,引领深度学习潮流 随着人工智能的飞速发展,深度学习框架已经成为AI研发的核心工具。然而,选择合适的深度学习框架并不容易,需要考虑的因素包括计算性能、易用性、支持的算法组件等多种因素。今天,我们就来介绍一款一站式AI研发平台——阿里云PAI,看看它如何解决这些痛点。
51 1
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
VScode配置深度学习环境python+conda
VScode配置深度学习环境python+conda
58 0
|
1月前
|
机器学习/深度学习 Shell 数据安全/隐私保护
深度学习-虚拟机当服务器的安装环境
深度学习-虚拟机当服务器的安装环境
|
2月前
|
机器学习/深度学习 并行计算 Linux
linux搭建miniconda+cuda+pytoch深度学习环境
本文以图文结合的方式,详细记录了linux操作系统搭建miniconda+cuda+pytoch深度学习环境的步骤,供大家参考学习。
125 1
|
6月前
|
机器学习/深度学习 Ubuntu 机器人
【Ubuntu18配置Anaconda深度学习环境】
【Ubuntu18配置Anaconda深度学习环境】
135 1
|
3月前
|
机器学习/深度学习 网络协议 Docker
基于docker搭建conda深度学习环境(支持GPU加速)
在Ubuntu系统,创建一个docker,然后搭建conda深度学习环境,这样可以用conda或pip安装相关的依赖库了。
105 0

相关产品