写点什么

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

2020 年 4 月 01 日

华为云深度学习的王牌—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 年 4 月 01 日 21:20315

评论

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

Offer收割机!上线三天知乎获20W浏览量的阿里金三银四面试参考指南我粉了!

Java王路飞

Java 程序员 架构 面试 阿里

探讨|波卡需具备哪些条件才可快速比肩甚至超过以太坊?

Patract

rust Substrate polkadot Patract Wasm

云原生开发者须具备的1+N技能,开启第二曲线

华为云开发者社区

DevOps 云原生 HDC2021 华为云DevCloud 企业数字化

推荐一个还不错的YouTube视频下载软件

科技猫

软件 视频处理 资源分享 视频下载 youtube

突然接到开除通知,原因竟然是我不用Java注解?网友直呼:好家伙

java专业爱好者

Java

《本人娶刘亦菲的可行性报告》原文

不脱发的程序猿

程序人生

开发也可以如此简单!华为云发布两款开发工具

华为云开发者社区

云原生 HDC2021 编码工具 SmartAssist

IPFS挖矿是怎样赚钱的?如何降低IPFS挖矿成本?

投资矿机v:IPFS1234

IPFS挖矿是怎样赚钱的

IPFS官网最新消息通知,IPFS官方最新消息有什么?

投资矿机v:IPFS1234

IPFS官网最新消息通知 IPFS官方最新消息有什么

洞悉MySQL底层架构:一举拿下腾讯美团滴滴offer,持续更新中

欢喜学安卓

android 程序员 面试 移动开发

腾讯云发布“创新成长快线”,首期向创业者赠送10亿分钟实时音视频时长

腾讯云视频云

音视频

号称微服务完美解决方案?阿里2021全新开源的SpringCloud Alibaba速成笔记也太香了

程序员小毕

Java 程序员 架构 面试 阿里

「网络安全自学篇」黑客攻防和实战编程看这篇就够了(内含实战)

Machine Gun

黑客 网络安全 信息安全 渗透测试

带你通览波卡:链接 Web 3.0 世界的入口

Patract

rust Substrate polkadot Patract Wasm

刹车失灵,数据的刹车是否也会失灵?

CloudQuery社区

数据库 运维 dba 数据库管理工具

成功入职腾讯大厂 分享我的成功秘籍:10W字复习大纲手册

比伯

Java 架构 程序人生 编程语言 计算机

系统高可用之健康检查和健康度量那些事

vivo互联网技术

高可用 服务器

金三银四跳槽季,美团、字节、阿里、腾讯Java面经,终入字节

Crud的程序员

Java 架构 java面试

linux高性能服务器编程--高性能服务器程序框架

赖猫

Linux 服务器开发 高性能服务器 C/C++后端

惊艳!京东T8纯手码的Redis核心原理手册,基础与源码齐下

Crud的程序员

Java redis 架构 java程序员 java编程

为工地装上大脑,落实企业安全管理责任

百度大脑

百度大脑 工地

剖析MySQL黑盒——MySQL架构设计

学Java关注我

Java 编程 架构 程序人生 计算机

java单元测试代码自动生成

范晓刚

自动化 单元测试

GitHub惊现!全网首份开源的深入理解JVMG1GC的算法与实现手册

周老师

Java 编程 程序员 架构 面试

数据驱动的元数据组件

鲸品堂

方法论 架构设计原则 架构设计实战 数据分析方法论

Android 关于CPU类型的so文件兼容问题(ABI)

寻找生命中的美好

android native so库 abi so文件

Substrate 合约书之合约语言框架

Patract

rust Substrate polkadot Patract Wasm

百度集团资深副总裁李震宇:Apollo开放平台打造全球最强自动驾驶量产引擎 助力车企造好车

百度大脑

自动驾驶 Apollo

被“百万”程序员吹捧上天的阿里Java面试手册!GitHub已惨遭封杀

周老师

Java 编程 程序员 架构 面试

合作伙伴眼中的鸿蒙,专访海雀科技研发总监李尹

Geek_283163

JAVA 中 -> 是什么意思?

Sakura

四月日更

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