简介 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用户登录执行),并改为普通用户的属主、属组。
$ cd /root $ cp -r ./perseus-tf-vm-demo /home/username/ $ cd /home/username $ chown -R username:users ./perseus-tf-vm-demo 2)编写PBS作业脚本:普通用户模式登录管控节点,在perseus-tf-vm-demo文件下有两个文件:benchmarks和launch-example.sh。可以创建以下test.pbs作业脚本启动测试程序。
$ cat test.pbs #! /bin/bash #PBS -N Perseus
#PBS -l nodes=x:ppn=y #PBS -o perseus_pbs.log #PBS -j oe cd $PBS_O_WORKDIR nodefile=cat $PBS_NODEFILE|uniq -d |awk -F "." '{print $1}'
sh launch-example.sh x z $nodefile 其中,x 为申请计算节点数量,y为每计算节点cpu核数 , z 为每节点gpu卡数量
3)提交作业:通过qsub提交PBS作业,此时作业由调度系统调度执行。
$ 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)结果分析
多卡并行效率 = (total imgages/sec) /基准 / gpu总数量 / 节点数量 = ((568.45+568.44)/2)/ (292.57) /2 /1 = 0.9714 当Perseus 框架下的benchmarks程序运行在同一节上不同gpu配置的情况下,以单节点1gpu卡配置运行的结果为基准,通过计算其并行效率,可以分析出相对于基准,单计算节点2gpu卡配置的计算性能损耗。
多机并行效率 =(多节点 total images /sec)/ 基准 / 节点数量 =((544.36+544.36)/2 )/ (292.57)/ 2 = 0.9303 当Perseus 框架下的benchmarks程序运行在不同节点数量上每节点相同gpu配置的情况下,以单节点1gpu卡配置运行的结果为基准,通过计算其并行效率,可以分析出相对于基准,多计算节点1gpu卡配置的计算性能损耗。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。