由來(lái)自AWS的蘇尼塔·納坦普alli 校對(duì):Portnoy
新一代的CPU在機(jī)器學(xué)習(xí)(ML)推論中,由于專門的內(nèi)置指令,其性能顯著改善。 這些普通用途處理器加上其靈活性、高速開(kāi)發(fā)和低運(yùn)作成本,為其他現(xiàn)有硬件解決方案提供了替代 ML 推論解決方案。
AWS、Arm、Meta等幫助優(yōu)化了PyTorrch 2.0 武器化處理器的性能。 因此,我們高興地宣布,PyToch 2.0 武器基AWS Graviton案例的推論性能比先前的PyToch 釋放速度高達(dá)ResNet-50的3.5倍,比BERT速度高達(dá)1.4倍,使Graviton案例成為這些模型在AWS上最快速最優(yōu)化的計(jì)算實(shí)例(見(jiàn)下圖 ) 。
圖像1:通過(guò)從PyTorrch版本1.13升級(jí)到2.0(越高越好)實(shí)現(xiàn)相對(duì)速度的提高。
如下圖所示,我們測(cè)量到PyTorrch 以 Graviton3 為基礎(chǔ)的C7g 案例在火炬樞紐ResNet-50和多個(gè)擁抱面模型中產(chǎn)生的成本節(jié)約高達(dá)50%,而可比的以x86為基礎(chǔ)的計(jì)算優(yōu)化了亞馬遜EC2案例。對(duì)于該圖表,我們首先測(cè)量了五種案例類型的每百萬(wàn)次計(jì)算成本。然后,我們將每百萬(wàn)次計(jì)算成本的結(jié)果與C5.4x大案例(這是該圖表Y軸上的“1”的基線衡量標(biāo)準(zhǔn))標(biāo)準(zhǔn)化。
圖像2圖2:不同AWS實(shí)例中的PyTorch推論的相對(duì)成本(較低者更好)。
資料來(lái)源:AWS ML博客。Graviton PyTerch2.0 推推性能.
與前面的推論成本比較圖相似,下圖顯示了相同五例類型的模型p90延遲度。我們將延遲值結(jié)果與C5.4x大實(shí)例(這是圖Y軸上的“1”基線測(cè)量標(biāo)準(zhǔn))正常化。 c7g.4x大(AWS Graviton3)模型推導(dǎo)延遲度比C5.4x大、C6i4x大和C6a.4x大的延遲度高出50%。
圖像 3:不同AWS實(shí)例中的PyTocher推論的相對(duì)延遲度(第90頁(yè))(較低者更好)。
資料來(lái)源:AWS ML博客。Graviton PyTerch2.0 推推性能.
優(yōu)化詳情
PyTorrch 支持計(jì)算 Armá 建筑(ACL) GEMM 核心庫(kù)的計(jì)算, 通過(guò) AArch64 平臺(tái)的 oneDNNN 后端( 原稱“ MKL- DNN ”) 計(jì)算 。 優(yōu)化主要針對(duì) PyTorrch ATen CPU BLAS 、 fp32 和 bfloat16 的 ACL 內(nèi)核以及 1DN 原始緩存。 沒(méi)有前端 API 更改, 因此在應(yīng)用層面無(wú)需修改, 以使這些優(yōu)化適用于 Graviton3 實(shí)例 。
Py火點(diǎn)級(jí)優(yōu)化
我們擴(kuò)展了ATen CPU BLAS 接口, 通過(guò) anDNN 后端加速 Aarch64 平臺(tái)的更多操作員和高壓配置。 下圖突出顯示( 橙色) 優(yōu)化組件, 改善了 Aarch64 平臺(tái)上的 PyTorrch 推斷性能 。
圖像 4 圖像 4:PyTorrch軟件堆加亮(橙色)AArch64平臺(tái)上為改進(jìn)推論性能而優(yōu)化的組件
ACL 內(nèi)核和 BFloat16 FFmatath 模式
ACL 圖書(shū)館為 fp32 和 bfloat 16 格式提供 Neon 和 SVE 優(yōu)化的 GEMM 內(nèi)核: 這些內(nèi)核提高了SIMD 硬件的利用率,并將結(jié)束時(shí)間縮短到最終推導(dǎo)延遲。 Graviton 3 的 bloat 16 支持使使用 bfloat 16 fp32 和 自動(dòng)混合精密( AMP) 培訓(xùn)的模型得到有效部署。 標(biāo)準(zhǔn)的 fp32 模型通過(guò) oneDNN FPmath 模式使用 bfloat 16 內(nèi)核,而沒(méi)有模型量化。 這些內(nèi)核的性能比現(xiàn)有的 fp32 模型推力快兩倍,沒(méi)有 bfloat16 FPmath 支持。 關(guān)于ACL GEM 內(nèi)核支持的更多細(xì)節(jié),請(qǐng)參見(jiàn) ACL GEMM 內(nèi)核支持。Arm 計(jì)算庫(kù) Github.
原始緩存
以下調(diào)序圖顯示了ACL運(yùn)算符是如何融入 oneDNN 后端的。 如圖所示, ACL 對(duì)象以 oneDNN 資源而不是原始對(duì)象來(lái)處理 ACL 對(duì)象。 這是因?yàn)?ACL 對(duì)象是明確和可變的 。 由于 ACL 對(duì)象是作為資源對(duì)象處理的, 因而無(wú)法以 oneDNN 支持的默認(rèn)原始緩沖特性來(lái)緩存 。 我們用“ 遞增”、“ 配制” 和“ 內(nèi)制產(chǎn)品” 運(yùn)算符在 ideep 操作員級(jí)別上進(jìn)行原始的遞歸, 以避免 GEMM 內(nèi)核啟動(dòng)和 Exronor 分配管理 。
圖像5:呼叫序列圖表,顯示如何將 Armatia 建筑(ACL) GEMM GEMM 內(nèi)核計(jì)算庫(kù)整合到一個(gè) DNN 后端
如何利用優(yōu)化
從官方回購(gòu)中安裝 PyTorrch 2. 0 輪, 并設(shè)置環(huán)境變量, 以允許額外優(yōu)化 。
調(diào)
正在運(yùn)行一種推論
您可以使用 PyTork火炬燃燒以測(cè)量 CPU 推斷性能改進(jìn),或比較不同實(shí)例類型。
調(diào)
業(yè)績(jī)分析
現(xiàn)在, 我們將使用 PyTorrch 配置器分析 ResNet- 50 在 Graviton3 的 c7g 實(shí)例上的 ResNet- 50 的推論性能 。 我們用 PyTorrch 1. 13 和 PyTorrch 2. 0 運(yùn)行下面的代碼, 并在測(cè)量性能之前將幾處迭代的推論進(jìn)行 。
調(diào)
從火炬進(jìn)口模型樣本中導(dǎo)入的點(diǎn)火炬 樣本_input = [火炬.rand(1, 3, 224, 224)] 熱度_ 模型 = 模型.resnet50 (重量=模型.ResNet50_Weights.DEFAULAT) 模型 = 火炬.jit. stat. stript.jet.no_grad () 模型 = 模型.eval () 模型 = 火炬.jit.optimize_ for_ inference () 模型 :
我們用電壓儀查看剖面儀的結(jié)果,分析模型性能。
安裝以下 PyTollch 配置配置程序 Tensorboard 插件插件
pip 安裝火炬_ tb_ 色彩描述器
使用電壓板啟動(dòng)
色色板 -- logdir=./logs
在瀏覽器中啟動(dòng)以下內(nèi)容以查看剖析器輸出。 剖析器支持“ 概覽” 、 “ 操作器” 、 “ 跟蹤” 和“ 模塊” 的觀點(diǎn), 以洞察推論執(zhí)行 。
http://localhost:6006/
下圖是剖析器“ Trace” 視圖, 顯示調(diào)用堆和每個(gè)函數(shù)的執(zhí)行時(shí)間。 在剖析器中, 我們選擇了前方() 函數(shù)以獲得整個(gè)推算時(shí)間。 如圖所示, 以 Graviton3 為基礎(chǔ)的 7g 實(shí)例 ResNet- 50 模型的推算時(shí)間比 PyTorch 1. 13 高出 PyTorrch 2. 0 的三倍左右。
圖像 6: 剖析器跟蹤視圖: PyTorch 1. 13 和 PyTorch 2. 0 上的前穿墻長(zhǎng)度
下一個(gè)圖表是“ 操作器” 視圖, 該視圖顯示 PyTorrch 操作器及其執(zhí)行時(shí)間列表。 與前面的 Trace 視圖類似, 操作器視圖顯示, 以 Graviton3 為基礎(chǔ)的 c7g 實(shí)例 ResNet- 50 模型的操作器主機(jī)運(yùn)行時(shí)間比 PyTorrch 1. 13 高出 3 倍左右 。
圖像 7PyTorch 1. 13 和 PyTorch 2. 0 的主機(jī)時(shí)間
B. 基準(zhǔn)制定 " 擁抱模型 " 的基準(zhǔn)
您可以使用Amazon Sage-Maker 推斷建議在不同實(shí)例中自動(dòng)設(shè)定性能基準(zhǔn)參數(shù)的實(shí)用性, 在不同實(shí)例中自動(dòng)設(shè)定性能基準(zhǔn)。 使用推推建議, 您可以找到實(shí)時(shí)推論端點(diǎn), 該端點(diǎn)以給定 ML 模型的最低成本提供最佳性能。 我們通過(guò)在生產(chǎn)端點(diǎn)上部署模型, 收集了上述數(shù)據(jù) 。 關(guān)于推論建議方的更多細(xì)節(jié), 請(qǐng)參考亞馬孫 -- -- 種植者 -- -- 實(shí)例GitHub repo。我們?yōu)檫@個(gè)職位設(shè)定了以下模式基準(zhǔn):ResNet50 圖像分類,發(fā)盤(pán)感應(yīng)分析,RoBERTA 填充遮罩, 和RoBERTATA情緒分析.
結(jié) 結(jié) 結(jié) 結(jié)
對(duì)于PyTorrch 2. 0, 以 Graviton3為基礎(chǔ)的C7g實(shí)例是計(jì)算最符合成本效益的最優(yōu)化亞馬遜EC2案例的推論。師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師 師和亞馬遜 EC2。AWS 重力技術(shù)指南提供最佳圖書(shū)館和最佳做法清單,幫助您在不同工作量中利用Graviton案例實(shí)現(xiàn)成本效益。
如果您發(fā)現(xiàn)在Graviton沒(méi)有觀察到類似的績(jī)效收益的使用情況,請(qǐng)就Graviton的績(jī)效收益提出問(wèn)題。啟動(dòng) aws -graviton - greviton - 啟動(dòng)我們將繼續(xù)進(jìn)一步改進(jìn)性能,使以AWS Graviton為基礎(chǔ)的案例成為使用PyTorrch進(jìn)行推論的最具成本效益和效率的通用處理器。
收到確認(rèn)
我們還要感謝AWS的Ali Saidi(首席工程師)和Csaba Csoma(軟件開(kāi)發(fā)經(jīng)理)、Ashok Bhat(產(chǎn)品經(jīng)理)、Nathan Sircombe(工程經(jīng)理)和Milos Puzovic(首席軟件工程師)在Graviton PyTorch推論優(yōu)化工作中的支持。 我們還要感謝Meta的Geeta Chauhan(應(yīng)用AI工程師領(lǐng)袖)在博客上提供的指導(dǎo)。
關(guān)于提交人
蘇尼塔·納坦普alli系A(chǔ)WS的ML工程師和軟件開(kāi)發(fā)經(jīng)理。
安基思·古納帕在Meta(PyTorrch)是AI合伙人工程師。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19409瀏覽量
231194 -
AI
+關(guān)注
關(guān)注
87文章
31536瀏覽量
270344 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8441瀏覽量
133087 -
pytorch
+關(guān)注
關(guān)注
2文章
808瀏覽量
13363
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論