博客專欄

        EEPW首頁 > 博客 > KDD 2021 | 用NAS實現任務無關且可動態調整尺寸的BERT壓縮(1)

        KDD 2021 | 用NAS實現任務無關且可動態調整尺寸的BERT壓縮(1)

        發布人:MSRAsia 時間:2021-08-20 來源:工程師 發布文章

        編者按:如今,基于 Transformer 的大規模預訓練語言模型,如 BERT、XLNE、RoBERTa 和 GPT-3 等,已經在很多自然語言處理任務中都取得了十分驚人的效果。但是巨大的模型尺寸,使其在眾多不同的下游任務中進行部署時非常困難。而且由于存在大量復雜的場景以及不同的下游任務,單獨為不同場景設計一種壓縮過的 BERT 模型既耗時又耗力。

        因此,微軟亞洲研究院的研究員們針對這些問題展開了研究,并提出了 NAS-BERT 技術。相關研究論文“NAS-BERT:Task-Agnostic and Adaptive-Size BERT Compression with Neural Architechture Search”已被跨學科數據科學會議 KDD 2021 收錄。歡迎感興趣的讀者點擊閱讀原文,查看論文全文。

        不同設備往往對訓練的模型有不同的要求,如模型占用內存的大小、推理時延等。為了滿足設備的要求,技術人員往往需要對大規模的預訓練模型進行壓縮處理。但是由于存在大量復雜的場景和不同的下游任務,專門為每一種場景設計壓縮過的BERT模型,需要投入大量的人力和計算資源。

        對此,微軟亞洲研究院的研究員們提出了 NAS-BERT 技術(相關論文已發表在 KDD 2021 大會上),可以直接在上游預訓練任務中進行壓縮訓練,使壓縮模型不再依賴于下游的具體任務。并且 NAS-BERT 只需通過一次搜索就可以直接產生不同尺寸的模型,進而滿足不同設備的要求。所以即使是資源受限的設備,也可以動態選擇合適的架構。相較于傳統方法,NAS-BERT 極大地提高了訓練效率。

        1.png

        論文鏈接:https://arxiv.org/abs/2105.14444

        如表1所示,之前大部分的壓縮工作都是針對具體任務本身而設計方法實現的。比如,DisilBERT 等工作會直接在上游模型進行壓縮學習,對下游任務無關,但不能適應各種不同受限資源的場景。DynaBERT 則可以在下游任務中通過一次訓練產生多種不同大小的模型,以達到動態調整尺寸的目的。而 NAS-BERT 與其他幾種工作不同,它可以同時做到任務無關和動態調整尺寸,并且達到優越的性能。

        2.png

        表1:之前的 BERT 壓縮工作

        為了讓 NAS-BERT 實現上述目的,研究員們直接在上游預訓練階段對 NAS-BERT 進行了架構搜索(NAS)與訓練,并且一次性搜索出各種大小的模型,以方便各種場景的部署。通過嘗試架構層面的組合方式,NAS-BERT 不僅能夠探索模型本身的潛力,還可以搜索出更加優越的架構。

        具體而言,NAS-BERT 首先在上游預訓練任務上訓練一個超網絡。其中,超網絡中的一個有向無環圖就是一個架構,不同的架構在超網絡中共享參數來降低訓練成本。然后研究員們再通過自動架構搜索技術去訓練這個超網絡。由于超網絡中包括各種尺寸的模型,因此可以覆蓋到各種不同的模型大小。最后,在用超網絡去評價每個架構的性能并選擇出優越的架構。

        然而在 BERT 預訓練任務上做自動架構搜索是具有挑戰性的。其主要原因有:1. BERT 預訓練本身收斂慢并且需要巨大的計算資源;2. 巨大的搜索空間會進一步導致訓練超網絡變得困難。為了解決這兩個問題,NAS-BERT 主要采用了模塊化搜索和逐漸縮小搜索空間的技術。同時,為了在縮小搜索空間的基礎上能夠給出各種不同的架構,NAS-BERT 還使用了分桶搜索把搜索空間分成眾多不同的桶,不同桶中的架構有著不同的模型大小和延遲,桶中的架構相互競爭,從而選出最優越的架構。并且不同桶的架構通過權重共享,以降低架構搜索的代價。通過使用這些技術,NAS-BERT 才得以快速地搜索出各種不同的優越架構。

        搜索空間的架構設計

        NAS-BERT 的架構設計(如圖1所示),首先使用了一個預訓練的 BERT 模型作為教師模型,然后用教師模型指導超網絡的搜索。為了降低搜索空間,NAS-BERT 把學生模型(超網絡)分成了幾個不同的搜索模塊,然后每個搜索模塊會進行單獨的訓練。超網絡模塊的監督信號由教師模型的相應模塊給出。換言之,就是給定一批數據,可以得到教師模型的每個模塊輸入輸出的隱藏表征,再用這些輸入輸出的隱藏表征去訓練搜索模塊。這樣,不同的搜索模塊可以分開搜索且并行訓練,指數級地降低了搜索空間。

        對于每一個搜索模塊,網絡設計如圖1(a)所示,網絡的每一層包括了所有可能的搜索的候選操作(例如卷積、注意力網絡)。一個架構就是一條從底部到最上層的單向路徑,不同的架構(路徑)共享權重以降低訓練所需要的資源。

        3.png

        圖1:NAS-BERT 方法框架圖

        為了使搜索的架構多樣化,研究員們分別采用了三種不同的操作方法:注意力網絡 MHA,前饋網絡 FFN 和可分離卷積 CONV。MHA 和 FFN 是 Transformer 模型中的操作方法,采用這兩種方法,可以使 Transformer 容納在搜索空間中。由于 CONV 已經在很多自然語言任務中取得了不錯的效果,因此研究員們也將其加入了搜索空間,以探索卷積和其他操作組合的潛力(操作設計請見圖2)。同時,為了使搜索的架構具有各種不同的模型大小,研究員們讓每一種操作都有128/192/256/384/512這5種不同的隱藏層大小,如表2所示。與此同時,還加入了 Identity(無操作),使其能搜索出各種不同層的架構。

        4.png

        表2:操作集合的設計

        5.png

        圖2:卷積操作的設計

        通過采用這種設計,可以使一個6層的搜索模塊中有超過20萬種可能的架構。如果采用4個搜索模塊,架構的組合方式將超過10^20種。為了訓練這個超網絡,每次得到一批數據,就要隨機采樣一個架構進行訓練,進而監督和學習教師模塊的隱藏表征。由于搜索模塊采樣出來的架構輸入輸出的隱藏層大小可能和教師模塊不一致,所以可以直接引入一個可學習的線性層進行轉換,并和超網絡一起訓練。

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 深度學習

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 四川省| 聂拉木县| 镇坪县| 中阳县| 二连浩特市| 淮滨县| 吴江市| 行唐县| 海丰县| 哈密市| 沈丘县| 治县。| 衡南县| 泌阳县| 淅川县| 东明县| 余江县| 阜阳市| 林州市| 涡阳县| 四平市| 武安市| 苍梧县| 龙泉市| 南通市| 盐源县| 濮阳市| 长子县| 绵阳市| 沛县| 秦安县| 揭西县| 曲周县| 阳东县| 观塘区| 太仆寺旗| 玛沁县| 太保市| 伊金霍洛旗| 肃北| 彰化县|