NNI 管理自動機器學習 (AutoML) 的 Experiment, 調度運行 由調優算法生成的 Trial 任務來找到最好的神經網絡架構和/或超參,支持 各種訓練環境,如 本機, 遠程服務器, OpenPAI, Kubeflow, 基於 K8S 的 FrameworkController(如,AKS 等), DLWorkspace (又稱 DLTS), AML (Azure Machine Learning) 以及其它雲服務。
使用場景
- 想要在自己的代碼、模型中試驗不同的自動機器學習算法。
- 想要在不同的環境中加速運行自動機器學習。
- 想要更容易實現或試驗新的自動機器學習算法的研究員或數據科學家,包括:超參調優算法,神經網絡搜索算法以及模型壓縮算法。
- 在機器學習平台中支持自動機器學習。
NNI 功能一覽
NNI 提供命令行工具以及友好的 WebUI 來管理訓練的 Experiment。 通過可擴展的 API,可定制自動機器學習算法和訓練平台。 為了方便新用戶,NNI 內置了最新的自動機器學習算法,並為流行的訓練平台提供了開箱即用的支持。
下表中,包含了 NNI 的功能,同時在不斷地增添新功能,也非常希望您能貢獻其中。
框架和庫 | 算法 | 訓練平台 | |
內置 |
更多... |
超參調優
窮舉搜索
啟發式搜索
貝葉斯優化
基於強化學習
神經網絡架構搜索
模型壓縮
剪枝
量化
特征工程(測試版)
提前終止算法
|
|
參考 |
安裝
安裝
NNI 支持並在 Ubuntu >= 16.04, macOS >= 10.14.1, 和 Windows 10 >= 1809 通過了測試。 在 `python 64 位 >= 3.6` 的環境中,只需要運行 `pip install` 即可完成安裝。
如果想要嘗試最新代碼,可通過源代碼安裝 NNI。
注意:
- 如果遇到任何權限問題,可添加 --user 在用戶目錄中安裝 NNI。
- 目前,Windows 上的 NNI 支持本機,遠程和 OpenPAI 模式。 強烈推薦使用 Anaconda 或 Miniconda 在 Windows 上安裝 NNI。
- 如果遇到如 Segmentation fault 這樣的任何錯誤請參考 常見問題。 Windows 上的常見問題,參考在 Windows 上使用 NNI。
驗證安裝
以下示例基於 TensorFlow 1.x 構建。 確保運行環境中使用的是 TensorFlow 1.x。
-
通過克隆源代碼下載示例。
git clone -b v2.0 https://github.com/Microsoft/nni.git -
運行 MNIST 示例。
Linux 或 macOSnnictl create --config nni/examples/trials/mnist-tfv1/config.ymlWindowsnnictl create --config nni\examples\trials\mnist-tfv1\config_windows.yml -
在命令行中等待輸出 INFO: Successfully started experiment! 此消息表明 Experiment 已成功啟動。 通過命令行輸出的 Web UI url 來訪問 Experiment 的界面。
INFO: Starting restful server... INFO: Successfully started Restful server! INFO: Setting local config... INFO: Successfully set local config! INFO: Starting experiment... INFO: Successfully started experiment! ----------------------------------------------------------------------- The experiment id is egchD4qy The Web UI urls are: http://223.255.255.1:8080 http://127.0.0.1:8080 ----------------------------------------------------------------------- You can use these commands to get more information about the experiment ----------------------------------------------------------------------- commands description 1. nnictl experiment show show the information of experiments 2. nnictl trial ls list all of trial jobs 3. nnictl top monitor the status of running experiments 4. nnictl log stderr show stderr log content 5. nnictl log stdout show stdout log content 6. nnictl stop stop an experiment 7. nnictl trial kill kill a trial job by id 8. nnictl --help get help information about nnictl -----------------------------------------------------------------------
- 在瀏覽器中打開 Web UI 地址,可看到下圖的 Experiment 詳細信息,以及所有的 Trial 任務。 查看這里的更多頁面示例。
貢獻
本項目歡迎任何貢獻和建議。 大多數貢獻都需要你同意參與者許可協議(CLA),來聲明你有權,並實際上授予我們有權使用你的貢獻。 有關詳細信息,請訪問 https://cla.microsoft.com。
當你提交拉取請求時,CLA 機器人會自動檢查你是否需要提供 CLA,並修飾這個拉取請求(例如,標簽、注釋)。 只需要按照機器人提供的說明進行操作即可。 CLA 只需要同意一次,就能應用到所有的代碼倉庫上。
該項目采用了 Microsoft 開源行為准則 。 有關詳細信息,請參閱行為守則常見問題解答或聯系 opencode@microsoft.com 咨詢問題或評論。
熟悉貢獻協議后,即可按照 NNI 開發人員教程,創建第一個 PR =) 了:
- 推薦新貢獻者先從簡單的問題開始:'good first issue' 或 'help-wanted'。
- NNI 開發環境安裝教程
- 如何調試
- 如果有使用上的問題,可先查看常見問題解答。如果沒能解決問題,可通過 Gitter 聯系 NNI 開發團隊或在 GitHub 上報告問題。
- 自定義 Tuner
- 實現定制的訓練平台
- 在 NNI 上實現新的 NAS Trainer
- 自定義 Advisor
其它代碼庫和參考
經作者許可的一些 NNI 用法示例和相關文檔。
外部代碼庫
- 在 NNI 中運行 ENAS
- NNI 中的自動特征工程
- 使用 NNI 的 矩陣分解超參調優
- scikit-nni 使用 NNI 為 scikit-learn 開發的超參搜索。
相關文章
- 超參數優化的對比
- 神經網絡結構搜索的對比
- 並行化順序算法:TPE
- 使用 NNI 為 SVD 自動調參
- 使用 NNI 為 SPTAG 自動調參
- 使用 NNI 為 scikit-learn 查找超參
- 博客 - AutoML 工具(Advisor,NNI 與 Google Vizier)的對比 作者:@gaocegege - kubeflow/katib 的設計與實現的總結與分析章節
- Blog (中文) - NNI 2019 新功能匯總 by @squirrelsc
相關項目
以探索先進技術和開放為目標,Microsoft Research (MSR) 還發布了一些相關的開源項目。
我們鼓勵研究人員和學生利用這些項目來加速 AI 開發和研究。
原文鏈接:https://nni.readthedocs.io/zh/latest/