天天看點

華為諾亞實驗室AutoML架構-Vega:(1) 介紹

華為諾亞實驗室AutoML架構-Vega:(1) 介紹

本文主要簡單地介紹Vega的特點以及它與其他AutoML架構的差別,讓你對Vega有一個直覺的了解。

文章太長不看可以直接降落至最後的總結部分。

huawei-noah/vega​github.com

華為諾亞實驗室AutoML架構-Vega:(1) 介紹

1. 現有AutoML架構總結

目前已經出現了很多AutoML開源架構,可以大緻分成兩類:

  • 一類是基于傳統機器學習算法,例如 TPOT、Auto-Sklearn、 Hyperopt,H2O 如果你不需要神經網絡的話則可以考慮使用這幾個架構。
  • 另一類則是基于神經網絡的AutoML架構,比較流行的有 NNI、 Auto-kears 以及本篇文章要介紹的華為諾亞方舟實驗室開源的 Vega 架構。

2. Auto-Keras & NNI

在介紹Vega之前,首先簡單介紹一下Auto-Keras和NNI。

  • Auto-Keras,看名字也知道它是基于Keras實作的,換句話說它隻支援TensorFlow,目前最新版本的要求是Python >= 3.5 and TensorFlow >= 2.3.0,是以如果你常用的架構是Pytorch,這個可能不适合你。
  • NNI是微軟開發的輕量型AutoML工具包,如下圖示,其提供的功能非常豐富,包括自動特征工程、NAS(神經網絡架構搜尋)、模型壓縮、超參數搜尋等等,而且還提供了可視化界面友善管理。我本人也用過NNI的NAS子產品,易用性非常高。NNI将搜尋空間和搜尋算法解耦,而且設計了一種統一的接口,可以很友善地實作你的NAS算法,具體可看官方文檔介紹:https://nni.readthedocs.io/zh/latest/nas.html
華為諾亞實驗室AutoML架構-Vega:(1) 介紹

3. Vega

Vega是華為諾亞方舟實驗室自研的AutoML算法工具鍊(https://github.com/huawei-noah/vega),有如下幾個主要特點。

3.1 完備的AutoML能力

Vega涵蓋HPO(超參優化, HyperParameter Optimization)、Data-Augmentation、NAS(網絡架構搜尋, Network Architecture Search)、Model Compression、Fully Train等關鍵功能,同時這些功能自身都是高度解耦的,可以根據需要進行配置,構造完整的pipeline。

乍看起來,你也許會覺得這個NNI很相似,但是正如前面介紹的,NNI其實是一個輕量型的工具包,也就是說你如果隻需要實作某一個具體的功能,例如NAS或者模型壓縮,那NNI是一個很好的選擇,但是如果你希望将多個功能組合成一個完整的pipeline(如下圖示),那麼你需要的是Vega。

華為諾亞實驗室AutoML架構-Vega:(1) 介紹

Vega解決的思路是将每一個功能(如模型壓縮和NAS等)都抽象成一個具有統一接口的PipeStep類,通過周遊每個Step實作端到端的Pipeline,具體的實作原理在後續文章中會介紹。

3.2 業界标杆的自研算法

Vega提供了諾亞方舟實驗室自研的 業界标杆 算法,并提供 Model Zoo 下載下傳SOTA(State-of-the-art)模型。

華為諾亞實驗室AutoML架構-Vega:(1) 介紹

3.3 高并發模型訓練能力

Vega提供高性能Trainer,加速模型訓練和評估。Vega設計了Scheduler子產品,可以很友善的管理本地叢集部署等任務。

華為諾亞實驗室AutoML架構-Vega:(1) 介紹

3.4 多Backend支援

Vega支援PyTorch,TensorFlow,MindSpore。雖然NNI也支援多種深度學習架構,但是Vega對不同架構的算子設計了統一接口。而且你可以隻需要指定要運作的Backend即可切換至不同的深度學習架構。

3.5 可插拔式

Vega采用可插拔式的配置方法,你可以隻需要修改yml檔案中的參數就能靈活地切換不同資料集、算法等元件,換句話說你可以基于Vega搭建屬于你自己的工具庫,是以在處理一個新項目的時候,你可以很友善地複用你之前的工作成果。

3.6 提供多個特色子產品

Vega提供了豐富的搜尋空間,你可以很友善地自定義你的搜尋空間快速驗證你的idea。另外Vega還提供了Report子產品,該子產品可以很友善地管理訓練過程中的各種日志等資訊,使用起來更加簡單順手。

4. 總結

通過上面介紹我們知道Vega和NNI都是提供了非常豐富的功能的AutoML架構,差別在于NNI定位于輕量型的工具包,是以如果你隻想實作NAS算法或者模型壓縮,那麼你可以使用NNI來驗證你的想法。Vega則定位于從Pipeline的角度來解決AutoML問題,是以使用Vega有一定門檻,需要你學習它的設計理念和代碼邏輯,但是如果你掌握之後,你會發現Vega的易用性是不輸NNI的,本系列文章主要是一起來學習Vega,然後搭建屬于你自己的工具庫。

微信公衆号:AutoML機器學習

MARSGGBO♥原創

如有意合作或學術讨論歡迎私戳聯系~

郵箱:[email protected]

繼續閱讀