【摘要】 本文为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

运行参数:https://github.com/huaweiyun7759/backup/tree/master/Using%20MoXing%20to%20train%20resnet-50%20with%20LARS

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: 训练集样本数量

运行参数:https://github.com/huaweiyun7759/backup/tree/master/Using%20MoXing%20to%20train%20resnet-50%20with%20DGC

代码(基于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运行参数教程。

来源:华为云社区原创  作者:云上AI

走近深度学习,认识MoXing:初识华为云ModelArts的王牌利器 — MoXing的更多相关文章

  1. 华为云ModelArts图深度学习,学习知识还能考取微认证

    作为人工智能最前沿的技术之一,图深度学习被公认是人工智能认识世界实现因果推理的关键,也是深度学习未来发展的方向.但深度学习对图数据模型的支持性差一直是众多研究者难以攻克的难点,因此图深度学习在实际生产 ...

  2. 云图说丨初识华为云微服务引擎CSE

    摘要:微服务引擎(Cloud Service Engine,CSE),是用于微服务应用的云中间件,为用户提供注册发现.服务治理.配置管理等高性能和高韧性的企业级云服务能力 本文分享自华为云社区< ...

  3. 自动驾驶轻松开发?华为云ModelArts赋能智慧出行

    作为战略新兴产业,人工智能已经开始广泛应用于多个领域.近几年,科技公司.互联网公司等各领域的企业纷纷布局自动驾驶.那么,自动驾驶技术究竟发展得如何了?日前,华为云携手上海交通大学创新中心举办的华为云人 ...

  4. 本科阶段就挑战自动驾驶开发?华为云ModelArts帮你轻松实现!

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  5. 2020国防科大综述:3D点云深度学习——综述(3D点云分割部分)

    目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D点云分割 3.1 3D语义分割 3.1.1 基于投影的方法 多视图表示 球形表示 3.1.2 基于离散的方法 稠密离散表示 稀 ...

  6. 华为云ModelArts 2.0全面升级,革新传统AI开发模式

    [中国,上海,9月20日] 在HUAWEI CONNECT 2019期间,华为云EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台ModelArts 2.0. 现场 ...

  7. 深度学习菜鸟的信仰地︱Supervessel超能云服务器、深度学习环境全配置

    并非广告~实在是太良心了,所以费时间给他们点赞一下~ SuperVessel云平台是IBM中国研究院和中国系统与技术中心基于POWER架构和OpenStack技术共同构建的, 支持开发者远程开发的免费 ...

  8. 使用亚马逊云服务器EC2做深度学习(一)申请竞价实例

    这是<使用亚马逊云服务器EC2做深度学习>系列的第一篇文章. (一)申请竞价实例  (二)配置Jupyter Notebook服务器  (三)配置TensorFlow  (四)配置好的系统 ...

  9. 2020国防科大综述:3D点云深度学习—综述(点云形状识别部分)

    目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D形状分类 3.1基于多视图的方法 3.2基于体素的方法 3.3基于点的方法 3.3.1 点对多层感知机方法 3.3.2基于卷积 ...

随机推荐

  1. CSPS模拟 98

    T1 待改 T2 这道题的爆炸充分说明我最近已经颓到一定境界了 考虑到总步数不可能超过n 直接枚举总步数,那么任意时刻对末态的影响就是确定的 T3 两遍最短路,一遍从-1的限制考虑求出允许的最早时间, ...

  2. Jquery+CSS在不使用Checked的情况下实现当前选中行样式变化

    之前在做一个当前选中行样式变化时发现网上很多方法都是利用在行内添加checked,然后通过checked是否选中来判断当前选中行的位置,今天就整理了一个不需要在行内添加其他按钮直接通过变化当前选中行的 ...

  3. beacon帧字段结构最全总结(二)——HT字段总结

    一.HT Capabilities HT Capabilities:802.11n的mac层给802.11的mac层加入了高吞吐量单元.所有新加的802.11n功能都是通过管理帧中的HT单元才得以实现 ...

  4. open-falcon监控系统

    官方文档 https://book.open-falcon.org/zh/intro/index.html 一.Open-Falcon介绍 1.监控系统,可以从运营级别(基本配置即可),以及应用级别( ...

  5. nyoj 1364-治安管理 (INT_MAX)

    1364-治安管理 内存限制:128MB 时间限制:3000ms 特判: No 通过数:6 提交数:6 难度:2 题目描述: SZ市是中国改革开放建立的经济特区,是中国改革开放的窗口,已发展为有一定影 ...

  6. Python3.7.1学习(五) 将列表中的元素转化为数字并排序

    # 本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: # 有一个数字字符的列表: numbers = ['2', '4', '1', '3']print(numbe ...

  7. 【SSM】自定义属性配置的使用

    首先,建立xxx.properties 文件在resource文件夹中,此处我们自定义的配置文件是oj-config.properties 然后,在applicationContext.xml中注册这 ...

  8. 力扣(LeetCode)第一个错误的版本 个人题解

    你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. 假设你有 n 个版本 [1, ...

  9. scrapy_redis分布式爬虫

    文章来源:https://github.com/rmax/scrapy-redis Scrapy-Redis Documentation: https://scrapy-redis.readthedo ...

  10. [转发]CSR 量产 烧录 软件

    蓝牙量产软件主要是为了应对蓝牙设备在批量生产时的一些如固件下载,地址下载,名字修改,以及一些辅助测试和检验功能. 目前,CSR推出的蓝牙芯片按照存储介质以及可编程与否分为两大类:ROM版本和Flash ...