[机器学习]AutoML --- NNI (Microsoft)
NNI (Neurol Network Intelligence) 是微軟開(kāi)源的自動(dòng)機(jī)器學(xué)習(xí)工具。與當(dāng)前的各種自動(dòng)機(jī)器學(xué)習(xí)服務(wù)或工具相比,有非常獨(dú)特的價(jià)值。本文先介紹一下 NNI 的特點(diǎn),然后再后續(xù)的安裝、使用章節(jié)詳細(xì)介紹如何上手。
支持私有部署。云服務(wù)中的自動(dòng)機(jī)器學(xué)習(xí)直接提供了自動(dòng)機(jī)器學(xué)習(xí)的服務(wù),不僅包含了自動(dòng)機(jī)器學(xué)習(xí)的功能,也包含了算力。如果團(tuán)隊(duì)或個(gè)人已經(jīng)有了很強(qiáng)的算力資源,就需要支持私有部署的自動(dòng)學(xué)習(xí)工具了。
NNI 支持私有部署。整個(gè)部署也很簡(jiǎn)單,使用 pip 即可完成安裝。
分布式調(diào)度。NNI 可以在單機(jī)上完成試驗(yàn),也支持以下兩種分布式調(diào)度方案:
- GPU 遠(yuǎn)程服務(wù)器。通過(guò) SSH 控制多臺(tái) GPU 服務(wù)器協(xié)同完成試驗(yàn),并能夠計(jì)劃每個(gè)試驗(yàn)所需要的 GPU 的數(shù)量。
- OpenPAI。通過(guò) OpenPAI,NNI 的試驗(yàn)可以在獨(dú)立的 Docker 中運(yùn)行,支持多樣的實(shí)驗(yàn)環(huán)境。在計(jì)算資源規(guī)劃上,不僅能指定 GPU 資源,還能制定 CPU,內(nèi)存資源。
超參搜索的直接支持。當(dāng)前,大部分自動(dòng)機(jī)器學(xué)習(xí)服務(wù)與工具都是在某個(gè)任務(wù)上使用,比如圖片分類。這樣的好處是,普通用戶只要有標(biāo)記數(shù)據(jù),就能訓(xùn)練出一個(gè)高質(zhì)量的平臺(tái),不需要任何模型訓(xùn)練方面的知識(shí)。但這需要對(duì)每個(gè)訓(xùn)練任務(wù)進(jìn)行定制,將模型訓(xùn)練的復(fù)雜性包裝起來(lái)。
與大部分現(xiàn)有的自動(dòng)機(jī)器學(xué)習(xí)服務(wù)與工具不同,NNI 需要用戶提供訓(xùn)練代碼,并指定超參的搜索范圍。這樣的好處在于,NNI 幾乎是通用的工具,任何訓(xùn)練任務(wù)都可以使用 NNI 來(lái)進(jìn)行超參搜索。但另一方面,NNI 的通用性,也帶來(lái)了一定的使用門檻。使用 NNI 需要有基本的模型訓(xùn)練的經(jīng)驗(yàn)。
兼容已有代碼。NNI 使用時(shí),可以通過(guò)注釋的方法來(lái)進(jìn)行無(wú)侵入式的改動(dòng)。不會(huì)影響代碼原先的用途。通過(guò)注釋方式支持 NNI 后,代碼還可以單獨(dú)運(yùn)行。
易于擴(kuò)展。NNI 的設(shè)計(jì)上有很強(qiáng)的可擴(kuò)展性。通過(guò)下面這些擴(kuò)展性,能將系統(tǒng)與算法相隔離,把系統(tǒng)復(fù)雜性都包裝起來(lái)。
-
Tuner 接口,可以輕松實(shí)現(xiàn)新的超參調(diào)試算法。研究人員可以使用 NNI 來(lái)試驗(yàn)新的超參搜索方法,比如在強(qiáng)化學(xué)習(xí)時(shí),在 Tuner 中支持 off-policy 來(lái)探索比較好的超參組合,在 Trial 里進(jìn)行 on-policy 的實(shí)際驗(yàn)證。也可以使用 Tuner 和訓(xùn)練代碼相配合,支持復(fù)雜的超參搜索方法。如,實(shí)現(xiàn) ENAS ,將 Tuner 作為 Control,在多個(gè) Trial 中并行試驗(yàn)。
-
Accessor 接口,可以加速參數(shù)搜索,將表現(xiàn)不好的超參組合提前結(jié)束。
-
NNI 還提供了可擴(kuò)展的集群接口,可以定制對(duì)接的計(jì)算集群。方便連接已經(jīng)部署的計(jì)算集群。
可視化界面。在啟動(dòng)一次超參搜索試驗(yàn)后,就可以通過(guò)可視化界面來(lái)查看試驗(yàn)進(jìn)展,并幫助超參結(jié)果,洞察更多信息。
-
首頁(yè),可以看到當(dāng)前試驗(yàn)的進(jìn)展情況,搜索參數(shù)和效果最好的一些超參組合。
-
優(yōu)化進(jìn)度頁(yè)面可以看到按時(shí)序排列的精度或損失值(此圖為精度)。可以看到,時(shí)間越靠后(右側(cè)),精度高的越多。這說(shuō)明選擇的超參探索算法隨著時(shí)間能找到一些好的超參空間繼續(xù)探索。
- 通過(guò)超參的分布圖來(lái)直觀地看到哪些超參值會(huì)明顯比較好,或者看出它們之間的關(guān)聯(lián)。通過(guò)下面的顏色圖就能直觀地看到紅色(即精度較高的超參組合)線條所表達(dá)的豐富信息。如:
- 卷積核大一些會(huì)表現(xiàn)較好。
- 全連接層大了不一定太好。也許是所需要的訓(xùn)練時(shí)間增加了,訓(xùn)練速度太慢造成的。
- 而學(xué)習(xí)率小一些(小于0.03),表現(xiàn)基本都不錯(cuò)。
- ReLU 比 tanh 等其它激活函數(shù)也好不少。
- ...
-
通過(guò)試驗(yàn)狀態(tài)頁(yè)面,能看到每個(gè)試驗(yàn)的時(shí)間長(zhǎng)度以及具體的超參組合。
-
通過(guò)控制頁(yè)面還可以實(shí)時(shí)的增加試驗(yàn)的超參組合,或者調(diào)整超參的范圍。
?
?
使用方法和更多詳情,可參考 GitHub 的官網(wǎng),有問(wèn)題或 bug 可以直接提 Issue。
?
?
?
https://github.com/Microsoft/nni
?
https://microsoft.github.io/
總結(jié)
以上是生活随笔為你收集整理的[机器学习]AutoML --- NNI (Microsoft)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 黑群晖DSM 6.x 配置文件grub.
- 下一篇: [机器学习]AutoML --- Aut