獨家 | 使EfficientNet更有效率的三種方法(附連結)

2021-12-17 數據派THU

作者:Dominic Masters

翻譯:王可汗

校對:歐陽錦

本文約3300字,建議閱讀5分鐘

本文為大家介紹了提升EffcientNet效率和性能的三個策略。

在我們的新論文「Making EfficientNet More Efficient: Exploring Batch-Independent Normalization, Group Convolutions and Reduced Resolution Training」中,我們採用了最先進的模型EfficientNet[1],該模型在理論上優化成為高效模型並研究了三種方法,使其在IPU上的實踐中更高效。例如,添加分組卷積,已經被證明在IPU上表現良好,在理論計算成本最小的情況下,實際訓練吞吐量實現了3倍提升。結合調研的所有三種方法,我們在訓練吞吐量上達到了7倍的提高,在IPU上的推理達到了3.6倍的提高,以達到相當的驗證準確性。模型訓練的理論成本(通常以FLOPs來衡量)很容易計算,而且與所使用的硬體和軟體堆棧無關。這些特徵使它成為一種吸引人的複雜性度量,成為尋找更有效的深度學習模型的關鍵驅動因素。然而,在現實中,這種訓練成本的理論衡量和實踐成本之間存在著顯著的差異。這是因為一個簡單的FLOP計數沒有考慮許多其他重要的因素,比如計算結構和數據移動。分組卷積的引入


我們研究的第一種方法是如何提高與深度卷積相關的性能(換句話說,組大小為1的組卷積)。EfficientNet將深度卷積用於所有空間卷積操作。它們以其FLOP和參數量中的效率而聞名,因此已經成功地應用於許多最先進的卷積神經網絡(CNNs)。然而,在實踐中,EfficientNet在加速方面遇到了若干挑戰。例如,由於每個空間核都需要獨立考慮,因此,通常由向量乘積型硬體加速的點積操作的長度是有限的。這意味著硬體不能總是被充分利用,導致「浪費」了周期。深度卷積(Depthwise convolutions)也有非常低的計算效率,因為它們需要大量的數據傳輸,相對於執行的FLOPs的數量,這意味著內存訪問速度是一個重要的因素。雖然這可能會限制替代硬體上的吞吐量,但IPU的處理器中內存架構提供了高帶寬的內存訪問,這可以顯著提高像這樣的低計算效率操作的性能。最後,深度卷積被發現是最有效的,當它們被夾在兩個逐點(pointwise)的「投影」(projection)卷積之間,形成一個MBConv塊。這些逐點卷積通過圍繞空間深度卷積的「擴展因子」6增加或減少激活的維數。雖然這種擴展可以帶來良好的任務性能,但它也會創建非常大的激活張量,這可能會主導內存需求,並最終限制可使用的最大批處理大小。為了解決這三個問題,我們對MBConv塊做了一個簡單但重要的修改。我們將卷積的組大小從1增加到16;這將帶來更好的IPU硬體利用率。然後,為了補償FLOPs和參數的增加,並解決內存問題,我們將擴展因子降低到4。這將帶來一個更高效的內存和計算緊湊的EfficientNet版本,我們稱之為G16-EfficientNet。雖然這些改變主要是由於吞吐量的提高,但我們也發現,在所有模型大小上,它們使我們能夠實現比普通的組大小為1 (G1-EfficientNet)基線模型更高的ImageNet驗證精度。這一修改導致了實際效率的顯著提高。

G1-EfficientNet(基線)與G16(我們的)的理論(左)和實際(右)效率的比較。代理歸一化激活對卷積和矩陣乘法運算的輸出進行歸一化已經成為現代CNN的一個基本操作,其中批處理歸一化(Batch Normalization)是用於此目的的最常見的形式方法。然而,批處理歸一化引入的批大小限制是一個眾所周知的問題,它引發了一系列獨立於批的替代方法的創新。雖然許多方法在ResNet模型中工作得很好,但我們發現它們都沒有達到與EfficientNet的批處理歸一化相同的性能。為了解決批處理歸一化替代方法的缺乏問題,我們利用了在最近的一篇論文中介紹的新的批無關的歸一化方法——代理歸一化(Proxy Normalization)。這種方法建立在已經成功的組(和層)歸一化方法的基礎上。組歸一化和層歸一化受到一個問題的影響,即激活可能成為通道上的非歸一化。隨著深度的增加,這個問題變得更糟,因為非歸一化在每個層面都凸顯出來。雖然這個問題可以通過簡單地減少組歸一化中的組大小來避免,但是,這種組大小的減少將改變表達性並降低性能。代理歸一化提供了一個更好的解決方案,它保留了表達性,同時抵消了兩個主要的非歸一化來源:仿射變換和激活功能,遵循組歸一化或層歸一化。具體來說,通過將群範數或層範數的輸出同化為一個高斯「代理」變量,並對這個代理變量應用相同的仿射變換和相同的激活函數來抵消非歸一化。然後使用非歸一化代理變量的統計數據來糾正真實激活中的預期分布偏移。代理歸一化允許我們將組大小最大化(即使用層歸一化),即使不存在通道非歸一化問題,代理歸一化仍然保持了表達能力。

重要的是,這種方法並沒有模仿批歸一化的任何隱含的正則特徵。由於這個原因,在這個工作中需要額外的正則化,我們使用混合和剪切混合的組合。在比較層歸一化+代理歸一化(LN+PN)與兩個批歸一化 (BN)基線模型在標準預處理和AutoAugment (AA)下的性能時,我們發現LN+PN在整個模型尺寸範圍內都匹配或超過了BN的標準預處理性能。此外,LN+PN幾乎和在AA上的BN一樣好,儘管AA需要昂貴的訓練增廣參數的過程。

對不同規模的EfficientNet的不同歸一化方法進行比較。

降低解析度訓練

Touvron等人(2020)[3]表明,通過使用比最初訓練更大的圖像對最後幾層進行訓練,然後進行微調可以獲得顯著的精度增益。由於這個微調階段的成本非常低,因此很明顯,這將實現一些實際的訓練效率效益。這提出了一些更有趣的研究問題。如何選擇訓練方案以使效率最大化?考慮到較大的圖像測試速度較慢,這如何影響推理效率?

為了研究這些問題,我們比較了兩種不同解析度下的訓練,一種是「原生」解析度(如最初的EfficientNet工作中定義的),另一種是大約一半的像素數。然後我們對各種尺寸的圖像進行微調和測試。這使我們能夠研究訓練解析度對效率的直接影響,並確定帕累託最優組合,以實現訓練和推理的最佳速度-精度折衷。

在比較訓練效率時,我們考慮了兩種測試場景:在「原生」解析度上進行測試,或者選擇「最佳」解析度,以在整個解析度範圍內最大化驗證精度。

當測試在「原生」解析度,我們看到訓練一半大小的圖像產生相當大的理論和實際效率的提高。值得注意的是,對於給定的模型大小,我們發現在一半解析度下的訓練和在「原生」解析度下的微調甚至比在「原生」解析度下的訓練、微調和測試產生更高的最終精度。這一結論表明,對於ImageNet訓練,我們應該始終以比訓練時更高的解析度進行測試。我們現在希望了解這是否也適用於其他領域。

如果我們接下來允許自己在「最佳」圖像解析度進行測試,我們會看到在原生解析度下的訓練在最終精度上有顯著的提高,縮小了帕累託前沿的差距。

然而,應該注意到,為了實現這一點,「原生」訓練方案的「最佳」測試解析度最終要比使用一半訓練解析度情況的測試解析度大得多。這意味著在推理時間它們會更久。

(ii)代理歸一化激活[LN+PN (我們的) vs GN];(iii)一半解析度訓練[half(我們的) vs Native]。注意,基線結果沒有進行微調,使用的是原生圖像解析度。通過比較推理本身的效率,我們可以看到,在一半解析度下的訓練在整個精度範圍內產生帕累託最優效率。這是一個顯著的結果,因為在推理中根本沒有直接的FLOP優勢。此外,沿半解析度推理效率Pareto前沿的點仍然是訓練吞吐量的最優點。

理論和實踐推理效率。在所有的解析度上測試;線條突出了帕累託鋒面。在所有模型的效率中,具有代理歸一化的模型的表現與具有組歸一化的模型相當或略好。這源於精確度的提高,而吞吐量的成本僅為~10%。然而,重要的是,具有代理歸一化的模型在整個帕累託前沿使用更少的參數,突出了代理歸一化在模型大小方面的效率方面的額外好處。如何讓EfficientNet更高效在進行這項研究時,我們看到了對EfficientNet模型的幾個改進,以提高訓練和推理的整體效率。

通過在MBConv塊中添加組卷積和降低擴展率,我們提高了空間卷積的IPU硬體利用率,降低了內存消耗。

通過使用一半解析度的圖像進行訓練,我們減少了訓練時間,並顯著地取得了較好的最終精度。

通過利用新的歸一化方法——代理歸一化,我們在不依賴批處理信息的情況下匹配了批歸一化的性能。據我們所知,這是EfficientNet實現這一目標的第一種方法。

綜合使用這些方法,我們在IPU上的實際訓練效率提高了7倍,實際推理效率提高了3.6倍。這些結果表明,當使用適合處理組卷積(如IPU)的硬體時,EfficientNet可以提供訓練和推理效率,使其超越理論,面向實際的、真實的應用。

https://arxiv.org/abs/2106.03640

References

[1] M. Tan, Q. V. Le, EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (2019), arXiv 2019

[2] A. Labatie, D. Masters, Z. Eaton-Rosen, C. Luschi, Proxy-Normalizing Activations to Match Batch Normalization while Removing Batch Dependence (2021), arXiv 2021

[3] H. Touvron, A. Vedaldi, M. Douze, H. Jégou, Fixing the train-test resolution discrepancy: FixEfficientNet (2020), NeurIPS 2019

How we made EfficientNet more efficienthttps://towardsdatascience.com/how-we-made-efficientnet-more-efficient-61e1bf3f84b3

王可汗,清華大學機械工程系直博生在讀。曾經有著物理專業的知識背景,研究生期間對數據科學產生濃厚興趣,對機器學習AI充滿好奇。期待著在科研道路上,人工智慧與機械工程、計算物理碰撞出別樣的火花。希望結交朋友分享更多數據科學的故事,用數據科學的思維看待世界。

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。

點擊文末「閱讀原文」加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發布後請將連結反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

相關焦點

  • EfficientNet代碼和論文解析
    原論文中說,目前就模型縮放而言,有三個維度的選擇:深度depth,即網絡的層數,網絡越深,網絡能捕捉更豐富,更複雜的特徵寬度width,即通道數,通道數越深,網絡更容易捕捉細粒度特徵(fine-grained features),更容易訓練解析度resolution,即圖片長寬乘積。
  • 技術解讀EfficientNet系列模型——圖片分類的領域的扛把子
    MBConv卷積塊也使用了類似殘差連結的結構,不同的是在短連接部分使用了SE層。另外使用了drop_connect方法來代替傳統的drop方法。注意:在SE層中沒有使用BN操作,而且其中的sigmoid激活函數也沒有被Swish替換。在其它層中,BN是放在激活函數與卷積層之間的。
  • Win10離線安裝.NET Framework 3.5方法匯總(附下載)
    那麼現在MS酋長就來分享一下Win10離線安裝.NET Framework 3.5的方法,包括.net 3.5離線安裝包,助你快速成功安裝.NET Framework 3.5。方法一:DISM命令離線安裝.NET Framework 3.5首先,我們需要下載Win10 ISO鏡像。參見《使用微軟媒體創建工具下載原版Win10 ISO鏡像》。
  • 資源|自動駕駛車輛仿真模擬軟體盤點(附下載連結)
    應用:gibbgub上有人做了Self-driving-truck項目,基本訓練方法遵循接近原始的 Atri 論文中的強化學習標準,此外該模型還試圖未來的狀態和獎勵。訓練中還使用了一些手工創建的模型和自動生成的模型。
  • Golang net 包學習和實戰
    整體上可以看出,net 包對網絡連結是基於我們複習的網絡知識實現的。對於代碼的底層實現,也是比較簡單的。針對不同的平臺,調用不同平臺套接字的系統調用即可。直觀上看,對於不同的連結,我們都是可以通過Conn 的接口來做網絡io的交互。
  • DenseNet:比ResNet更優的CNN模型
    作者:葉    虎           編輯:祝鑫泉           在計算機視覺領域,卷積神經網絡(CNN)已經成為最主流的方法
  • label和超連結的使用
    圖4二 超連結的使用方法一1.單擊要素可以直接訪問到超連結地址注意:如果超連結中,設置的是文檔地址,其中address欄位的地址路徑建議指定為當前地圖的相對位置,這樣可以保證其他用戶拿到地圖和文件時,可以正常訪問文檔地址。方法二1. 單擊菜單欄中的識別按鈕;2.
  • 有效提高視覺模型精度:EfficientNet-Lite 發布
    ImageClassifierDataLoader.from_folder(flower_path)train_data, test_data = data.split(0.9)# Customize the pre-trained TensorFlow modelmodel = image_classifier.create(train_data, model_spec=efficienetnet_lite0
  • AIM2020 Efficient Super Resolution: Methods and Results
    MLVC與SC-CVLAB與參數量與FLOPs方面佔優,但推理耗時並不匹配;404NotFound與MLVC具有比IMDN更少的參數朗,但推理速度反而更慢。從表中結果可以看到:Activations與推理耗時之間的相干性更強。事實上在愷明大神的一文中也有類似結論。但同時需要注意:參數量、FLOPs仍然是評價模型高效性的非常重要的參考指標。
  • C#/.NET/.NET Core推薦學習書籍
    因此,本指南不區分基礎結構,更側重於考慮開發環境。閱讀這本專家級指南是經驗豐富的程式設計師提高效率的更快捷方式。C# 7以更快的速度完成更多工作,沒有人比Christian Nagel更適合傳播在現實世界中極有價值的權威信息。本書論述清晰,內容完整詳盡,為開發人員展示了如何將.NET引入非微軟平臺,如何操作這些平臺上的工具,例如Docker、Gulp和NPM。
  • Pointnet詳解+百度飛槳復現算法
    現在的學者大多數向點雲靠攏,隨著雷射雷達、深度相機等傳感設備的平民化,點雲研究的門檻越來越低,出現了各種計算方法,PointNet作為入門的點雲分析非常合適。採樣算法使用迭代最遠點採樣方法FPS,先隨機選擇一個點,然後再選擇離這個點最遠的點作為起點,再繼續迭代,直到選出需要的個數為止  相比隨機採樣,能更完整得通過區域中心點採樣到全局點雲。(2)Grouping layer為了要構建局部區域進而提取特徵,思想是利用臨近點。
  • 永久激活Windows10系統的三種方法(親測有效)
    就此疑問,小編來說說永久激活Windows10系統的三種方法。方法一:1、現在我們可以看下當前系統的激活狀態,查看方法"WIN+R"打開運行對話框,輸入命令slmgr.vbs -xpr,點擊確定,這樣可以查看到當前系統的激活信息。大家可以發現,雖然小編系統激活了,但是只有180天時間到期。
  • 這17 種方法讓 PyTorch 訓練速度更快!
    點上方藍字計算機視覺聯盟獲取更多乾貨在右上方 ··· 設為星標 ★,與你不見不散轉載於:選自 | efficientdl.com原文作者是來自蘇黎世聯邦理工學院的計算機科學碩士生 LORENZ KUHN,文章向我們介紹了在使用 PyTorch 訓練深度模型時最省力、最有效的 17 種方法。該文所提方法,都是假設你在 GPU 環境下訓練模型。具體內容如下。學習率 schedule 的選擇對模型的收斂速度和泛化能力有很大的影響。Leslie N.
  • 三種長片段測序方法對比
    近期,由澳洲昆士蘭大學發表在bioRxiv的文章《Comparison of long read methods for sequencing and assembly of a plant genome》中,採用三種長片段測序技術Pacific Biosciences (Sequel I), Oxford Nanopore (PromethION、MinION) 和華大智造stLFR
  • 在 .NET 中實現數據綁定的更好方法
    數據綁定是一種開發 UI 的有效技術: 數據綁定可以更輕鬆地區分視圖邏輯和業務邏輯,而且還可以更簡便地測試生成的代碼。
  • 深度 | 級聯MobileNet-V2實現人臉關鍵點檢測(附訓練源碼)
    人臉關鍵點檢測方法大致分為三種,分別是基 ASM(Active Shape Model)[1] 和 AAM (Active Appearnce Model)[2,3] 的傳統方法;基於級聯形狀回歸的方法 [4];基於深度學習的方法 [5-10]。在深度學習大行其道的環境下,本實驗將借鑑深度學習以及級聯思想進行人臉關鍵點檢測。
  • ubuntu18.04設置開機啟動命令/腳本的三種方法(可sudo)
    但是如何設置呢,一般來說有以下三種方法。(本文針對的是ubuntu18.04設置開機啟動命令或者腳本)1 不用sudo的命令開機自啟動1.1 方法一(開機自動執行一條指令)1.在終端中輸入gnome-session-properties2.點右方的add加入填寫名稱,可自定義填寫指令,即開機想要執行的指令比如要啟動vino,就添加如下指令
  • 谷歌提出1個小時訓練EfficientNet,準確率高達83%!
    點擊上方「計算機視覺Daily」,選擇加"星標"重磅乾貨,第一時間送達本文轉載自:AI科技評論  |  註:文末附論文表2展示了EfficientNet-B2和B5峰值準確率的基準,這裡可以找到準確率的完整基準以及相應的批次大小,作者表示,即使使用全局批次大小,使用他們的方法,也可以在EfficientNet-B5上保持83%的準確率。這項研究至少表明了,在EfficientNet上探索大規模圖像分類的快速訓練也是一個有希望的方向。
  • VMware15虛擬機的安裝配置與三種網絡模式的區別
    一、VM_15Pro安裝1、下載安裝包大家可以百度VMware官網去官網下載,也可以在評論區留言下載連結,小編會及時回應大家(附一張官網照片)。2、VMware安裝通過小編的原文連結下載後,右鍵「管理員身份」運行,