阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

华为云深度学习的王牌—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


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-04-01 21:201221

评论

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

【10.21-10.28】写作社区优质技术博文回顾

InfoQ写作社区官方

优质创作周报

多线程、多进程同时操作MMAP,会怎么样?

C++后台开发

多线程 后端开发 多进程 linux开发 C++开发

云科通明湖:金融业务可持续性能力建设,少不了这块“拼图”!

云科通明湖

负载均衡

软件测试面试真题 | 请介绍一下Python中的深拷贝和浅拷贝

测试人

Python 软件测试 面试题 测试开发

低代码又又又“出圈”了

优秀

低代码

云原生颠覆实践,可持续性应用创新引擎

云科通明湖

负载均衡 云原生

大咖说·对话开源|论数据库开源人才培养的实践

大咖说

数据库 阿里云 开源 人才培养

5000字解读《低代码发展白皮书(2022年)》

信通院IOMM数字化转型团队

低代码 无代码 低代码报告 IOMM

即时通讯IM WorkPlus支持国产化信创环境

WorkPlus

千企千面,WorkPlus面向政企提供个性化的数智办公平台解决方案

WorkPlus

数据可视化大屏酷炫秘籍之前端开发者自己动手

葡萄城技术团队

前端 BI 可视化数据

牛掰!阿里十年架构师总结的分布式原理、设计与实战笔记

小小怪下士

Java 程序员 面试 分布式

“程”风破浪的开发者|Web 3.0 是泡沫还是金矿?

架构精进之路

1024 Web3.0 “程”风破浪的开发者

数字政府行业趋势洞察报告(2022年)解读

信通院IOMM数字化转型团队

数字政府 IOMM 政府数字化转型

Wallys/QCN9074 11ax 4x4 MU-MIMO 2.4G M.2 /2.4GHz, max 23dBm per chain, up to 1147Mbps //QCN9072/QCN9024

wallys-wifi6

IPQ6010 IPQ6000

Baklib知识分享|文档管理促进企业成长进步

Baklib

文档管理

“程”风破浪的开发者|架构师的思维转变

CTO技术共享

学习方法 架构师 “程”风破浪的开发者

Sanitizers 系列之 address sanitizer 用法篇

网易云信

算法 语言 & 开发

去摩尔纹不用再凹姿势拍照了!合合信息智能文字识别“黑科技”上线扫描全能王

合合技术团队

人工智能 摩尔纹

颠覆性突破重构企业价值

云科通明湖

负载均衡 云原生

【网易云信】Sanitizers 系列之 address sanitizer 用法篇

网易智企

算法 开发语言

CSP 直通车 | 在线直播认证培训双周末班 火热报名中

ShineScrum捷行

敏捷教练 ScrumMaster认证 Scrum认证

Groovy Swagger @requestBody 加载超时 一键搞定

FunTester

数据库浅析

Andy

NFT质押挖矿分红dapp系统开发功能介绍

开发微hkkf5566

“程”风破浪的开发者|CTO浅谈数字化转型失败原因

CTO技术共享

学习方法 数字化转型 “程”风破浪的开发者

API 动态更新 Upstream

云科通明湖

API upstream 动态更新

【web 开发基础】PHP 中的特殊流程控制(continue) -PHP 快速入门 (21)

迷彩

continue 10月月更 循环控制 PHP基础

MySql浅析

Andy

中台“不火”了,企业“底座”却火了

WorkPlus

“程”风破浪的开发者|CTO浅谈数字化转型

CTO技术共享

学习方法 CTO 数字化转型 “程”风破浪的开发者

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