走近深度学习,认识MoXing:初识华为云ModelArts的王牌利器 — MoXing
【摘要】 本文为MoXing系列文章第一篇,主要介绍什么是MoXing,MoXing API的优势以及MoXing程序的基本结构。
MoXing的概念
MoXing是华为云深度学习服务提供的网络模型开发API。相对于TensorFlow和MXNet等原生API,MoXing API让模型的代码编写更加简单,允许用户只需要关心数据输入(input_fn)和模型构建(model_fn)的代码,即可实现任意模型在多GPU和分布式下的高性能运行。
MoXing-TensorFlow支持原生TensorFlow、Keras、slim等API,可以构建图像分类、物体检测、生成对抗、自然语言处理、OCR等多种模型。
为什么取名“MoXing”?
首先,“MoXing”是“模型”一词的汉语拼音。因为深度学习时代,中国的科研和工程团队逐步成为行业的引领者,使用源于中文的名称,彰显了深度学习服务(DLS)研发团队的自信,DLS研发团队将努力把MoXing API打造为模型开发领域的业界标杆。
同时,“MoXing”也寓意“Model Crossing”。“Crossing”一方面具有“道路交汇口”的含义;Model Crossing代表MoXing API汇集了来自四面八方的经典模型,为用户打通连接模型领域最新成果的道路。Crossing另一方面也具有“跨越式航行”的含义;Model Crossing代表MoXing API旨在实现模型的跨越式发展,为用户提供了显著优于原生API的性能,并且具有更强的易用性。
当然,脑洞大开的用户也可以把MoXing理解成“魔性”,就算名称噱头再多,也盖不了它的优秀。走近深度学习,认识MoXing,充分发掘它的潜力,MoXing API的魔性会为您的模型开发如虎添翼!
MoXing API的优势
华为云深度学习服务融合了混合并行、梯度压缩、卷积加速、EASGD等技术,并且MoXing框架可将单机代码自动分布式化,进行大规模的分布式训练,极大的提高了模型训练速度和效率。
以下是基于华为云深度学习服务的实验数据。
通过对比可以看出,MoXing在GPU=1时,吞吐量和加速比优势并不明显;但在GPU=4时,吞吐量和加速比已全面超越tensorflow;在GPU=8时,吞吐量相对于其他API有质的飞跃。
下面通过2个例子来介绍MoXing的性能。
1、以MoXing实现LARS训练ResNet-50为例
LARS允许以超大的batch_size训练神经网络,其优势在于能够在增大batch_size的情况下不影响收敛精度,增加batch_size就意味着能够使用更多的分布式节点对网络进行训练,从而降低训练总时长(传统方法在使用大规模节点时,会遇到大batch_size导致无法收敛的问题,所以无法使用传统的方法进行训练)。
使用MoXing中的LARS Optimizer可以实现batch_size=32k分布式训练ResNet-50。
损失值曲线图
正确率曲线图
⊙ 绿色线条为单机版ResNet-50收敛曲线,使用4个GPU。
⊙ 灰色线条为在绿色线条同等下,使用FP-16时的收敛曲线,精度几乎没有影响。
⊙ 橙色线条为使用MoXing分布式训练一个ResNet-50模型的收敛曲线。
⊙ 红色线条为使用MoXing中LARS特性实现的batch_size=32k的ResNet-50收敛曲线。
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
2、MoXing实现DGC训练ResNet-50
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: 是否应用factor masking
dgc_total_samples: 训练集样本数量
代码(基于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.py
MoXing程序基本结构
Moxing框架简单易用,直接将代码放在华为云深度学习服务上就可以运行,单机分布式一套代码,数据读取都已优化,无需用户再改动。代码有很多情况,均基于TensorFlow-1.4,运行参数请参考代码本身。
MoXing系列文章下期预告:基于Tensorflow运行参数教程。
走近深度学习,认识MoXing:初识华为云ModelArts的王牌利器 — MoXing的更多相关文章
- 华为云ModelArts图深度学习,学习知识还能考取微认证
作为人工智能最前沿的技术之一,图深度学习被公认是人工智能认识世界实现因果推理的关键,也是深度学习未来发展的方向.但深度学习对图数据模型的支持性差一直是众多研究者难以攻克的难点,因此图深度学习在实际生产 ...
- 云图说丨初识华为云微服务引擎CSE
摘要:微服务引擎(Cloud Service Engine,CSE),是用于微服务应用的云中间件,为用户提供注册发现.服务治理.配置管理等高性能和高韧性的企业级云服务能力 本文分享自华为云社区< ...
- 自动驾驶轻松开发?华为云ModelArts赋能智慧出行
作为战略新兴产业,人工智能已经开始广泛应用于多个领域.近几年,科技公司.互联网公司等各领域的企业纷纷布局自动驾驶.那么,自动驾驶技术究竟发展得如何了?日前,华为云携手上海交通大学创新中心举办的华为云人 ...
- 本科阶段就挑战自动驾驶开发?华为云ModelArts帮你轻松实现!
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 2020国防科大综述:3D点云深度学习——综述(3D点云分割部分)
目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D点云分割 3.1 3D语义分割 3.1.1 基于投影的方法 多视图表示 球形表示 3.1.2 基于离散的方法 稠密离散表示 稀 ...
- 华为云ModelArts 2.0全面升级,革新传统AI开发模式
[中国,上海,9月20日] 在HUAWEI CONNECT 2019期间,华为云EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台ModelArts 2.0. 现场 ...
- 深度学习菜鸟的信仰地︱Supervessel超能云服务器、深度学习环境全配置
并非广告~实在是太良心了,所以费时间给他们点赞一下~ SuperVessel云平台是IBM中国研究院和中国系统与技术中心基于POWER架构和OpenStack技术共同构建的, 支持开发者远程开发的免费 ...
- 使用亚马逊云服务器EC2做深度学习(一)申请竞价实例
这是<使用亚马逊云服务器EC2做深度学习>系列的第一篇文章. (一)申请竞价实例 (二)配置Jupyter Notebook服务器 (三)配置TensorFlow (四)配置好的系统 ...
- 2020国防科大综述:3D点云深度学习—综述(点云形状识别部分)
目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D形状分类 3.1基于多视图的方法 3.2基于体素的方法 3.3基于点的方法 3.3.1 点对多层感知机方法 3.3.2基于卷积 ...
随机推荐
- 学习 Git
Git 简介 Git是目前比较流行的分布式版本控制系统之一,能够记录文件的每次修改,还实现了多人并行开发; Git 组成 工作区(写东西之地) 暂存区 本地仓库(.git) 远程仓库(.repro) ...
- 如何让elemengUI中的表格组件相同内容的单元格自动合并
1. 前言 这两天在工作中遇到这样一个需求:将某个Excel中的数据在页面上以表格形式展示出来,并且尽量保持数据层级与Excel中一致.在原始Excel文件中,对每一行相同的数据都进行了合并,使得数据 ...
- STL.h
最近老是被系统的一些STL卡到飞起,然后就手打了一个STL.h 库函数还没有打完,以后打新的还会再更,大家也可以使用,顺便帮我找一下bug,然后我再改进! template< typename ...
- [转载]2.8 UiPath中断活动Break的介绍和使用
一.Break的介绍 Break: 用于结束当前循环. 注意: Break控件只能用于For Each 循环中 二.Break在UiPath中结合For Each循环的使用 1.打开设计器,在设计库中 ...
- 你了解MySQL的加锁规则吗?
注:加锁规则指的是next-key lock,如果还不了解next-key lock,请阅读上一篇博客 加锁规则可以概括为:两个原则.两个优化和一个bug: 原则1:加锁的基本单位是next-key ...
- jquery倒计时代码
jquery倒计时代码<pre> <span id="day_show">0天</span> <strong id="hour_ ...
- java-optional-快速使用-教程
前言: 在公司中开发项目时碰到一个从Java8引入的一个Optional类,以前jdk版本使用的比较低,没有使用过,于是我在网上浏览了一些文档写篇文章学习总结一下,希望没有用过的朋友们都能够快速学习到 ...
- windows 2008 服务器优化:停powershell,卸载不相干软件,开启防火墙
windows 2008 作为 全录 的服务器,经常cpu达到100%,查看是powershell.exe占cpu有98%.影响 全录 软件进行电话录音.所以想禁止powershell.exe程序启动 ...
- mybatis什么时候必须指定jdbcType
#{property,javaType=int,jdbcType=NUMERIC}如果一个列允许 null 值,并且会传递值 null 的参数,就必须要指定 JDBC Type
- [LC]643题 Maximum Average Subarray I(子数组最大平均数 I)
①英文题目 Given an array consisting of n integers, find the contiguous subarray of given length k that h ...