弹性高性能计算E-HPC TensorFlow

By | 2021年4月22日

简介

E-HPC不仅支持工业/科研行业的高性能计算作业,还可以支持机器学习类作业,本文档介绍在E-HPC上部署和执行TensorFlow作业的基本流程。

本案例使用的Perseus是阿里云提供的一种统一支持Tensorflow、Caffe、MXNET、PyToch的分布式训练的深度优化框架,目的是为了机器学习提速,提升训练效率。部署Perseus的同时会自动部署TensoFlow框架。

本案例测试程序为tensorflow benchmarks,E-HPC集群创建完成后,存放在/root/perseus-tf-vm-demo目录中。

创建E-HPC集群并适配Persues环境

目前,Persues已经集成在E-HPC产品中,若在E-HPC适配Persues运行环境,需要在E-HPC创建过程完成以下几步:

1)创建集群时,在【硬件配置】中选择【计算节点】 时,选择带有NVIDIA P100 GPU的实例,如下图所示:

GPU节点

2)在【软件配置】下,【镜像类型】选择 镜像市场,【操作系统】选择 阿里ai云加速镜像Perseus v0.9.3r3

示例程序测试

待集群启动后,可以通过以下几个步骤进行示例的测试:

1)拷贝测试程序:perseus-tf-vm-demo 示例程序存放在镜像的/root目录下。运行时,可以将perseus-tf-vm-demo从/root目录中拷贝到自己普通用户的家目录下(可以用root用户登录执行),并改为普通用户的属主、属组。

  
  1. $ cd /root
  2. $ cp -r ./perseus-tf-vm-demo /home/username/
  3. $ cd /home/username
  4. $ chown -R username:users ./perseus-tf-vm-demo

2)编写PBS作业脚本:普通用户模式登录管控节点,在perseus-tf-vm-demo文件下有两个文件:benchmarks和launch-example.sh。可以创建以下test.pbs作业脚本启动测试程序。

  
  1. $ cat test.pbs
  2. #! /bin/bash
  3. #PBS -N Perseus
  4. #PBS -l nodes=x:ppn=y
  5. #PBS -o perseus_pbs.log
  6. #PBS -j oe
  7. cd $PBS_O_WORKDIR
  8. nodefile=`cat $PBS_NODEFILE|uniq -d |awk -F "." '{print $1}'`
  9. sh launch-example.sh x z $nodefile

其中,x 为申请计算节点数量,y为每计算节点cpu核数 , z 为每节点gpu卡数量

3)提交作业:通过qsub提交PBS作业,此时作业由调度系统调度执行。

  
  1. $ qsub test.pbs

运行结果及分析

1)当计算节点数量为1时,每节点gpu卡为1,运行后的结果可以作为基准。图表示在tensorflow环境但节点下每秒钟处理292.57张图片。

13_52_41__03_04_2019

​ 当计算节点数量为1,每节点gpu卡为2,即单机多卡计算时:

16_20_49__03_04_2019

​ 当计算节点数量为2,每节点gpu卡为1,即多机分布式计算时:

15_37_53__03_04_2019

2)结果分析

  
  1. 多卡并行效率 = (total imgages/sec) /基准 gpu总数量 节点数量
  2. = ((568.45+568.44)/2)/ (292.57) 2 1
  3. = 0.9714

当Perseus 框架下的benchmarks程序运行在同一节上不同gpu配置的情况下,以单节点1gpu卡配置运行的结果为基准,通过计算其并行效率,可以分析出相对于基准,单计算节点2gpu卡配置的计算性能损耗。

  
  1. 多机并行效率 =(多节点 total images sec)/ 基准 节点数量
  2. =((544.36+544.36)/2 )/ 292.57)/ 2
  3. = 0.9303

当Perseus 框架下的benchmarks程序运行在不同节点数量上每节点相同gpu配置的情况下,以单节点1gpu卡配置运行的结果为基准,通过计算其并行效率,可以分析出相对于基准,多计算节点1gpu卡配置的计算性能损耗。

请关注公众号获取更多资料

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注