50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

华为云深度学习的王牌—MoXing

  • 2020-04-01
  • 本文字数:1932 字

    阅读完需:约 6 分钟

华为云深度学习的王牌—MoXing

MoXing 是华为深度学习服务提供的网络模型开发 API。支持以原生 TensorFlow、Keras、slim 等 API,帮助构建图像分类、物体检测、生成对抗、自然语言处理,OCR 等多种模型。相比使用 TensorFlow 和 MXNet 原生 API,使用 MoXing API 开发深度学习算法模型编程更加简单,而且能够自动获得高性能的分布式执行能力。

华为云深度学习——高性能

华为云深度学习的高效性是通过混合并行、梯度压缩、卷积加速、EASGD 等技术加快模型训练速度;内置模型压缩能力,可极大降低模型大小成本。以下是基于华为云深度学习服务的实验数据。




由上图对比可知,MoXing 在 GPU=1 时,吞吐量和加速比优势不明显,在 GPU=4 时,吞吐量和加速比全面超越 tensorflow,GPU=8 时,吞吐量相对于别的 API 有质的飞跃。搭配使用 OBS 和华为云深度学习服务,性能具有压倒性的优势。




1、以 MoXing 实现 LARS 训练 ResNet-50 为例


LARS 允许以超大的 batch_size 训练神经网络,其优势在于能够在增大 batch_size 的情况下不影响收敛精度。增加 batch_size 就意味着能够使用更多的分布式节点对网络进行训练,从而降低训练总时长(普通的方法在使用大规模节点时,会遇到大 batch_size 导致无法收敛的问题,所以无法使用传统的方法进行训练)


LARS 的核心代码如下:


定义一个基于 LARS 的 optimizer



全部代码在(注意:基于 TensorFlow-1.4):


http://code.huawei.com/inforsight-dl/tf-models/blob/v1.x.x-tf-1.4/moxing/moxing/tensorflow/practice/image_classification/train_model_32k.py
复制代码


运行参数:


https://github.com/huaweiyun7759/backup/tree/master/Using%20MoXing%20to%20train%20resnet-50%20with%20LARS
LargeBatch Training of Convolutional Networks
复制代码


使用 MoXing 中的 LARS Optimizer 可以实现 batch_size=32k 分布式训练 ResNet-50。


损失值曲线:



正确率曲线:



  • 绿色线条为单机版 ResNet-50 收敛曲线,使用 4 个 GPU

  • 灰色线条为在绿色线条同等下,使用 FP-16 时的收敛曲线,精度几乎没有影响

  • 橙色线条为使用 MoXing 分布式训练一个 ResNet-50 模型的收敛曲线

  • 红色线条为使用 MoXing 中 LARS 特性实现的 batch_size=32k 的 ResNet-50 收敛曲线


2、MoXing 实现 DGC 训练 ResNet-50


Deep Gradient Compression: Reducing the Communication Bandwidth for Distributed Training


DGC 能减少分布式训练的通信量,有效降低由于网络带宽造成的瓶颈,在不影响收敛精度的情况下增加分布式训练加速比。


对比传统 resnet_v1_50 的训练和应用 DGC 时的训练:传统收敛精度:top-1 = 74.4, top-5 = 91.7,DGC 收敛精度:top-1 = 74.5, top-5 = 91.8。在吞吐量对比上,参见下面的图标可知,在 1Gbps 的带宽下,原生 TF 的加速比是 0.4147,DGC 的加速比是 0.8670,加速比超过原生 TF 的一倍。


正确率曲线:



梯度稀疏度变化曲线:



由图可知,深度梯度压缩的梯度稀疏度在前 5 个 epoch 时是由 75%逐渐上升到 99.9%,所以在前 5 个 epoch 时,分布式加速比一定比普通的分布式训练高,但是从第 5 个 epoch 之后,加速比则有显著提升,同时模型精度也没有下降。


从第 5 个 epoch 之后 DGC 在分布式运行中的加速比表现:



DGC 的基本使用方法是,在代码中 import moxing.tensorflow as mox,然后运行脚本时加入 dgc 的相关参数:


dgc_sparsity_strategy: 稀疏度策略dgc_momentum_type: momentum策略dgc_momentum:momentum数值dgc_momentum_factor_masking: 是否应用factormaskingdgc_total_samples:训练集样本数量
复制代码


代码(基于 TensorFlow-1.4):


http://code.huawei.com/inforsight-dl/tf-models/blob/v1.x.x-tf-1.4/moxing/moxing/tensorflow/practi
复制代码


运行参数:


https://github.com/huaweiyun7759/backup/tree/master/Using%20MoXing%20to%20train%20resnet-50%20with%20DGC
复制代码

MoXing 程序基本结构

MoXing 框架简单易用,直接将代码放在华为云深度学习服务(DLS)上,就可以运行,单机分布式一套代码,数据读取都是优化过的,无需用户再改动。


代码有很多情况,均基于 TensorFlow-1.4,运行参数请参考代码本身。


mnist手写数字识别代码:http://code.huawei.com/inforsight-dl/tf-models/blob/v1.x.x-tf-1.4/moxing/moxing/tensorflow/practice/image_classification/train_tf_mnist.py
ImageNet-10k图像分类:http://code.huawei.com/inforsight-dl/tf-models/blob/v1.x.x-tf-1.4/moxing/moxing/tensorflow/practice/image_classification/train_model.py
预置模型库fine-tuning:http://code.huawei.com/inforsight-dl/tf-models/blob/v1.x.x-tf-1.4/moxing/moxing/tensorflow/practice/image_classification/finetune_model.py
复制代码


本文转载自 华为云产品与解决方案 公众号。


原文链接:https://mp.weixin.qq.com/s/Ocw0zVoPrSCcYMcdiZqo3w


2020-04-01 21:202056

评论

发布
暂无评论
发现更多内容

《谛听说智能》迎来圆满落幕,企业降本增效新指南

Geek_e670ab

Aspose.pdf破解全程记录

janux

MySQL-技术专题-事务实现原理

码界西柚

英特尔为北京2022年冬奥会打造智慧新体验

E科讯

链表反转的两种实现方法,后一种击败了100%的用户

小Q

Java 程序员 数据结构 算法 开发

字节跳动总结的这份《Java设计模式(实战+源码)》PDF突然火了,完整版免费开放下载!

Java架构之路

Java 程序员 字节跳动 编程语言 设计模式

伯克利:serverless是下一代计算范式

华为云开发者联盟

云计算 服务

Minds Factory 2020 HUAWEI HiCar 创新活动

Jessie

物联网 创新 智能 汽车 大赛

MySQL-技术专题-解决死锁问题

码界西柚

c++笔记——类

菜鸟小sailor 🐕

c++

Github资源在线加速下载

xcbeyond

GitHub 工具类网站

滴滴导航若干关键功能的技术突破与实践

滴滴技术

人工智能 滴滴技术 滴滴导航

链表反转的两种实现方法,后一种击败了100%的用户!

王磊

Java 数据结构 算法

关于GO语言,这篇文章讲的很明白

华为云开发者联盟

编程语言 语言 Go 语言

MySQL-技术专题-mysql的联合索引

码界西柚

MySQL-技术专题-存储引擎详解

码界西柚

四面阿里成功定级P6,想和Java程序员谈一谈

Java架构之路

Java 程序员 面试 编程语言

违规内容屡屡曝光下,企业如何自救

Geek_e670ab

技术分享丨华为鲲鹏架构Redis知识二三事

华为云开发者联盟

redis 鲲鹏

程序员的美丽假期(并不)

Learun

程序员 敏捷开发 软件设计

DB-Engines 10月数据库排名:“三大王”无人能敌,PostgreSQL紧随其后

华章IT

数据库 postgresql Clickhouse MySQ

不走寻常路

滴滴技术

招聘 滴滴技术 地图与公交事业群分享月

水滴石穿之Java学习之路

价投小邱

Java 学习 后端

九面成功定级阿里资深架构师,拿到180W年薪+15000股,学习一下大神的成长之路!

Java架构追梦

Java 学习 架构 面试 微服务

Spring Cloud 微服务实践(8) - 部署

xiaoboey

Docker zookeeper 微服务 Spring Cloud actuator

对象的实例化内存布局与访问定位

朱华

Java 对象初始化

看这里!带你快速体验MindSpore V1.0(For ubuntu 18.04)

华为云开发者联盟

华为 AI 技术

Java 未捕获异常处理

朱华

Java Exception

使用 Flutter 快速实现聊天应用

LeanCloud

flutter 后端 聊天

LeetCode题解:83. 删除排序链表中的重复元素,HashMap,JavaScript,详细注释

Lee Chen

大前端 LeetCode

解密360容器云平台的Harbor高可用方案

博文视点Broadview

容器 高可用 云原生 k8s Harbor

华为云深度学习的王牌—MoXing_文化 & 方法_华为云产品与解决方案_InfoQ精选文章