今天,亞馬遜 AWS、微軟 聯合發布了 Gluon – 一種新的開源深度學習接口,可幫助開發人員更輕松、更快速地構建機器學習模型,而不犧牲任何性能。
Gluon 采用一系列預先構建并經過優化的神經網絡組件,為定義機器學習模型提供清晰、簡潔的 API。剛剛接觸機器學習的開發人員會發現此接口更像傳統代碼,因為他們可以像使用任何其他數據結構那樣定義和操作機器學習模型。經驗豐富的數據科學家和科研人員也會發現它的寶貴價值:快速構建原型和利用動態神經網絡圖實現全新模型架構,而又不減緩訓練進度。Gluon 現已在Apache MXNet 中可用,日后將“進駐”Microsoft Cognitive Toolkit 及其他架構。
神經網絡與開發人員使用神經網絡的機器學習 (包括“深度學習”) 包含三個主要部分:訓練數據、神經網絡模型和訓練神經網絡的算法。您可以將神經網絡看成是一種有向圖:它有一系列輸入 (數據),通過一系列連接的層和權重連接到一系列輸出 (預測)。在訓練期間,算法根據網絡輸出中的錯誤調整網絡中的權重。這就是網絡學習的過程 – 一種可能需要持續數天時間的內存和計算密集型過程。Caffe2、Cognitive Toolkit、TensorFlow 以及 Apache MXNet 等深度學習框架能夠部分解決“如何加快這一過程?”的難題。與數據庫中的查詢優化器一樣,訓練引擎越了解網絡和算法,越能更好地優化訓練過程 (例如,它可以根據其他部分的改變,推斷需要重新計算圖中的哪些部分并跳過不受影響的權重,從而加快訓練進度)。
此外,這些框架還提供并行功能,可通過分發計算過程來減少總體訓練時間。但是,要實現上述優化,大多數框架要求開發人員完成一些額外工作:首先,提供網絡圖形式定義,然后“定圖”并調整權重。網絡定義可能極其龐大而復雜 (包含數百萬個連接),通常必須手動構建。深度學習網絡十分“笨重”,難以調試,因而很難在項目間復用代碼。
這種復雜性可能會令初學者“無從下手”,對經驗豐富的科研人員來說也是一項耗時的任務。AWS 在 MXNet 中嘗試了一些更靈活易用的新方法定義和訓練神經網絡。Microsoft 也是開源項目 MXNet 的開發者,對部分新想法感興趣。于是我們進行了溝通,結果發現雙方抱持幾乎相同的愿景:借助此類技術降低機器學習的復雜性,讓更多的開發人員能夠輕松發揮其強大威力。
Gluon 特點:動態圖,快速迭代,可擴展訓練Gluon 包含四大創新。
1.友好的 API:可以使用簡單、清晰、簡潔的代碼定義 Gluon 網絡 – 相比某些更晦澀、更形式化的網絡及相關加權評分函數定義方法,這更易于開發人員學習,理解難度大幅降低。
2.動態網絡:Gluon 中的網絡定義是動態的:它可以像任何其他數據結構一樣“收縮和擴展”。這有別于更常見的形式化網絡符號定義 (既深度學習框架要求必須保持網絡定義不變,才能在訓練期間有效地優化計算)。相比之下,動態網絡更容易管理。
3.借助 Gluon:開發人員可以在定義網絡和算法時輕松混用快速的符號表示和更友好、動態的“命令式”定義。 可以使用算法定義網絡:這大大加強了模型與訓練算法的聯系。在這種情況下,算法可以在定義和訓練期間動態調整網絡,而不僅僅是獨立的定義。也就是說,開發人員能夠使用標準的編程循環、條件語句創建此類網絡,科研人員也能定義以前無法實現的更復雜的算法和模型。不管是創建、更改還是調試,難度都大幅下降。
4.由高性能運營商進行訓練:這樣可在不犧牲訓練速度的情況下提供友好、簡潔的 API 和動態圖,可謂是機器學習領域的一大進步。某些框架為深度學習提供了友好的 API 或動態圖,但以前的此類方法都會減緩訓練速度。與其他領域的軟件一樣,抽象需要在運行時進行協商和解釋,因而會減慢計算速度。但 Gluon 將簡明的 API 與形式化定義進行了深層融合,無需開發人員了解具體細節或手動調整編譯器優化。
能通過 Gluon 向開發人員提供此類改進,AWS 團隊和 Microsoft 的協作者倍感興奮。目前,已有開發人員和科研人員提供十分積極的反饋。
開始使用 GluonGluon 現已在 Apache MXNet 中可用,將在未來版本中支持 Microsoft Cognitive Toolkit。我們還將發布前端接口和底層 API 規范,以便在適當的時候“進駐”其他框架。
您可以立即試用 Gluon – 只需點擊 AWS 深度學習 AMI,就能試驗 50 個完全能夠正常工作的筆記本示例。如果您是機器學習框架開發者,請訪問 GitHub 查閱接口規范。