項目地址 http://github.com/awslabs/autogluon

項目文檔 https://autogluon.mxnet.io/

掃描二維碼加入開發者微信群


看到靈魂調參師 @Justin ho 的朋友圈順手轉了下,結果被報道了 https://mp.weixin.qq.com/s/ChYLuxGxsQK0g6MImimSDQ

不過我們確實觀察到了相似的結論。AutoML使用大概15倍於單次訓練的代價,得到的結果可能比手調的要好。這個主要是對於CV而言,尤其是detection模型,預計GluonCV裡面模型很快贏來一大波提升。

但更一般的AutoML還是比較難。例如Tabular數據的,很多時候手工設計的特徵還是挺好。

AutoGluon取了一個巧,我們目前只支持GluonCV和GluonNLP裡面的任務,和額外的Tabular數據(因為一個小哥之前有過經驗)。所以我們可以把以前的很有經驗東西放進去來減小搜參空間,從而提升速度。

當然AutoGluon還是早期項目,我本來想是讓團隊再開發一些時間再公開。還有太多有意思的應用、演算法、硬體加速可以做的。非常歡迎小夥伴能一起貢獻。


AutoGluon 這個項目是我在產假期間開始做的,所以對她的感情像我的女兒一樣。第一個commit基本上包含了 AutoGluon 這個項目的整體設計。個人認為從 API 角度,AutoGluon 是調參工具裡面設計最為精巧的,可以通過加幾行代碼,就可以輕鬆地將已有的 python 代碼轉化為可以搜索的主函數,並且開始搜索:

@ag. args(
batch_size=128,
lr=ag.Real(1e-4, 1e-2))
def train_fn(args, reporter=None):
print(args.lr, args.batch_size)
reporter(epoch=0, accuracy=0.9)

myscheduler = ag.scheduler.FIFOScheduler(train_fn, num_trials=25)
myscheduler.run()

系統裡面每一個部分都是模塊化的,便於擴展,下面給一個系統圖:

每一個任務都由:1. 主函數,2. 參數,3. 計算資源 組成。其中搜索演算法可以提供參數優化,資源管理器動態管理分發計算資源,任務調度器來管理任務調度和提前終止。

AutoGluon的另外一個優勢就是分散式訓練,不管你有沒有分散式訓練的經驗,只需要提供一個 IP 地址,autogluon會自動地把任務分發到遠端的機器上:

ip_addrs = [35.166.23.232』, 35.166.30.159』]
myscheduler = ag.scheduler.FIFOScheduler(train_fn, num_trials=25, remote_ips=ip_addrs)

後台系統會自動地根據不同機器的計算資源,自動調配,下面是分散式的資源管理流程圖:

AutoGluon 的兼容性和擴展性,可以很容易地將科研演算法 開展到大規模實驗中。在 AutoGluon 開發的之初就吸引到了亞馬遜內部的 AutoML 大佬 Matthias ,他們團隊使用 AutoGluon 做了 multi-fidelity 的搜索演算法,有興趣的小夥伴可以關注一下他們最新的論文:Model-based Asynchronous Hyperparameter Optimization https://arxiv.org/abs/2003.10865 。 這個演算法也很快會開源到 AutoGluon 項目里。

最後提一下我們剛剛開源了 RegNet 的搜索,以及 Fast AutoAugment 的實現,這些將會用來作為我們 CVPR tutorial 的資料,提前打個廣告。


AutoGluon特點總結如下。

  • 三大應用領域
    • image(image classification、object detection)
    • text(text classification)
    • tabular data(tabular prediction)
  • 兩大功能
    • 自動調參
      • 不僅支持mxnet,還支持PyTorch
      • 支持的搜索策略包括random search、grid search、RL、Bayesian optimization等
    • NAS(僅支持image classification,目前只有ENAS)

與AutoGluon類似的AutoML工具還有下圖所示項目。

其中最值得一提的是微軟的NNI。支持多種框架;包括四大功能:feature engineering、architecture search、hyperparameter tuning、model compression。其中architucture search包括5種演算法(AutoGluon當前包括ENAS),hyperparameter tuning包括12種演算法(AutoGluon當前是4種)。

相比NNI,AutoGluon當前還比較單薄,不過AutoGluon有一個優勢——GluonCV和GluonNLP,基於這兩個非常棒的工具箱,AutoGluon可以在CV和NLP兩個領域做出自己的特色。但是這個優勢同時又不算優勢,因為GluonCV和GluonNLP是基於mxnet的,mxnet的用戶量不夠大。


題外話

Justin Ho的回答不太嚴謹,Justin Ho想對比手工調參與NAS誰更優,「手工調參」一方用的是GluonCV的Faster R-CNN,「NAS」一方用的是AutoGluon的檢測demo(基於YOLOv3),但是AutoGluon的檢測demo並沒有使用NAS,搜索空間只針對LR(5e-4和1e-4)。Justin Ho的結論「被NAS打爆了」,「還爆了5個點」值得商榷。


金庸迷來強答,在下喬峰(Amazon AI),習得降龍十八掌(Autogluon),前丐幫幫主南苑大王(HPONAS title),又稱戰神(ag),內功十分深厚(Dask),戰無不勝無往不利,但誰知我就只有一招亢龍有悔(task.fit),而這一招實際上是基於多次的實戰經驗(num of trials)中返回的最優策略(best configuration),而大家只知道我武功超群(best performance),卻不知道我經歷(Search Space)了什麼和如何面對國讎家恨(Search Strategy)。不同性質的事件可能對大俠的成就有好或壞的影響(Performance estimation),不能保證每次都是好的結果(best reward),但可以獲知的是大俠的精神品質的塑造(hyperparameter optimization)和武功的精進(neural architecture search)是長期時間和經驗的累積(gpu hours power use)。雖然小說中有很多武功秘籍(tricks)靠天賦和奇遇可以得到,但不是每個對手(task)都能正中下懷(cover),而大多數人的人生都要靠不斷地試錯(searcher)才到得到一個不錯的水平(baseline)。


亞馬遜最近宣布推出Autogluon,這是一個新的開源庫,開發人員可以使用該庫構建包含圖像、文本或表格數據集的機器學習應用程序。使用AutoGluon,只需編寫幾行代碼就可以利用深度學習的力量來構建應用程序。

「AutoGluon推動機器學習的普適化,並將深度學習的好處帶給所有開發人員,」 亞馬遜AWS應用科學家Jonas Mueller說。

AutoGluon:用更少的代碼,打造更高的SOTA性能模型

深度學習是機器學習的一部分,深度學習模型是受到人腦結構的啟發而生成的。深度學習演算法通常包含不少層,用於學習輸入數據的有用表示。比如,在面向圖像識別的深度學習模型中,較低的層可檢測更多的基本特徵(顏色或邊緣),而較高的層可用於識別更複雜的特徵(如數字或對象)。

一般來講,部署深度學習模型,實現最先進的性能需要廣泛的專業知識。目前來看深度學習的應用仍主要局限在有限數量的專家中,但在過去十年里,為了簡化深度學習應用難度,降低門檻,讓機器學習為更多的技術專業人員方便使用,研究人員的努力已經收到了明顯成效。

比如,開發人員早先必須投入大量時間和專業知識,來計算訓練深度學習模型所需的梯度。梯度是向量,可以標識出效果最好的參數更新,最大程度地減少訓練數據中實例的錯誤。像Theano這樣的軟體庫甚至可以自動計算高度複雜的神經網路的梯度,讓開發人員通過樣板代碼使用日益複雜的神經體系結構。

像Keras這樣的較新的庫代表了深度學習普適化的又一次進步。它允許開發人員指定參數,比如輸入數量,深度學習模型的層數,甚至僅需幾行代碼就能定義一個網路層,從而簡化了現有庫中的大量樣板代碼,而這部分代碼在現在的庫中是必不可少的。

不過,即使有了這些進步,今天的深度學習專家和開發人員仍必須解決許多麻煩的問題,包括超參數調整、數據預處理、神經體系結構搜索以及遷移學習有關的決策。

  • 超參數調整涉及到如何選擇神經網路中的層數、如何連接這些層(即網路的體系結構)以及如何訓練網路。
  • 數據處理,包括數據分類和正確格式化矢量的數據預處理也可能是一個非常麻煩的過程。
  • 神經架構搜索涉及自動化架構工程,能夠使開發人員為其機器學習模型找到最佳設計。所有這些決定都需要相當多的專業知識,提高了深度學習的門檻。

三行代碼自動生成高性能模型,讓人工決策自動化

AutoGluon為開發人員自動化了許多決策,開發人員只需三行代碼即可生成高性能的神經網路模型!

開發人員無需在設計深度學習模型時手動嘗試必須做出的數百種選擇,只需簡單地指定讓訓練好的模型就緒的時間即可。作為響應,AutoGluon可以利用可用的計算資源在其分配的運行時間內找到最強大的模型。

AutoGluon可以通過自動調整默認範圍內的選擇來生成僅需三行代碼的模型,而這些默認範圍在已知範圍內可以很好地完成給定任務。開發人員只需指定他們何時準備好訓練後的模型,AutoGluon就會利用可用的計算資源來在分配的runtime中找到最強大的模型。

Mueller說:「由於深度學習固有的不透明性,深度學習專家做出的許多選擇都是基於特殊的直覺,沒有很嚴格的科學指導規範。AutoGluon解決了這個問題,因為所有選擇都會在默認範圍內自動調整,而且默認範圍對於特定任務和模型表現良好。」

官網指南:AutoGluon快速上手

AutoGluon官方網站為開發人員提供了許多教程,可利用它們對表格,文本和圖像數據進行深度學習(諸如涵蓋分類/回歸等基本任務以及對象檢測等更高級的任務)。

對於經驗豐富的開發人員,AutoGluon網站提供有關如何使用AutoGluon API來自動提高定製應用程序中的預測性能的自定義說明。

參考鏈接:

https://www.amazon.science/amazons-autogluon-helps-developers-get-up-and-running-with-state-of-the-art-deep-learning-models-with-just-a-few-lines-of-code?

關於Autogluon簡明使用教程和官方安裝指南等更多信息,請見官網:

https://autogluon.mxnet.io/


推薦閱讀:
相关文章