【重磅】微軟開源自動機器學習工具 - NNI


【重磅】微軟開源自動機器學習工具 - NNI

在機器學習建模時,除了准備數據,最耗時耗力的就是嘗試各種超參組合,找到模型最佳效果的過程了。即使是對於有經驗的算法工程師和數據科學家,有時候也很難把握其中的規律,只能多次嘗試,找到較好的超參組合。而對於初學者來說,要花更多的時間和精力。

自動機器學習這兩年成為了熱門領域,着力解決超參調試過程的挑戰,通過超參選擇算法和強大的算力來加速超參搜索的過程。

NNI (Neural Network Intelligence) 是微軟開源的自動機器學習工具。與當前的各種自動機器學習服務或工具相比,有非常獨特的價值。本文先介紹一下 NNI 的特點,然后在后續的安裝、使用章節詳細介紹如何上手。

流程

  1. 支持私有部署。雲服務中的自動機器學習直接提供了自動機器學習的服務,不僅包含了自動機器學習的功能,也包含了算力。如果團隊或個人已經有了很強的算力資源,就需要支持私有部署的自動學習工具了。

    NNI 支持私有部署。整個部署也很簡單,使用 pip 即可完成安裝。

  2. 分布式調度。NNI 可以在單機上完成試驗,也支持以下兩種分布式調度方案:

    • GPU 遠程服務器。通過 SSH 控制多台 GPU 服務器協同完成試驗,並能夠計划每個試驗所需要的 GPU 的數量。
    • OpenPAI。通過 OpenPAI,NNI 的試驗可以在獨立的 Docker 中運行,支持多樣的實驗環境。在計算資源規划上,不僅能指定 GPU 資源,還能制定 CPU,內存資源。
  3. 超參搜索的直接支持。當前,大部分自動機器學習服務與工具都是在某個任務上使用,比如圖片分類。這樣的好處是,普通用戶只要有標記數據,就能訓練出一個高質量的平台,不需要任何模型訓練方面的知識。但這需要對每個訓練任務進行定制,將模型訓練的復雜性包裝起來。

    與大部分現有的自動機器學習服務與工具不同,NNI 需要用戶提供訓練代碼,並指定超參的搜索范圍。這樣的好處在於,NNI 幾乎是通用的工具,任何訓練任務都可以使用 NNI 來進行超參搜索。但另一方面,NNI 的通用性,也帶來了一定的使用門檻。使用 NNI 需要有基本的模型訓練的經驗。

    步驟

  4. 兼容已有代碼。NNI 使用時,可以通過注釋的方法來進行無侵入式的改動。不會影響代碼原先的用途。通過注釋方式支持 NNI 后,代碼還可以單獨運行。

  5. 易於擴展。NNI 的設計上有很強的可擴展性。通過下面這些擴展性,能將系統與算法相隔離,把系統復雜性都包裝起來。

    • Tuner 接口,可以輕松實現新的超參調試算法。研究人員可以使用 NNI 來試驗新的超參搜索方法,比如在強化學習時,在 Tuner 中支持 off-policy 來探索比較好的超參組合,在 Trial 里進行 on-policy 的實際驗證。也可以使用 Tuner 和訓練代碼相配合,支持復雜的超參搜索方法。如,實現 ENAS ,將 Tuner 作為 Control,在多個 Trial 中並行試驗。

    • Accessor 接口,可以加速參數搜索,將表現不好的超參組合提前結束。

    • NNI 還提供了可擴展的集群接口,可以定制對接的計算集群。方便連接已經部署的計算集群。

  6. 可視化界面。在啟動一次超參搜索試驗后,就可以通過可視化界面來查看試驗進展,並幫助超參結果,洞察更多信息。

    • 首頁,可以看到當前試驗的進展情況,搜索參數和效果最好的一些超參組合。

      首頁

    • 優化進度頁面可以看到按時序排列的精度或損失值(此圖為精度)。可以看到,時間越靠后(右側),精度高的越多。這說明選擇的超參探索算法隨着時間能找到一些好的超參空間繼續探索。

      優化

    • 通過超參的分布圖來直觀地看到哪些超參值會明顯比較好,或者看出它們之間的關聯。通過下面的顏色圖就能直觀地看到紅色(即精度較高的超參組合)線條所表達的豐富信息。如:

      • 卷積核大一些會表現較好。
      • 全連接層大了不一定太好。也許是所需要的訓練時間增加了,訓練速度太慢造成的。
      • 而學習率小一些(小於0.03),表現基本都不錯。
      • ReLU 比 tanh 等其它激活函數也好不少。
      • ...

      超參

    • 通過試驗狀態頁面,能看到每個試驗的時間長度以及具體的超參組合。

      試驗

    • 通過控制頁面還可以實時的增加試驗的超參組合,或者調整超參的范圍。

      控制

最后,再貼一次地址:https://github.com/microsoft/nni

使用方法和更多詳情,可參考 GitHub 的官網,有問題或 bug 可以直接提 Issue。


免責聲明!

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



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