簡介:本次實(shí)測涵蓋圖像分類識別、圖像目標(biāo)檢測、自然語言處理以及搜索推薦等四種常見的深度學(xué)習(xí)推理場景
近幾年,深度學(xué)習(xí)在視覺、自然語言處理、搜索廣告推薦等工業(yè)界的各個(gè)領(lǐng)域廣泛落地。深度學(xué)習(xí)模型參數(shù)量的指數(shù)級上升、以及新的業(yè)務(wù)對復(fù)雜模型的需求,都要求云廠商的彈性計(jì)算能夠降低算力成本、提高計(jì)算效率,尤其是深度學(xué)習(xí)的推理,將會成為優(yōu)化的重點(diǎn)。在此因素影響下,阿里云平頭哥團(tuán)隊(duì)推出了全球首個(gè)5nm 制程的 ARM Server 芯片倚天710。該芯片基于 ARM Neoverse N2 架構(gòu),支持最新的 ARMv9 指令集,其中包括 i8mm,bf16等擴(kuò)展指令集,能在科學(xué)/AI計(jì)算領(lǐng)域獲得性能優(yōu)勢。
在本文中,我們聚焦于采用倚天710芯片的 ECS倚天實(shí)例g8y,對深度學(xué)習(xí)推理任務(wù)的性能進(jìn)行了測試和比較。
本次分析,我們選擇了四種常見的深度學(xué)習(xí)推理場景,涵蓋圖像分類識別、圖像目標(biāo)檢測、自然語言處理以及搜索推薦領(lǐng)域。所使用的代表性模型如下:
Area | Task | Model |
Vision | Image Classification | Resnet50-v1.5 and VGG19 |
Vision | Object Detection | SSD-Resnet34 |
Language | Natural Language Processing | BERT-Large |
Recommendation | Click-Through Rate Prediction | DIN |
02 Platforms
實(shí)例類型
我們在阿里云兩種實(shí)例類型上進(jìn)行測試,分別是ECS g8y(倚天710) 和 ECS g7(Ice Lake),實(shí)例均為 8-vCPU。
Deep Learning Framework
在所有平臺,我們使用 TensorFlow v2.10.0 和 PyTorch 1.12.1。
在 Arm 設(shè)備上,TensorFlow 支持兩種后端,我們使用 OneDNN 后端。OneDNN 是一個(gè)開源的跨平臺深度學(xué)習(xí)庫,并且能夠集成 Arm Compute Library(Arm設(shè)備的機(jī)器學(xué)習(xí)計(jì)算庫)。在 Arm 設(shè)備上使用該后端能夠取得更高的性能。
OneDNN 在 PyTorch 上的支持仍然是實(shí)驗(yàn)版本,因此在 PyTorch 框架上使用默認(rèn)的 OpenBLAS 后端。
BFloat16
BFloat16 (BF16) 是一種浮點(diǎn)數(shù)表示形式,其指數(shù)位與單精度浮點(diǎn)數(shù)(IEEE FP32)保持一致,但是小數(shù)位只有 7 位,因此 BF16 的表示范圍與 FP32 幾乎一致,但是精度較低。BF16 非常適合深度學(xué)習(xí),因?yàn)橥ǔ>认陆挡⒉粫@著降低模型的預(yù)測精度,但是16位的數(shù)據(jù)格式卻能夠節(jié)省空間、加速計(jì)算。
03 TensorFlow Performance Comparison
g8y 借助新的 BF16 指令,大幅提升了深度學(xué)習(xí)模型的推理性能,在多個(gè)場景下跑出了比 g7 更優(yōu)秀的數(shù)據(jù)。此外,倚天 710 作為自研芯片,相比 g7 最大有 30% 的價(jià)格優(yōu)勢。
下面四幅圖分別是 Resnet50,SSD,BERT 和 DIN 模型下的對比結(jié)果,其中,Resnet,SSD 和 BERT 都來自 MLPerf Inference Benchmark 項(xiàng)目,DIN 是 alibaba 提出的點(diǎn)擊率預(yù)測模型。藍(lán)色柱狀條是直接性能對比,橙色柱狀條是考慮了單位價(jià)格的性能對比,例如在 Resnet50 上,g8y 的性能是 g7 的 1.43倍,單位價(jià)格的性能是 g7 的 2.05 倍。
Figure 1: Resnet50 在 g8y 和 g7 上的推理性能對比圖
說明:此處設(shè)置 Batch Size = 32,測試圖像尺寸為 224 * 224
Figure 2: SSD 性能對比圖
說明:此處 Batch Size = 1,測試圖像尺寸為1200 * 1200
Figure 3: BERT 性能對比圖
Figure 4: DIN 性能對比圖
04 PyTorch Performance Comparison
Arm 上的 OneDNN 后端的 PyTorch 版本仍然是實(shí)驗(yàn)性質(zhì),因此本次實(shí)驗(yàn)采用默認(rèn)的 OpenBLAS 后端。OpenBLAS 是一個(gè)開源的線性代數(shù)庫,我們?yōu)槠涮砑恿酸槍?Arm Neoverse N2 的 BFloat16 矩陣乘法計(jì)算的優(yōu)化實(shí)現(xiàn)。
OpenBLAS BFloat16 矩陣乘法優(yōu)化
矩陣乘法和深度學(xué)習(xí)存在非常緊密的關(guān)系,例如深度學(xué)習(xí)中常見的 Fully Connected Layer,Convolutional Layer等,最終是被轉(zhuǎn)換成矩陣乘法實(shí)現(xiàn)的。因此,加速矩陣乘法最終能加速模型的計(jì)算。
OpenBLAS 是一個(gè)廣泛使用的計(jì)算庫,默認(rèn)作為 Numpy,PyTorch 等庫的后端,我們在調(diào)研中發(fā)現(xiàn)該庫不支持倚天 710 的 bf16 指令擴(kuò)展,在和社區(qū)交流后,我們決定利用倚天 710 支持的 BFMMLA 等向量指令實(shí)現(xiàn)支持 bf16 數(shù)據(jù)格式的矩陣乘法,實(shí)現(xiàn)后性能的到大幅提升,性能對比如圖 5 所示。該實(shí)現(xiàn)目前已經(jīng)貢獻(xiàn)給開源社區(qū),OpenBLAS 的最新版本 0.3.21 也已經(jīng)合入。
Figure5: OpenBLAS 矩陣乘法性能對比
說明:參與運(yùn)算的矩陣的行數(shù)和列數(shù)均為 1000。
PyTorch CNN Performance
OpenBLAS 作為 PyTorch 的默認(rèn)后端,在矩陣乘法上的優(yōu)化可以體現(xiàn)在 PyTorch 實(shí)現(xiàn)的深度學(xué)習(xí)模型中,我們以卷積計(jì)算占比較高的模型 VGG19 為例,該模型推理時(shí),所有的卷積算子會被轉(zhuǎn)換為矩陣乘法,并調(diào)用 OpenBLAS 完成計(jì)算。下圖是 VGG 19 的性能對比:
Figure 6: VGG19性能對比圖
05 結(jié)論
本文的分析顯示,在阿里云倚天實(shí)例g8y上,多個(gè)深度學(xué)習(xí)模型的推理性能高于同規(guī)格 g7,這主要得益于 Arm Neoverse N2 的新指令以及不斷更新的軟件支持(OneDNN、ACL 和 OpenBLAS)。在這個(gè)過程中,阿里云編譯器團(tuán)隊(duì)貢獻(xiàn)了一部分軟件優(yōu)化,后續(xù)我們將繼續(xù)關(guān)注該領(lǐng)域的軟硬件優(yōu)化,提高 Arm 系列實(shí)例在 ML/AI 方面的競爭力。
審核編輯:郭婷
-
芯片
+關(guān)注
關(guān)注
456文章
50943瀏覽量
424700 -
ARM
+關(guān)注
關(guān)注
134文章
9107瀏覽量
367982 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5507瀏覽量
121272
原文標(biāo)題:性能最高提升50%,ECS倚天實(shí)例深度學(xué)習(xí)推理性能實(shí)測
文章出處:【微信號:Arm軟件開發(fā)者,微信公眾號:Arm軟件開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論