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