日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

工程之道,深度学习推理性能业界最佳优化实践

發布時間:2024/10/8 pytorch 109 豆豆
生活随笔 收集整理的這篇文章主要介紹了 工程之道,深度学习推理性能业界最佳优化实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


MegEngine「訓練推理一體化」的獨特范式,通過靜態圖優化保證模型精度與訓練時一致,無縫導入推理側,再借助工業驗證的高效卷積優化技術,打造深度學習推理側極致加速方案,實現當前業界最快運行速度。本文從推理側的數據排布(Inference Layout)講起,接著介紹MegEngine的Im2col+MatMul、Winograd、Fast-Run工程優化實踐。經典的輕量卷積神經網絡實驗表明,經過MegEngine加速,ResNet18和ResNet50最高加速比可達2x以上,ShuffleNet V2和MobileNet V2執行效率也得到顯著提升,實現了業界當前最佳推理性能。

深度學習是一個端到端的自動化系統,在數據驅動之下,算法歷經訓練測試、工程部署、推理實現三個環節。深度學習技術能否最終落地為產品,細粒度滿足不同場景需求,深度學習框架的推理性能優化是一個關鍵變量。

針對不同硬件設備對性能的苛刻要求,業界一般做法是開發一套推理專用框架,不足是造成了訓練與推理的分裂。MegEngine(中文名:天元)「訓練推理一體化」的獨特范式,可以實現訓練與推理的精確等價性,避免轉換可能帶來的精度損失。

?

MegEngine的推理性能優化有兩個階段,1)工程部署時的靜態圖優化,保證模型精度和訓練時一致,2)推理實現時的卷積優化,保證模型運算的最快速度。兩者最終的優化目標是實現模型推理又「好」又「快」。

?

深度學習中,卷積種類眾多,計算也最為耗時,成為首要優化對象,而推理側卷積優化更是重中之重。如何讓深度學習模型魯棒運行和推理,即在不同硬件平臺(比如CPU)上,針對目標架構(比如X86/ARM)做計算優化,實現最快運行速度,是一個長久存在的挑戰。

?

MegEngine秉持極致的「工程之道」,針對CPU推理的卷積優化,做了細致而系統的工程創新,不斷逼近加速極限。本文是MegEngine卷積優化技術的「綜述篇」,基于已有工作,做了多項技術的工程優化,包括Inference Layout、Im2col+MatMul、Winograd、Fast-Run。后續會有相關技術的詳解篇。

?

Inference Layout

?

推理側卷積計算優化方面,首先面臨的問題是feature map的數據排布(Tensor Layout),選擇合適的數據排布不僅會使卷積優化事半功倍,還可作為其他優化方法的基礎,比如Im2col、Winograd、Fast-Run。

?

目前,深度學習框架中常見的數據排布格式有3種:

?

  • NHWC:[Batch, Height, Width, Channels]

  • NCHW:[Batch, Channels, Height, Width]

  • NCHWX:[Batch, Channels/X, Height, Width, X=4/8]

?

數據的排布對卷積計算有著整體性的直接影響。NHWC和NCHW的空間復雜度相同,區別在于訪存行為,NCHWX介于兩者之間,但是有其他優點。

?

NCHWX

?

NCHWX在NCHW的基礎上轉換而來,其原理可參考下圖。

?

MegEngine選擇NCHWX作為CPU推理實現的數據排布(Inference Layout),有如下3個原因:

?

  • 適配SIMD指令,比如Arm Neon上,用4個浮點數填滿一條SIMD向量,減少邊界判斷的次數;

  • 對Cache更友好,比如計算卷積時讀取feature map,實現多個通道連續訪問;

  • 易于進行padding,減少邊界分支判斷,代碼邏輯簡單。

?

Im2col+MatMul

?

Im2col+MatMul是一種針對深度神經網絡卷積計算的高效實踐方法。Im2col(Image to Column)把輸入feature map按照卷積核的形式一一展開并拼接成列,接著通過高性能MatMul(Matrix Multiplication) Kernel進行矩陣乘,得到輸出feature map,具體原理可參考論文[1],它的本質是把卷積運算轉換成矩陣運算。

Im2col+MatMul在做算法創新的同時,也產生了一些新問題:

  • Im2col轉換之后,所得數據數倍/數十倍于輸入feature map;

  • Im2col轉換之后,數據內存占用超過L2 Cache,對Cache不友好;

  • Im2col轉換之后,MatMul要再操作一次數據PACK。

針對這些問題,MegEngine結合自身工業實踐,做了兩方面的工程優化:1)進行Im2col+MatMul分塊操作,減少訪存缺失;2)融合Im2col+MatMul的PACK操作,減少數據訪存。

分塊操作

Im2col+MatMul優化卷積計算時,比如輸出feature map的數據格式為 [n, oc, oh, ow],卷積核的大小為fh*fw,那么Im2col轉換之后的數據格式為 [n, fh*fw*ic, oh*ow]。MegEngine的分塊操作在oh*ow維度上,分塊大小通過公式計算,確保Im2col之后的數據完全保存于L2 Cache。

?

分塊之后,不僅可以減少內存占用,還將提升數據訪存效率,其原理圖如下所示,把Im2col轉換數據在其oh*ow維度上切塊,接著,每個分塊和weight進行矩陣乘,獲取輸出oh*ow維度上的一個分塊:

?

為驗證分塊操作的有效性,MegEngine開展了相關對比實驗,在進行單層卷積計算時,給出了采用MegEngine Im2col分塊操作前后的內存/性能數據的對比,其中內存占用節省了數十倍,計算性能也顯著提升:

?

融合PACK

Im2col+MatMul的PACK融合操作將會減少數據訪存。具體而言,Im2col轉換之后的數據,在MatMul計算時需要一次數據PACK[3],實際上這對Im2col數據做了兩次讀寫,造成了不必要的訪存,因此,MegEngine通過Im2col+MatMul的PACK融合,減少了一次內存讀寫。

下面是Im2col+MatMul的PACK融合優化前后,卷積計算的性能測試對比,個別Case最大提升可達18%:

Winograd

?

在深度神經網絡中,卷積計算占據了絕大部分的時/空復雜度,Im2col+MatMul可以提高訪存友好性,但無益于時間復雜度的減少,因此卷積計算優化實踐中誕生了Winograd算法,具體數學原理可參見論文[2]。

?

Winograd算法主要應用于卷積核為3x3,步幅為1的2D卷積神經網絡,其參數表示為F(mxm, rxr),其中mxm是運算之后輸出塊的大小,rxr是卷積核的大小,以F(2x2, 3x3)和F(6x6, 3x3)使用最多,前者加速比可達2.25x,后者加速比則高達5.06x [2]。

?

Winograd算法的本質是以加法換乘法,其計算優化的一般流程如上圖所示(注:出自[3]),可分為3步:

?

  • 把輸入的feature map和weight進行矩陣轉換;

  • 把轉換后feature map和weight做批量矩陣乘;

  • 把矩陣乘的結果進行輸出轉換,得到最終結果。

?

同時,其優化運算過程也存在3點不足:

?

  • 輸入轉換要計算整個feature map,數據讀寫對Cache不友好;

  • feature map轉換之后,矩陣乘時需要再PACK,數據訪存增加;

  • 輸出轉換讀取批量矩陣乘之后結果時,兩次連續讀寫間隔較大,對Cache不友好。

?

工程

?

針對上述問題,MegEngine結合自身多年深度學習實踐,對Winograd算法的整個計算流程做了工程優化,主要有:

?

  • 輸入轉換時,分塊feature map的全部tiles,隨后只計算一個分塊的數據;

  • 調整分塊大小適配CPU L1 Cache,使得矩陣乘不需要PACK;

  • 結合NCHWX數據排布,通過SIMD指令優化輸入/輸出轉換。

?

由此,MegEngine對整個輸入feature map進行分塊,每次Winograd完整流程只計算一個分塊的nr個tiles,該分塊大小的計算公式為:,即保證每個批量矩陣的輸入數據(除了轉換之后的weight數據)保存于L1 Cache,則矩陣乘時不PACK也不會出現訪存缺失。

?

根據上述公式和L1 Cache大小,可計算出nr_tiles大小;但是,每個卷積的ic不同,最優分塊也不同,MegEngine將通過下文介紹的Fast-Run機制做局部搜索,發現最優的分塊大小。

?

實驗

?

在不同的輸入尺寸和算法參數F=(6x6,3x3)的情況下,原始Winograd和MegEngine優化后的Winograd之間做了加速對比實驗,證明后者性能提升效果顯著,具體結果如下:

?

Fast-Run

?

卷積計算有多種優化實現,側重點也各有不同,比如Im2col可以平衡內存占用和運行速度,Direct直接進行卷積計算優化,Winograd則是優化計算復雜度。每種優化實現都在特定的輸入參數下有一定的優勢,并隨著推理平臺的不同而發生變化,因此不夠靈活,無法選擇最優實現。上述實現的啟發式偏好如下所示:

?

為使每個部署模型在運行推理時,最佳地實現每個卷積,MegEngine從自身工業實踐獲得啟發,通過Fast-Run機制進行局部搜索,以改進傳統的啟發式方法,不遺余力地完善深度學習產品性能。

?

具體而言,首先,在目標設備上使用目標模型參數搜索所有已實現的算子;接著,記錄并保存同時適配目標設備和目標模型的最優算子;最后,在推理時使用最優算子進行計算。

?

Fast-Run機制有著較強的自適應性,彌補了啟發式機制的一些的缺陷,從根本上確保了目標模型的算子最為適配目標設備,從而發揮出最佳性能。

?

工程

?

Fast-Run機制的本質是尋找最優算子,其工程實現分為選擇和執行兩個階段:

?

  • 選擇階段,測速模型每個算子,選出最優實現,保存算子名稱和最優實現的映射表;

  • 執行階段,根據映射表直接調用相應實現完成計算。

?

實驗

?

經典卷積網絡上的實驗測試證明了Fast-Run機制的自適應優勢,優化效果明顯,其模型執行效率優于先驗選擇下的執行效率,具體結果如下所示:

結論

?

深度學習算法在數據的加持之下,迭變權重,更新參數,積累知識,以深度學習產品的方式與這個世界交互。「好而快」是衡量這種交互的不二圭臬。這里,「好」或者精度,對應于靜態圖優化,「快」或者速度,對應于卷積計算優化,「好而快」是精度和速度的權衡,對應于深度學習框架。

?

MegEngine「訓練推理一體化」有著獨特優勢,相較推理專用框架,更利于在「好」的基礎上做到「快」。通過上文,MegEngine在一系列經典的輕量級卷積網絡上,做了集成式卷積優化實驗,ResNet18和ResNet50最高加速比可達2x以上,ShuffleNet V2和MobileNet V2執行效率獲得大幅提升,實現了當前業界最佳的推理性能。

?

這些技術將在今年6月底發布的MegEngine Beta版本中有所體現,敬請期待。下一步,MegEngine將嘗試全局混合Layout和混合精度優化,探索更低精度的量化(4bit/1bit),以及采用多級分塊適配CPU多級Cache大小,最大化訪存友好性,不斷逼近推理側的加速極限。

?

歡迎訪問

?

  • MegEngine WebSite:https://megengine.org.cn

  • MegEngine GitHub:https://github.com/MegEngine

參考文獻

[1] Kumar Chellapilla, Sidd Puri, Patrice Simard. High Performance Convolutional Neural Networks for Document Processing. Tenth International Workshop on Frontiers in Handwriting Recognition, Université de Rennes 1, Oct 2006, La Baule (France).

[2] Ningning Ma, Xiangyu Zhang, Hai-Tao Zheng, Jian Sun. ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design. The European Conference on Computer Vision (ECCV), 2018, pp. 116-131.

[3] Lavin, A. and Gray, S.?Fast?algorithms for?convolutional?neural?networks.?In?CVPR, 2016.

[4] Feng Shi,Haochen Li,Yuhe Gao,Benjamin Kuschner,Song-Chun Zhu. Sparse Winograd Convolutional neural networks on small-scale systolic arrays. FPGA, Volume abs/1810.01973, 2019, Pages 118.

????

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關于PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的工程之道,深度学习推理性能业界最佳优化实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲素人在线 | a天堂资源 | 亚洲欧美中文字幕 | 99视频在线观看免费 | 亚洲第一精品在线观看 | 九九九九九精品 | 精品国产免费看 | 在线观看日韩一区二区 | 精品一区久久久 | 黄视频免费看在线 | 99爱在线观看 | 国产艳情片 | 特黄aaaaaa私密按摩 | 女性爱爱视频 | 国产色在线 | 日韩在线视频免费播放 | aa在线视频| 日韩一区二区免费看 | 老司机黄色片 | 三级精品在线 | 天天婷婷 | 亚洲精品视频免费 | 69福利社区 | 调教一区 | 亚洲黄v | 免费毛片a | 欧美裸体xxxx | 91蜜桃传媒精品久久久一区二区 | 久久久亚洲国产精品 | 成人午夜电影网站 | 色眯眯视频 | 美女被男生免费视频 | 齐天大性床战铁扇公主 | 四虎影库永久在线 | 北条麻纪在线观看aⅴ | 成人av免费网址 | 精品不卡一区 | 久久精品国产大片免费观看 | 国产精品免费网站 | 五号特工组之偷天换月 | 国产三级三级三级三级三级 | 高跟91白丝| 色小姐av| av五月| 亚洲一区二区三区影视 | 日韩永久免费 | 亚洲一卡二卡在线 | va欧美 | 撕开少妇裙子猛然进入 | 浮生影视在线观看免费 | 欧美国产高清 | 欧美福利片在线观看 | 一级艳片新婚之夜 | 亚洲欧洲综合av | 快色视频 | 啪啪的网站 | 欧美11一13sex性hd| 全国最大色 | 另一种灿烂生活 | 最新国产在线视频 | 亚洲孕交 | 激情网站视频 | 黄色a级片在线观看 | 亚洲aa在线 | 久久精品美女视频 | 精品999视频 | 男人的天堂亚洲 | 日韩av动漫 | 青青草久久爱 | 国产a级片免费看 | 中文久久久久 | 葵司免费一区二区三区四区五区 | a亚洲天堂 | 99成人国产精品视频 | www.呦呦| 亚洲 欧美 国产 另类 | 色播日韩| 成人h在线 | 亚洲图片激情小说 | 欧美日韩不卡合集视频 | 国内精品91| 久久wwww | 日本黄色一级网站 | 美利坚合众国av | 国产午夜福利片 | 99re热这里只有精品视频 | av资源新版在线天堂 | 日韩国产欧美一区二区 | 国产一区二区三区在线免费观看 | 一区黄色 | 午夜影院一区二区三区 | 精品欧美乱码久久久久久 | 午夜视频国产 | 一级成人毛片 | 一区二区精品视频 | xxxxx在线| 成人免费黄色片 | 亚洲精品一区中文字幕乱码 | 欧美自拍一区 |