走近深度學習,認識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框架可將單機代碼自動分布式化,進行大規模的分布式訓練,極大的提高了模型訓練速度和效率。

以下是基於華為雲深度學習服務的實驗數據。

image.png

image.png

通過對比可以看出,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。

image.png

損失值曲線圖

image.png

正確率曲線圖

⊙ 綠色線條為單機版ResNet-50收斂曲線,使用4個GPU。

⊙ 灰色線條為在綠色線條同等下,使用FP-16時的收斂曲線,精度幾乎沒有影響。

⊙ 橙色線條為使用MoXing分布式訓練一個ResNet-50模型的收斂曲線。

⊙ 紅色線條為使用MoXing中LARS特性實現的batch_size=32k的ResNet-50收斂曲線。

LARS的核心代碼,定義一個基於LARS的optimizer:

image.png

完整代碼(基於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的一倍。

image.png

正確率曲線圖

image.png

梯度稀疏度變化曲線圖

由圖可知,深度梯度壓縮的梯度稀疏度在前5個epoch時是由75%逐漸上升到99.9%,所以在前5個epoch時,分布式加速比並一定比普通的分布式訓練高,但是從第5個epoch之后,加速比則有顯著提升,同時模型精度也沒有下降。從第5個epoch之后DGC在分布式運行中的加速比表現:

image.png

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

HDC.Cloud 華為開發者大會2020 即將於2020年2月11日-12日在深圳舉辦,是一線開發者學習實踐鯤鵬通用計算、昇騰AI計算、數據庫、區塊鏈、雲原生、5G等ICT開放能力的最佳舞台。

歡迎報名參會


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM