写点什么

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

评论

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

阿里,字节,腾讯,面试题都涵盖了,这一份Java面试文档也太强了

数据库 程序员 面试

技术招聘常被吐槽,企业应该考虑好这一点

李忠良

28天写作

项目管理系列(8)-从0到1搭建PMO(一)

Ian哥

28天写作

理解领域驱动设计

编程 领域驱动设计

GoF23 中的对象关系模式!

鲁米

方法论 设计模式 构建模型

Mybatis【14】-- Mybatis如何实现一对多查询?

秦怀杂货店

数据库 mybatis

Soul 源码阅读 03|WebSocket 同步数据分析

哼干嘛

Java 源码分析 Soul网关

开放式API安全防护的七大原则

架构精进之路

API 七日更 28天写作

读任正非“星光不问赶路人”有感

JiangX

华为 战略 28天写作 任正非

迁移到 Go Modules

Rayjun

Module Go 语言

区块链量化交易怎么做?

v16629866266

区块链数字货币交易所系统开发|区块链数字货币交易所软件APP开发

系统开发

数字资产钱包系统软件开发|数字资产钱包APP开发

系统开发

你有多久没去看海了呢「幻想短篇 15/28」

道伟

28天写作

币币交易系统APP开发|币币交易软件开发

系统开发

一个系统小BUG修复投产居然花了3个小时来处理(下)

罗小龙

28天写作 投产事故 解决思路

大数据知识专栏 - Hadoop的资源管理 Yarn介绍

小马哥

大数据 hadoop YARN 七日更

提问也是一门学问

xcbeyond

程序人生 方法论 技巧 28天写作

设计模式【2.1】-- 简单工厂模式怎么演变成工厂方法模式?

秦怀杂货店

设计模式 工厂模式 23种设计模式

使用 Docker 部署 RabbitMQ 没有日志?添加这两条配置,轻松搞定

AlwaysBeta

Docker RabbitMQ 消息队列 消息中间件

一篇让你彻底了解http请求报文和响应报文的结构

Java架构师迁哥

为什么很多事情说起来容易做起来难

Justin

学习 心理学 成长 心态 28天写作

【CSS】红砖背景

德育处主任

css3 大前端 html/css CSS小技巧 28天写作

动听百年:音乐播放器发展沉浮史

艾小仙

互联网

悟透前端 | 参悟Javascript中的call和apply

devpoint

JavaScript 大前端 call apply

如何管理过程质量?新手管理者的陷阱

一笑

管理 管理者 28天写作 质量保证

十个手指头弹钢琴、高水准欣赏探讨优雅益智的古典音乐技术 数学不好很难进行

我是如何学习编程的?

熊斌

学习方法 个人成长 编程之路 28天写作

无代码、Excel与Airtable

lidaobing

低代码 Excel 无代码开发 28天写作 Airtable

什么是上瘾?

石云升

28天写作 上瘾

交易所软件系统开发|交易所APP开发

系统开发

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