
- Apache MXNet 教程
- Apache MXNet - 首頁
- Apache MXNet - 簡介
- Apache MXNet - 安裝 MXNet
- Apache MXNet - 工具包和生態系統
- Apache MXNet - 系統架構
- Apache MXNet - 系統元件
- Apache MXNet - 統一運算元 API
- Apache MXNet - 分散式訓練
- Apache MXNet - Python 包
- Apache MXNet - NDArray
- Apache MXNet - Gluon
- Apache MXNet - KVStore 和視覺化
- Apache MXNet - Python API ndarray
- Apache MXNet - Python API gluon
- Apache MXNet - Python API autograd 和初始化器
- Apache MXNet - Python API Symbol
- Apache MXNet - Python API Module
- Apache MXNet 有用資源
- Apache MXNet - 快速指南
- Apache MXNet - 有用資源
- Apache MXNet - 討論
Apache MXNet - 簡介
本章重點介紹 Apache MXNet 的功能,並討論此深度學習軟體框架的最新版本。
什麼是 MXNet?
Apache MXNet 是一款功能強大的開源深度學習軟體框架工具,幫助開發者構建、訓練和部署深度學習模型。在過去的幾年裡,從醫療保健到交通運輸,再到製造業,實際上在我們日常生活的方方面面,深度學習的影響都非常廣泛。如今,許多公司都尋求使用深度學習來解決一些難題,例如人臉識別、目標檢測、光學字元識別 (OCR)、語音識別和機器翻譯。
因此,Apache MXNet 獲得了
一些大型公司的支援,例如英特爾、百度、微軟、Wolfram Research 等。
公共雲提供商的支援,包括亞馬遜網路服務 (AWS) 和微軟 Azure。
一些大型研究機構的支援,例如卡內基梅隆大學、麻省理工學院、華盛頓大學和香港科技大學。
為什麼選擇 Apache MXNet?
當時存在各種深度學習平臺,如 Torch7、Caffe、Theano、TensorFlow、Keras、Microsoft Cognitive Toolkit 等,你可能會好奇為什麼選擇 Apache MXNet?讓我們來看看其背後的原因。
Apache MXNet 解決了一些現有深度學習平臺最大的問題之一。該問題在於,為了使用深度學習平臺,必須為不同的程式設計風格學習另一個系統。
藉助 Apache MXNet,開發者可以充分利用 GPU 和雲計算功能。
Apache MXNet 可以加速任何數值計算,並特別強調加速大型 DNN(深度神經網路)的開發和部署。
它為使用者提供了命令式和符號式程式設計的功能。
各種功能
如果您正在尋找一個靈活的深度學習庫來快速開發尖端的深度學習研究,或者一個強大的平臺來推動生產工作負載,那麼您的搜尋在 Apache MXNet 結束。這是因為它具有以下功能:
分散式訓練
無論是多 GPU 還是多主機訓練,都具有接近線性的擴充套件效率,Apache MXNet 允許開發者充分利用其硬體。MXNet 還支援與 Horovod 整合,Horovod 是 Uber 建立的一個開源分散式深度學習框架。
對於此整合,以下是 Horovod 中定義的一些常見分散式 API:
horovod.broadcast()
horovod.allgather()
horovod.allgather()
在這方面,MXNet 為我們提供了以下功能:
裝置放置 - 藉助 MXNet,我們可以輕鬆指定每個資料結構 (DS)。
自動微分 - Apache MXNet 自動執行微分,即導數計算。
多 GPU 訓練 - MXNet 允許我們根據可用 GPU 的數量實現擴充套件效率。
最佳化的預定義層 - 我們可以在 MXNet 中編寫自己的層,並最佳化預定義層以提高速度。
混合
Apache MXNet 為使用者提供了一個混合前端。藉助 Gluon Python API,它可以彌合其命令式和符號式功能之間的差距。可以透過呼叫其 hybridize 功能來實現。
更快的計算
線性運算(如數十或數百次矩陣乘法)是深度神經網路的計算瓶頸。為了解決此瓶頸,MXNet 提供了:
針對 GPU 最佳化的數值計算
針對分散式生態系統最佳化的數值計算
藉助自動化常用工作流,可以簡潔地表達標準 NN。
語言繫結
MXNet 與高階語言(如 Python 和 R)深度整合。它還支援其他程式語言,例如:
Scala
Julia
Clojure
Java
C/C++
Perl
我們不需要學習任何新的程式語言,而是 MXNet 結合混合功能,允許從 Python 到我們選擇的程式語言中的部署實現異常平滑的過渡。
最新版本 MXNet 1.6.0
Apache 軟體基金會 (ASF) 於 2020 年 2 月 21 日在 Apache License 2.0 下發布了 Apache MXNet 的穩定版本 1.6.0。這是最後一個支援 Python 2 的 MXNet 版本,因為 MXNet 社群投票決定在後續版本中不再支援 Python 2。讓我們來看看此版本為使用者帶來的一些新功能。
與 NumPy 相容的介面
由於其靈活性和通用性,NumPy 已被機器學習從業者、科學家和學生廣泛使用。但眾所周知,如今諸如圖形處理單元 (GPU) 等硬體加速器已越來越多地融入各種機器學習 (ML) 工具包,因此 NumPy 使用者為了利用 GPU 的速度,需要切換到具有不同語法的新的框架。
藉助 MXNet 1.6.0,Apache MXNet 正在朝著與 NumPy 相容的程式設計體驗邁進。新介面為熟悉 NumPy 語法的從業者提供了同等的可用性和表達能力。此外,MXNet 1.6.0 還使現有的 Numpy 系統能夠利用 GPU 等硬體加速器來加速大規模計算。
與 Apache TVM 整合
Apache TVM 是一款面向 CPU、GPU 和專用加速器等硬體後端的開源端到端深度學習編譯器堆疊,旨在彌合注重生產力的深度學習框架與注重效能的硬體後端之間的差距。藉助最新的 MXNet 1.6.0 版本,使用者可以利用 Apache(孵化) TVM 以 Python 程式語言實現高效能運算元核心。此新功能的兩個主要優勢如下:
簡化了以前基於 C++ 的開發流程。
能夠在多個硬體後端(如 CPU、GPU 等)之間共享相同的實現。
現有功能的改進
除了上述 MXNet 1.6.0 的功能外,它還在現有功能上提供了一些改進。改進如下:
對 GPU 進行逐元素運算分組
眾所周知,逐元素運算的效能受記憶體頻寬限制,因此,連結此類運算可能會降低整體效能。Apache MXNet 1.6.0 執行逐元素運算融合,這實際上會在可能的情況下生成即時融合運算。此類逐元素運算融合還可以減少儲存需求並提高整體效能。
簡化常用表示式
MXNet 1.6.0 消除了冗餘表示式並簡化了常用表示式。此類增強功能還可以改善記憶體使用情況和總執行時間。
最佳化
MXNet 1.6.0 還為現有功能和運算元提供了各種最佳化,如下所示:
自動混合精度
Gluon Fit API
MKL-DNN
大型張量支援
TensorRT 整合
高階梯度支援
運算元
運算元效能分析器
ONNX 匯入/匯出
Gluon API 的改進
Symbol API 的改進
100 多個錯誤修復