VEGA:諾亞AutoML高性能開源算法集簡介

語言: CN / TW / HK

​​摘要:VEGA是華為諾亞方舟實驗室自研的全流程AutoML算法集合,提供架構搜索、超參優化、數據增強、模型壓縮等全流程機器學習自動化基礎能力。

本文分享自華為雲社區《VEGA:諾亞AutoML高性能開源算法集簡介》,作者: kourei。

VEGA是華為諾亞方舟實驗室自研的全流程AutoML算法集合,提供架構搜索、超參優化、數據增強、模型壓縮等全流程機器學習自動化基礎能力。目前集成的算法大多數已經合入了華為 DaVinci 全棧AI解決方案CANN+ MindSpore中,一些簡單的測試表明相比GPU具備相當大的優勢,預計下個版本Vega會提供對 DaVinci 的支持。

作為針對研究人員和算法工程師量身定製的自動機器學習工具,VEGA在2019年12月在華為內源發佈,支撐起了諾亞內部多個團隊(計算視覺、推薦搜索和AI基礎研究)的自動化機器學習算法的研究,在相關的AI頂會上(CVPR/ICCV/ECCV/AAAI/ICLR/NIPS)產出20+算法。以下是本次開源的代表性AutoML算法簡介:

自動化網絡架構搜索(NAS)

基於硬件約束的高效分類網絡搜索方案(CARS)

在不同的應用場景中,計算資源約束條件有所不同,因此對於搜索的結果自然的有着差異化的結果需求。此外,儘管基於進化算法的NAS方法取得了不錯的性能,但是每代樣本需要重頭訓練來進行評估,極大影響了搜索效率。本文考慮了現有方法的不足,提出一種基於連續進化的多目標高效神經網絡結構搜索方法(CARS)。CARS維護一個最優模型解集,並用解集中的模型來更新超網絡中的參數。在每次進化算法產生下一代種羣的過程中,網絡的參數可以直接從超網絡中繼承,有效提高了進化效率。CARS一次搜索即可獲得一系列不同大小和精度的模型,供用户根據實際應用中的資源約束來挑選相應的模型。相關工作發表在CVPR2020: https://arxiv.org/abs/1909.04977

輕量級超分網絡結構搜索(ESR-EA)

諾亞提出了一種輕量級超分網絡結構搜索算法,從通道、卷積和特徵尺度三個角度出發構建高效的超分網絡基本模塊。該算法以高效模塊為基礎,以模型的參數量、計算量和模型精度為目標,使用多目標優化進化算法搜索輕量級超分網絡結構。該算法可以從通道、卷積和特徵尺度三個角度對超分網絡的宂餘進行全面壓縮。實驗表明,在同等參數量或者計算量的情況下,該算法搜索到的輕量級超分網絡(ESRN)在標準測試集(Set5,Set14,B100,Urban100)上取得了比手工設計的網絡結構(CARN等)更好的效果。除此之外,該算法也可以在確保算法精度的前提下降低計算量,滿足移動設備的時延和功耗約束。相關論文發表在AAAI 2020: https://www.aaai.org/Papers/AAAI/2020GB/AAAI-SongD.4016.pdf

端到端的檢測網絡架構搜索方案(SM-NAS)

現有的目標檢測模型可以被解耦成幾個主要部分:骨幹(Backbone),特徵融合網絡(Neck),RPN和以及RCNN頭部。每個部分可能有不同的模塊與結構設計,如何權衡不同組合的計算成本和精確度是一個重要問題。現有的目標檢測 NAS方法(NAS-FPN, DetNas等)僅專注於搜索單個模塊的更好設計,如骨幹網絡或特徵融合網絡,而忽略了對系統整體的考量。為了解決這個問題,在本文中我們提出了一種兩階段從結構化到模塊化的神經網絡搜索策略,名為Structural-to-Modular NAS(SM-NAS)。具體而言,結構化階段進行模型架構的粗搜索,確定針對當前任務的最優模型架構 (如使用單階段檢測器還是雙階段檢測器,使用何種類型的backbone等),以及與之匹配的輸入圖像尺寸大小;模塊化搜索階段則對backbone模塊進行細緻的結構調優,進一步提高模型性能。。在搜索策略上,我們採用了演化算法,並同時考慮了模型效率與模型性能雙重最優,使用non-dominate sorting構建Pareto front,來獲得一系列在多目標上同時達到最優的網絡結構。此外,我們探索了一種有效的訓練策略,使得網絡在沒有imagenet pretrain的情況下能夠達到比有pretrain更快的收斂速度,從而更加快速、準確地評估任意backbone的性能。在COCO數據集上,我們搜索得到的模型在速度與精度上均大幅度領先傳統的目標檢測架構,例如我們的E2模型比Faster-RCNN速度提高一倍,mAP達到40%(提升1%);我們的E5模型與MaskRCNN的速度相似,mAP能夠達到46%(提升6%)。相關工作發表在AAAI2020: https://arxiv.org/abs/1911.09929

高效的檢測網絡骨幹架構搜索方案(SP-NAS)

我們使用神經網絡結構搜索(NAS)技術自動設計針對特定於任務的主幹網絡,以彌合分類任務和檢測任務之間的差距(domain gap)。常見的深度學習物體檢測器通常會使用一個針對ImageNet分類任務設計和訓練的骨幹網絡。現有算法DetNAS將搜索檢測主幹網絡的問題變為預先訓練一個權重共享的超級網絡,以此來選擇最佳的子網絡結構。但是,此預先定好的超級網絡無法反映所採樣子結構的實際性能等級,並且搜索空間很小。我們希望通過NAS算法設計一個靈活且面向任務的檢測主幹網:提出了一個名為SP-NAS的兩階段搜索算法(串行到並行的搜索)。具體來説,串行搜索階段旨在通過“交換,擴展,重點火”的搜索算法在特徵層次結構中高效找到具有最佳感受野比例和輸出通道的串行序列;然後,並行搜索階段會自動搜索並將幾個子結構以及先前生成的主幹網絡組裝到一個更強大的並行結構的主幹網絡中。我們在多個檢測數據集上驗證了SP-NAS的效果,搜索得到的架構可達到SOTA結果,即在EuroCityPersons的公開的行人檢測排行榜上達到第一名的頂級性能(LAMR:0.042);在準確度和速度方面都優於DetNAS和AutoFPN。相關工作發表在CVPR2020: https://openaccess.thecvf.com/content_CVPR_2020/papers/Jiang_SP-NAS_Serial-to-Parallel_Backbone_Search_for_Object_Detection_CVPR_2020_paper.pdf

自動化訓練(AutoTrain)

超越谷歌的訓練正則化方法(Disout)

為了從給定的數據集中提取重要的特徵,深度神經網絡通常包含大量可訓練的參數。一方面,大量的可訓練參數增強了深度網絡的性能。另一方面,它們帶來了過擬合的問題。為此,基於Dropout的方法在訓練階段會禁用輸出特徵圖中的某些元素,以減少神經元間的共適應。儘管這些方法可以增強所得模型的泛化能力,但是基於是否丟棄元素的Dropout並不是最佳的解。因此,我們研究了與深度神經網絡的中間層有關的經驗Rademacher複雜度,並提出了一種用於解決上述問題的特徵擾動方法(Disout)。在訓練時,通過探索泛化誤差上界將特徵圖中隨機選擇的元素替換為特定值。實驗證明,在多個圖像數據集,我們提出的特徵圖擾動方法具有更高的測試準確率。相關工作發表在AAAI 2020: https://arxiv.org/abs/2002.11022

利用知識蒸餾抑制自動數據擴增的噪聲(KD+AA)

本算法心思想是希望解決自動數據擴增(AA)方法自身的一些劣勢。AA是對整個數據集去搜索最佳數據增強策略的,儘管從全局來看AA能夠讓數據變得更加差異化,讓最終模型性能變得更好;但是AA是相對粗糙的,並不是對單張圖像做優化的,因此相對而言會有一定的防線。在數據增強強度比較大的時候,容易對某些圖像帶來語義混淆的問題(即由於過度消去具有判別力的信息而導致圖像語義發生變化。這就是我們説的語義混淆。顯然在模型訓練的時候,我們再拿之前的狐狸標籤來做約束指導是不合適。為了解決這個問題,我們使用知識蒸餾(KD)方法,通過一個預訓練好的模型來生成軟標籤,該標籤就可以指導經過AA的圖像他的標籤最好應該是什麼。這個算法簡單而有效,在與大模型結合後,在ImageNet上取得了當前最優性能85.8%。相關論文發表於ECCV 2020: https://arxiv.org/abs/2003.11342v1

自動化數據生成(AutoData)

基於生成模型的低成本圖像增強數據獲取方案(CylceSR)

在特定的圖像增強任務(以超分為例)中,由於很難在現實場景裏獲取到成對的數據,因此學術界大多采用合成的成對數據進行算法研究,然而通過合成數據獲得到的算法模型往往在現實場景中表現並不好,為了解決上述問題,我們提出了一種新穎的算法:該算法以合成低質圖像為橋樑,通過無監督圖像轉換完成合成圖像域到真實場景圖像域的轉換,同時轉換後的圖像被用於監督訓練圖像增強網絡。該算法足夠靈活,可以集成任何無監督轉換模型和圖像模型。本方法通過聯合訓練圖像轉換網絡和監督網絡,相互協作來實現更好的降質學習和超分性能。所提出的方法在NTIRE 2017和NTIRE 2018的數據集上實現了很好的性能,甚至可以與監督方法相媲美;該方法在NTIRE2020 Real-World Super-Resolution比賽中被AITA-Noah團隊採用並在track1中取得IPIPS第一、MOS指標第二的成績。相關論文發表於CVPR 2020 Workshop on NTIRE: https://openaccess.thecvf.com/content_CVPRW_2020/papers/w31/Chen_Unsupervised_Image_Super-Resolution_With_an_Indirect_Supervised_Path_CVPRW_2020_paper.pdf

自動化網絡壓縮(AutoCompress)

基於進化策略神經網絡自動壓縮

該技術針對神經網絡自動壓縮,從壓縮模型的識別精度、計算量、存儲量、運行速度等多個指標出發,使用多目標優化進化算法,對神經網絡進行混合比特量化、稀疏剪枝等壓縮,搜索出每一層最優壓縮超參數,得到一個包含若干性能優秀的壓縮模型的非支配解集,可以滿足使用者對不同指標的不同需求。該技術適用於高性能雲服務器和弱計算性能的移動設備,對於高性能雲服務器可以提供算法精度高且計算和內存消耗在一定範圍內的模型,對於移動設備,可以在確保算法精度的前提下降低計算和內存消耗,滿足移動設備的時延和功耗約束。相關論文發表在KDD 2018: https://www.kdd.org/kdd2018/accepted-papers/view/towards-evolutionary-compression

本次開源發佈初步穩定版本,未來不斷將最前沿的算法加入其中,增加對新算法和DaVinci的支持。開源地址為: https://github.com/huawei-noah/vega ,請大家試用和反饋。

Vega具備以下優勢:

  • *高性能Model Zoo:* 預置了諾亞大量性能領先的深度學習模型,提供在ImageNet/MSCOCO/NuScenes /NITRE等數據集上的最優性能模型。這些模型代表了諾亞在AutoML研究上的最新研究成果,可以直接使用:https://github.com/huawei-noah/vega/blob/master/docs/en/model_zoo/

  • 硬件親和的模型優化:為了實現硬件的親和性,Vege定義了Evaluator模塊,可以直接部署到設備上進行推理,支持手機、Davinci芯片等多種設備的同時運行。

  • Benchmark的復現:提供了benchmark 工具來協助大家復現 Vega 提供的算法。

  • 支持深度學習生命週期中的多環節,並基於pipeline編排進行靈活調用:內置了架構搜索、超參優化、損失函數設計、數據擴充、全量訓練等組件,每個組件稱之為一個Step,可以將多個Step串聯起來形式端到端的方案,方便大家試驗不同的想法,提高可搜索範圍,找到更好的模型。

最後,VEGA提供大量的示例文檔,幫助開發者快速上手。完整中英文文檔請參考: https://github.com/huawei-noah/vega/tree/master/docs

點擊關注,第一時間瞭解華為雲新鮮技術~