Apache MXNet 是一個靈活且可擴(kuò)展的深度學(xué)習(xí)框架,支持多種深度學(xué)習(xí)模型、編程語言,并且有一個開發(fā)接口,因其易用性而受到高度重視。
什么是 APACHE MXNET?
MXNet 是開源深度學(xué)習(xí)框架,允許用戶在多種設(shè)備(無論是云基礎(chǔ)設(shè)施還是移動設(shè)備)上定義、訓(xùn)練和部署深度神經(jīng)網(wǎng)絡(luò)。該框架具備高度可擴(kuò)展性,可以進(jìn)行快速的模型訓(xùn)練,并支持靈活的編程模型和多種語言。
利用 MXNet 可以混合符號和命令式編程,以更大限度提升效率和生產(chǎn)力。該框架的核心是動態(tài)依賴性調(diào)度程序,可自動即時并行處理符號式操作和命令式操作圖形優(yōu)化層使符號執(zhí)行速度更快、內(nèi)存效率更高。
MXNet 庫可移植并且規(guī)模小巧。它采用 NVIDIA Pascal GPU 加速,可以跨多個 GPU 和多個節(jié)點(diǎn)進(jìn)行擴(kuò)展,從而更快地訓(xùn)練模型。
為何選擇 APACHE MXNET?
Apache MXNet 提供以下主要特性和優(yōu)勢:
混合前端:命令符號混合 Gluon API 提供了一種簡單的方法,無需犧牲訓(xùn)練速度即可對模型進(jìn)行原型設(shè)計、訓(xùn)練和部署。開發(fā)者僅需幾行 Gluon 代碼,就能構(gòu)建線性回歸、CNN 和循環(huán) LSTM 模型,以用于物體檢測、語音識別和推薦引擎等。
可擴(kuò)展性:MXNet 從頭開始專為云基礎(chǔ)設(shè)施設(shè)計,采用分布式參數(shù)服務(wù)器,可以使用多個 GPU 或 CPU 實(shí)現(xiàn)近線性擴(kuò)展。深度學(xué)習(xí)工作負(fù)載可跨多個 GPU 進(jìn)行分配,實(shí)現(xiàn)近線性可擴(kuò)展性和自動擴(kuò)展。Amazon Web Services 運(yùn)行的測試發(fā)現(xiàn),在包含 128 個 GPU 的集群中,MXNet 的性能比使用單個 GPU 快 109 倍。正是由于 MXNet 具有擴(kuò)展到多個 GPU(跨多個主機(jī))的能力,及其開發(fā)速度和可移植性,AWS 才選擇 MXNet 作為深度學(xué)習(xí)框架,而不是 TensorFlow、Theano 和 Torch 等其他選擇。
生態(tài)系統(tǒng):MXNet 具有適用于計算機(jī)視覺、自然語言處理、時間序列等的工具包和庫。
語言:MXNet 支持的語言包括 Python、C++、R、Scala、Julia、Matlab 和 JavaScript。MXNet 還可以編譯成 C++,生成一種輕量級神經(jīng)網(wǎng)絡(luò)模型表征,可以在各種設(shè)備上運(yùn)行,包括 Raspberry Pi 等低功耗設(shè)備和云服務(wù)器。
MXNET 的工作原理是什么?
MXNet(或“mix-net”)由多學(xué)術(shù)機(jī)構(gòu)聯(lián)合創(chuàng)建,并在 Apache Software Foundation 培養(yǎng)而成,旨在混合不同編程方法的優(yōu)勢,以進(jìn)行深度學(xué)習(xí)模型開發(fā) – 命令式,明確指定了“如何”執(zhí)行計算,以及聲明式或符號式,主要關(guān)注應(yīng)該執(zhí)行“什么”。
命令式編程模式
MXNet 的 NDArray 包含命令式編程,是 MXNet 存儲和轉(zhuǎn)換數(shù)據(jù)的主要工具。NDArray 用于將模型的輸入和輸出表示為多維陣列并對其進(jìn)行操作。NDArray 類似于 NumPy 的 ndarray,但它們可以在 GPU 上運(yùn)行,以加速計算。
命令式編程的優(yōu)勢在于,有程序編程背景的開發(fā)者對其很熟悉,所以參數(shù)更新和交互式調(diào)試更自然。
符號式編程模式
神經(jīng)網(wǎng)絡(luò)通過對輸入?yún)?shù)應(yīng)用多層嵌套函數(shù)來轉(zhuǎn)換輸入數(shù)據(jù)。每一層由一個線性函數(shù)和一個非線性變換組成。深度學(xué)習(xí)的目標(biāo)是通過計算相對于損失指標(biāo)的偏導(dǎo)數(shù)(梯度),優(yōu)化這些參數(shù)(包括權(quán)重和偏差)。在前向傳播中,神經(jīng)網(wǎng)絡(luò)接受輸入?yún)?shù),并向下一層的節(jié)點(diǎn)輸出置信度分?jǐn)?shù),直至到達(dá)輸出層,在該層計算分?jǐn)?shù)誤差。在一個稱為梯度下降的過程中,通過反向傳播,錯誤會再次通過網(wǎng)絡(luò)發(fā)送回來,并調(diào)整權(quán)重,從而改進(jìn)模型。
圖形是由已連接節(jié)點(diǎn)(稱為頂點(diǎn))和邊緣組成的數(shù)據(jù)結(jié)構(gòu)。每個現(xiàn)代深度學(xué)習(xí)框架都基于圖形的概念,其中神經(jīng)網(wǎng)絡(luò)表示為計算的圖形結(jié)構(gòu)。
MXNet 符號式編程允許通過計算圖形抽象地定義函數(shù)。借助符號式編程,復(fù)雜函數(shù)首先采用占位符值表示。然后,可以通過將這些函數(shù)綁定到實(shí)際值來執(zhí)行這些函數(shù)。符號式編程還提供預(yù)定義的神經(jīng)網(wǎng)絡(luò)層,允許以更少的重復(fù)性工作和更好的性能簡單表示大型模型。
符號式編程具有以下優(yōu)勢:
計算圖形的清晰邊界通過后端 MXNet 執(zhí)行程序提供更多優(yōu)化機(jī)會
更輕松地為神經(jīng)網(wǎng)絡(luò)配置指定計算圖形
采用 Gluon API 的混合編程模式
MXNet 的主要優(yōu)勢之一是其包含混合編程接口 Gluon,其在保持命令接口和符號接口的功能和優(yōu)勢的同時,彌合了兩者之間的差距。Gluon 是一種易于學(xué)習(xí)的語言,可以生成快速移動模型。借助 Gluon API,您可以使用 NDArray 命令式創(chuàng)建模型。然后,您可以通過混合命令切換到符號模式,加快模型訓(xùn)練和推理速度。在符號模式下,該模型以經(jīng)優(yōu)化的圖形形式通過后端 MXNet 執(zhí)行程序以更快速度運(yùn)行,并且可以輕松導(dǎo)出,用于在不同語言綁定(如 Java 或 C++)中進(jìn)行推理。
為何 MXNET 在 GPU 上表現(xiàn)更出色
在架構(gòu)方面,CPU 僅由幾個具有大緩存內(nèi)存的核心組成,一次只可以處理幾個軟件線程。相比之下,GPU 由數(shù)百個核心組成,可以同時處理數(shù)千個線程。
由于神經(jīng)網(wǎng)絡(luò)由大量相同的神經(jīng)元構(gòu)建而成,因此本質(zhì)上具有高度并行性。這種并行性會自然映射到GPU,因此相比僅依賴 CPU 的訓(xùn)練,計算速度會大幅提高。因此,GPU 已成為訓(xùn)練基于神經(jīng)網(wǎng)絡(luò)的大型復(fù)雜系統(tǒng)的首選平臺。推理運(yùn)算的并行性質(zhì)也使其十分宜于在 GPU 上執(zhí)行。
借助改進(jìn)的算法、更大的數(shù)據(jù)集以及 GPU 加速計算,深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)已經(jīng)成為圖像識別、語音識別、語言翻譯等眾多行業(yè)不可或缺的工具。開發(fā) MXNet 的目的是提供強(qiáng)大的工具,幫助開發(fā)者充分利用 GPU 和云計算的全部功能。
簡而言之,使用 MXNet 訓(xùn)練算法的 GPU 越多,任務(wù)完成得就越快。隨著更多 GPU 的采用,該框架在可擴(kuò)展性能方面脫穎而出,速度幾乎呈線性提升。MXNet 還可以根據(jù)可用 GPU 自動擴(kuò)展,這是其在性能調(diào)節(jié)方面的一個加分點(diǎn)。
用例
| 智能手機(jī)應(yīng)用程序
MXNet 非常適合圖像識別,支持在低功耗且內(nèi)存有限的平臺上運(yùn)行的模型,這一能力使其成為手機(jī)部署的最佳選擇。采用 MXNet 構(gòu)建的模型已經(jīng)被證明可以提供能在筆記本電腦上運(yùn)行的高可靠圖像識別結(jié)果。結(jié)合本地和云處理器可以在增強(qiáng)現(xiàn)實(shí)、物體和場景識別等領(lǐng)域?qū)崿F(xiàn)強(qiáng)大的分布式應(yīng)用。
聲音和圖像識別應(yīng)用也為殘障人士提供了更多有趣的可能性。例如,移動應(yīng)用程序可以幫助視障人士更好地感知周圍的環(huán)境,并幫助聽障人士將語音對話轉(zhuǎn)換為文本。
| 自動駕駛汽車
自動駕駛汽車和卡車必須處理大量數(shù)據(jù),以做出近乎實(shí)時的決策。為支持自動駕駛車輛車隊而開發(fā)的復(fù)雜網(wǎng)絡(luò),以前所未有的程度使用分布式處理,來協(xié)調(diào)從單輛車的制動決策到整個城市的交通管理的所有工作。
TuSimple正在建立一個自主貨運(yùn)網(wǎng)絡(luò),通過地圖繪制的路線,實(shí)現(xiàn)美國西南部的自主貨運(yùn),其選擇 MXNet作為其人工智能模型開發(fā)的基礎(chǔ)平臺。該公司正將自動駕駛技術(shù)引入一個長期存在司機(jī)短缺問題,以及事故、輪班和燃油效率低下導(dǎo)致的高開銷問題的行業(yè)。
TuSimple 之所以選擇 MXNet,是因為其跨平臺可移植性、訓(xùn)練效率以及可擴(kuò)展性。其中一個因素是將 MXNet 與 TensorFlow 進(jìn)行比較的基準(zhǔn)測試,結(jié)果發(fā)現(xiàn)在有 8 個 GPU 的環(huán)境中,MXNet 速度更快,存儲更高效,也更準(zhǔn)確。
MXNET 的重要意義
| 數(shù)據(jù)科學(xué)家
機(jī)器學(xué)習(xí)是數(shù)據(jù)科學(xué)領(lǐng)域的重要組成部分。對于不熟悉深度學(xué)習(xí)模型開發(fā)重點(diǎn)的人,MXNet 是一個很好的起點(diǎn)。其廣泛的語言支持、Gluon API和靈活性非常適合開發(fā)自己的深度學(xué)習(xí)技能組合的組織。Amazon 的支持可確保 MXNet 能夠長期使用,且第三方生態(tài)系統(tǒng)將繼續(xù)發(fā)展。許多專家建議將 MXNet 作為未來深入學(xué)習(xí)更復(fù)雜框架的良好起點(diǎn)。
|機(jī)器學(xué)習(xí)研究人員
研究人員經(jīng)常使用 MXNet 快速進(jìn)行原型設(shè)計,從而更輕松地將研究想法轉(zhuǎn)換為模型并評估結(jié)果。它還支持命令式編程,為研究人員提供了更多的計算控制。由于 CPU 和 GPU 的利用率高,與其他框架相比,此特定框架在某些類型的模型上也表現(xiàn)出顯著的性能。
| 軟件開發(fā)者
靈活性是軟件工程中很有價值的東西,而 MXNet 是深度學(xué)習(xí)框架中最靈活的一種。除了其廣泛的語言支持之外,它還可以處理各種數(shù)據(jù)格式(包括 Amazon S3 云存儲),并且可以放大或縮小以適合大多數(shù)平臺。2019 年,MXNet 增加了對優(yōu)步開發(fā)的分布式學(xué)習(xí)框架Horovod的支持。這為軟件工程師在指定部署環(huán)境(可能包括從筆記本電腦到云服務(wù)器等各種環(huán)境)方面提供了更大的靈活性。
帶 NVIDIA GPU 的 MXNET
MXNet 推薦使用 NVIDIA GPU 來訓(xùn)練和部署神經(jīng)網(wǎng)絡(luò),因為它提供的計算能力明顯高于 CPU,從而大幅提升訓(xùn)練和推理性能。開發(fā)者可以通過NGC(NVIDIA GPU 云)輕松開始使用 MXNet。這里,用戶可以在其中提取容器,這些容器具有可用于各種任務(wù)(例如計算機(jī)視覺、自然語言處理等)的預(yù)訓(xùn)練模型,且所有依賴項和框架位于一個容器中。借助 NVIDATensorRT,當(dāng)使用 GPU 時,可顯著提升 MXNet 上的推理性能。
面向開發(fā)者的 NVIDIA 深度學(xué)習(xí)
GPU 加速深度學(xué)習(xí)框架能夠為設(shè)計和訓(xùn)練自定義深度神經(jīng)網(wǎng)絡(luò)帶來靈活性,并為 Python 和 C/C++ 等常用編程語言提供編程接口。MXNet、PyTorch、TensorFlow 等廣泛使用的深度學(xué)習(xí)框架依賴于 NVIDIA GPU 加速庫,能夠提供高性能的多 GPU 加速訓(xùn)練。
NVIDIA GPU 加速的端到端數(shù)據(jù)科學(xué)
基于CUDA-X AI創(chuàng)建的 NVIDIARAPIDS開源軟件庫套件使您完全能夠在 GPU 上執(zhí)行端到端數(shù)據(jù)科學(xué)和分析流程。此套件依靠 NVIDIA CUDA 基元進(jìn)行低級別計算優(yōu)化,但通過用戶友好型 Python 接口實(shí)現(xiàn)了 GPU 并行化和高帶寬顯存速度。
借助 RAPIDS GPU DataFrame,數(shù)據(jù)可以通過一個類似 Pandas 的接口加載到 GPU 上,然后用于各種連接的機(jī)器學(xué)習(xí)和圖形分析算法,而無需離開 GPU。這種級別的互操作性是通過 Apache Arrow 這樣的庫實(shí)現(xiàn)的。這可加速端到端流程(從數(shù)據(jù)準(zhǔn)備到機(jī)器學(xué)習(xí),再到深度學(xué)習(xí))。
RAPIDS 支持在許多熱門數(shù)據(jù)科學(xué)庫之間共享設(shè)備內(nèi)存。這樣可將數(shù)據(jù)保留在 GPU 上,并省去了來回復(fù)制主機(jī)內(nèi)存的高昂成本。
原文標(biāo)題:NVIDIA 大講堂 | 什么是 APACHE MXNET ?
文章出處:【微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5078瀏覽量
103789 -
gpu
+關(guān)注
關(guān)注
28文章
4783瀏覽量
129395 -
Apache
+關(guān)注
關(guān)注
0文章
64瀏覽量
12502 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5516瀏覽量
121588
原文標(biāo)題:NVIDIA 大講堂 | 什么是 APACHE MXNET ?
文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
NPU在深度學(xué)習(xí)中的應(yīng)用
AI入門之深度學(xué)習(xí):基本概念篇
![AI入門之<b class='flag-5'>深度</b><b class='flag-5'>學(xué)習(xí)</b>:基本<b class='flag-5'>概念</b>篇](https://file1.elecfans.com//web2/M00/01/38/wKgZoma0OmmAEiKuAAD-wQWEZKU414.png)
評論