0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用Arm Kleidi技術(shù)實(shí)現(xiàn)PyTorch優(yōu)化

Arm社區(qū) ? 來(lái)源:Arm社區(qū) ? 2024-12-23 09:19 ? 次閱讀

作者:Arm 基礎(chǔ)設(shè)施事業(yè)部高級(jí)產(chǎn)品經(jīng)理 Ashok Bhat

PyTorch 是一個(gè)廣泛應(yīng)用的開(kāi)源機(jī)器學(xué)習(xí) (ML) 庫(kù)。近年來(lái),Arm 與合作伙伴通力協(xié)作,持續(xù)改進(jìn) PyTorch 的推理性能。本文將詳細(xì)介紹如何利用 Arm Kleidi 技術(shù)提升 Arm Neoverse 平臺(tái)上的 PyTorch 推理表現(xiàn)。Kleidi 技術(shù)可以通過(guò) Arm Compute Library (ACL) 和 KleidiAI 庫(kù)獲取。

PyTorch 提供兩種主要的執(zhí)行模式:即時(shí)執(zhí)行模式 (Eager Mode) 和圖模式 (Graph Mode)。即時(shí)執(zhí)行模式是一種動(dòng)態(tài)執(zhí)行模式,操作會(huì)以 Python 代碼編寫的方式立即執(zhí)行,該模式非常適用于實(shí)驗(yàn)與調(diào)試。而圖模式則是在執(zhí)行前將一系列 PyTorch 操作編譯成靜態(tài)計(jì)算圖,從而實(shí)現(xiàn)性能優(yōu)化和高效的硬件加速。通過(guò)使用 torch.compile 函數(shù),可以方便地將 PyTorch 代碼轉(zhuǎn)換為圖模式,通常能夠顯著提升執(zhí)行速度。

PyTorch 即時(shí)執(zhí)行模式

CPU 推理性能提升高達(dá)三倍

PyTorch 即時(shí)執(zhí)行模式使用 oneDNN,針對(duì)具有 ACL 內(nèi)核的 Arm Neoverse 處理器進(jìn)行了優(yōu)化??梢酝ㄟ^(guò)以下的 PyTorch 軟件棧圖進(jìn)行了解。

b5a46902-bead-11ef-9310-92fbcf53809c.jpg

圖 1:PyTorch 軟件棧

PyTorch 中的 FX Graph 是用于可視化和優(yōu)化 PyTorch 模型的一種中間表示形式。

ATen 是支撐 PyTorch 框架的基礎(chǔ)張量庫(kù)。它提供了核心張量類別和大量數(shù)學(xué)運(yùn)算,構(gòu)成了 PyTorch 模型的基本組件。

oneDNN 是一個(gè)性能庫(kù),為包括 Arm 和 x86 在內(nèi)的各種硬件架構(gòu)提供常見(jiàn)深度學(xué)習(xí)原語(yǔ)的優(yōu)化實(shí)現(xiàn)方案。在這些架構(gòu)上,ATen 使用 oneDNN 作為性能增強(qiáng)后端。這意味著當(dāng) PyTorch 遇到支持的操作時(shí),會(huì)將計(jì)算委托給 oneDNN,后者可以使用針對(duì)特定硬件的優(yōu)化來(lái)提高執(zhí)行效率。

Arm Compute Library 于 2016 年首次發(fā)布,提供針對(duì) Arm 進(jìn)行優(yōu)化的關(guān)鍵 ML 原語(yǔ),包括卷積、池化、激活函數(shù)、全連接層、歸一化。這些原語(yǔ)利用 Arm Neoverse 核心上針對(duì)特定 ML 和特定硬件的功能和指令來(lái)實(shí)現(xiàn)高性能。我們已將 Arm Compute Library 集成到 oneDNN 中,以便在 Arm 平臺(tái)上加速 ATen 操作。

Arm Neoverse CPU 包含有助于加速 ML 的硬件擴(kuò)展,其中包括 Neon、SVE/SVE2、BF16 和 I8MM,通過(guò)有效地進(jìn)行向量處理、BF16 運(yùn)算和矩陣乘法來(lái)加速 ML 任務(wù)。

b6220aa6-bead-11ef-9310-92fbcf53809c.jpg

圖 2:各種模型在即時(shí)執(zhí)行模式下實(shí)現(xiàn)的性能提升

PyTorch 圖模式(使用 torch.compile)

比 PyTorch 即時(shí)執(zhí)行模式進(jìn)一步提高兩倍

PyTorch 2.0 引入了 torch.compile,與默認(rèn)的即時(shí)執(zhí)行模式相比,可提高 PyTorch 代碼的速度。與即時(shí)執(zhí)行模式不同,torch.compile 將整個(gè)模型預(yù)編譯成針對(duì)特定硬件平臺(tái)優(yōu)化的單圖。從 PyTorch 2.3.1 開(kāi)始,官方 AArch64 安裝包均包含 torch.compile 優(yōu)化。在基于亞馬遜科技 (AWS) Graviton3 的 Amazon EC2 實(shí)例上,對(duì)于各種自然語(yǔ)言處理 (NLP)、計(jì)算機(jī)視覺(jué) (CV) 和推薦模型,這些優(yōu)化可以為 TorchBench 模型推理帶來(lái)比即時(shí)執(zhí)行模式高出兩倍的性能。

b63c4b14-bead-11ef-9310-92fbcf53809c.jpg

圖 3:各種模型在編譯模式下實(shí)現(xiàn)的性能提升

下一步通過(guò) KleidiAI 庫(kù)

提升生成式 AI 推理性能

目前,我們已經(jīng)研究了 Arm Compute Library 如何在即時(shí)執(zhí)行模式和編譯模式下提升 PyTorch 推理性能。接下來(lái),我們來(lái)看 PyTorch 即將推出什么新功能。Arm 目前正在努力提升 PyTorch 中的大語(yǔ)言模型 (LLM) 推理性能,并以 Llama 和 Gemma 為主要 LLM 示例。

經(jīng)優(yōu)化的 INT4 內(nèi)核

今年早些時(shí)候,Arm 軟件團(tuán)隊(duì)和合作伙伴共同優(yōu)化了 llama.cpp 中的 INT4 和 INT8 內(nèi)核,以利用更新的 DOT 和 MLA 指令。在 AWS Graviton3 處理器上,這些內(nèi)核在即時(shí)評(píng)估方面比現(xiàn)有 GEMM MMLA 內(nèi)核提升了 2.5 倍,并且在文本生成方面比默認(rèn)的 vec_dot 內(nèi)核提升了兩倍。這些經(jīng)優(yōu)化的新內(nèi)核也是 Arm KleidAI 庫(kù)的一部分。

今年早些發(fā)布的 KleidiAI 庫(kù)是一個(gè)開(kāi)源庫(kù),具有針對(duì) Arm CPU 上的 AI 任務(wù)進(jìn)行優(yōu)化的微內(nèi)核。對(duì)于微內(nèi)核,可將它視為能夠提升特定 ML 操作性能的軟件。開(kāi)發(fā)者可以通過(guò)包含相關(guān)的 .c 和 .h 文件及公共頭文件來(lái)使用這些微內(nèi)核。無(wú)需包含庫(kù)的其余部分。

Kleidi 與 PyTorch 的集成

b65c141c-bead-11ef-9310-92fbcf53809c.jpg

圖 4:Kleidi 技術(shù)與 PyTorch 的集成

我們引入了兩種新的 ATen 操作:torch.ops.aten._kai_weights_pack_int4() 和 torch.ops.aten._kai_input_quant_mm_int4(),兩者均使用 KleidiAI 庫(kù)中高度優(yōu)化的打包技術(shù)和 GEMM 內(nèi)核。gpt-fast 利用這些 PyTorch 算子來(lái) (1) 使用對(duì)稱的每通道量化將權(quán)重量化為 INT4,并添加包含量化尺度的額外數(shù)組;(2) 動(dòng)態(tài)量化激活矩陣并使用 AArch64 I8MM 擴(kuò)展來(lái)執(zhí)行激活矩陣和權(quán)重的 INT8 矩陣乘法。

b674764c-bead-11ef-9310-92fbcf53809c.jpg

圖 5:通過(guò)在 PyTorch 中集成 KleidiAI

來(lái)提升 4 位量化 LLM 模型性能

通過(guò)這種方法,與目前默認(rèn)的 PyTorch 實(shí)現(xiàn)方案相比,我們可以將 Llama 的推理性能提高 18 倍,將 Gemma 的推理性能提高 14 倍。

結(jié)論

Arm 及其合作伙伴利用 Arm Compute Library 中的 Kleidi 技術(shù)提高了 Arm Neoverse 平臺(tái)上的 PyTorch 推理性能。在即時(shí)執(zhí)行模式下可實(shí)現(xiàn)高達(dá)兩倍的性能提升,在圖模式下(使用 torch.compile)可再提升兩倍。此外,我們還在努力將生成式 AI 模型(Llama 和 Gemma)的推理性能提升高達(dá) 18 倍。

Arm 通過(guò)部署 Kleidi 技術(shù)來(lái)實(shí)現(xiàn)PyTorch 上的優(yōu)化,以加速在基于 Arm 架構(gòu)的處理器上運(yùn)行 LLM 的性能。Arm 技術(shù)專家在基于 Neoverse V2 的 AWS Graviton4 R8g.4xlarge EC2 實(shí)例上運(yùn)行 Llama 3.1 展示了所實(shí)現(xiàn)的性能提升。如果你對(duì)這一演示感興趣,可閱讀《Arm KleidiAI 助力提升 PyTorch 上 LLM 推理性能》了解。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9094

    瀏覽量

    367539
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211746
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8418

    瀏覽量

    132628
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13225
  • Neoverse
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    4607

原文標(biāo)題:如何在 Arm Neoverse 平臺(tái)上使用 Kleidi 技術(shù)加速 PyTorch 推理?

文章出處:【微信號(hào):Arm社區(qū),微信公眾號(hào):Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Arm KleidiAI助力提升PyTorch上LLM推理性能

    熱門的深度學(xué)習(xí)框架尤為突出,許多企業(yè)均會(huì)選擇其作為開(kāi)發(fā) AI 應(yīng)用的庫(kù)。通過(guò)部署 Arm Kleidi 技術(shù)Arm 正在努力優(yōu)化
    的頭像 發(fā)表于 12-03 17:05 ?791次閱讀
    <b class='flag-5'>Arm</b> KleidiAI助力提升<b class='flag-5'>PyTorch</b>上LLM推理性能

    ARM程序設(shè)計(jì)優(yōu)化策略與技術(shù)

    程序優(yōu)化是指軟件編程結(jié)束后,利用軟件開(kāi)發(fā)工具對(duì)程序進(jìn)行調(diào)整和改進(jìn),讓程序充分利用資源, 提高運(yùn)行效率, 縮減代碼尺寸的過(guò)程。按照優(yōu)化的側(cè)重點(diǎn)不同, 程序
    發(fā)表于 07-07 11:06

    Pytorch模型訓(xùn)練實(shí)用PDF教程【中文】

    ?模型部分?還是優(yōu)化器?只有這樣不斷的通過(guò)可視化診斷你的模型,不斷的對(duì)癥下藥,才能訓(xùn)練出一個(gè)較滿意的模型。本教程內(nèi)容及結(jié)構(gòu):本教程內(nèi)容主要為在 PyTorch 中訓(xùn)練一個(gè)模型所可能涉及到的方法及函數(shù),并且
    發(fā)表于 12-21 09:18

    在Ubuntu 18.04 for Arm上運(yùn)行的TensorFlow和PyTorch的Docker映像

    ,并做出優(yōu)化實(shí)現(xiàn)盡可能高的性能。我們希望這些 Docker 鏡像和創(chuàng)建它們的方法對(duì)希望在 AArch64 上使用 TensorFlow 和 PyTorch 的人有所幫助。包括什么?構(gòu)建
    發(fā)表于 10-14 14:25

    解讀最佳實(shí)踐:倚天 710 ARM 芯片的 Python+AI 算力優(yōu)化

    編者按: 在剛剛結(jié)束的 PyCon China 2022 大會(huì)上,龍蜥社區(qū)開(kāi)發(fā)者朱宏林分享了主題為《ARM 芯片的 Python+AI 算力優(yōu)化》的技術(shù)演講。本次演講,作者將向大家介紹他們?cè)谝刑?/div>
    發(fā)表于 12-23 16:02

    ARM編譯器優(yōu)化版本1.0

    ARM編譯器armcc可以優(yōu)化您的代碼以實(shí)現(xiàn)小代碼和高性能。 本教程介紹了編譯器執(zhí)行的主要優(yōu)化技術(shù),并解釋了如何控制編譯器
    發(fā)表于 08-28 07:11

    基于ARM的EPA通信協(xié)議棧優(yōu)化技術(shù)的研究與實(shí)現(xiàn)

    本文敘述基于ARM的EPA通信協(xié)議棧優(yōu)化技術(shù)的研究與實(shí)現(xiàn)的案例分析。
    發(fā)表于 10-13 16:48 ?32次下載
    基于<b class='flag-5'>ARM</b>的EPA通信協(xié)議棧<b class='flag-5'>優(yōu)化</b><b class='flag-5'>技術(shù)</b>的研究與<b class='flag-5'>實(shí)現(xiàn)</b>

    如何利用ARM Mali在機(jī)器視覺(jué)技術(shù)實(shí)現(xiàn)應(yīng)用優(yōu)勢(shì)

    談GPU計(jì)算的優(yōu)勢(shì),并闡述生態(tài)系統(tǒng)合作伙伴是如何利用ARM Mali 在各種圖像處理,多媒體和計(jì)算機(jī)視覺(jué)使用案例來(lái)實(shí)現(xiàn)這些優(yōu)勢(shì)。
    的頭像 發(fā)表于 07-02 13:13 ?2857次閱讀

    Pytorch實(shí)現(xiàn)MNIST手寫數(shù)字識(shí)別

    Pytorch 實(shí)現(xiàn)MNIST手寫數(shù)字識(shí)別
    發(fā)表于 06-16 14:47 ?7次下載

    PyTorch教程12.1之優(yōu)化和深度學(xué)習(xí)

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程12.1之優(yōu)化和深度學(xué)習(xí).pdf》資料免費(fèi)下載
    發(fā)表于 06-05 15:08 ?0次下載
    <b class='flag-5'>PyTorch</b>教程12.1之<b class='flag-5'>優(yōu)化</b>和深度學(xué)習(xí)

    PyTorch教程19.1之什么是超參數(shù)優(yōu)化

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程19.1之什么是超參數(shù)優(yōu)化.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:25 ?0次下載
    <b class='flag-5'>PyTorch</b>教程19.1之什么是超參數(shù)<b class='flag-5'>優(yōu)化</b>

    PyTorch教程19.2之超參數(shù)優(yōu)化API

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程19.2之超參數(shù)優(yōu)化API.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:27 ?0次下載
    <b class='flag-5'>PyTorch</b>教程19.2之超參數(shù)<b class='flag-5'>優(yōu)化</b>API

    PyTorch教程19.4之多保真超參數(shù)優(yōu)化

    電子發(fā)燒友網(wǎng)站提供《PyTorch教程19.4之多保真超參數(shù)優(yōu)化.pdf》資料免費(fèi)下載
    發(fā)表于 06-05 10:45 ?0次下載
    <b class='flag-5'>PyTorch</b>教程19.4之多保真超參數(shù)<b class='flag-5'>優(yōu)化</b>

    2.0優(yōu)化PyTorch推理與AWS引力子處理器

    2.0優(yōu)化PyTorch推理與AWS引力子處理器
    的頭像 發(fā)表于 08-31 14:27 ?614次閱讀
    2.0<b class='flag-5'>優(yōu)化</b><b class='flag-5'>PyTorch</b>推理與AWS引力子處理器

    Arm推出AI優(yōu)化Arm終端CSS以及新的Arm Kleidi軟件

    Arm 終端計(jì)算子系統(tǒng) (CSS) 作為新的計(jì)算解決方案,結(jié)合了 Armv9 架構(gòu)的優(yōu)勢(shì),以及基于三納米工藝節(jié)點(diǎn),經(jīng)過(guò)驗(yàn)證和證實(shí)為生產(chǎn)就緒的新 Arm CPU 和 GPU 實(shí)現(xiàn),可賦能芯片合作伙伴快速創(chuàng)新,
    的頭像 發(fā)表于 05-30 11:33 ?658次閱讀
    <b class='flag-5'>Arm</b>推出AI<b class='flag-5'>優(yōu)化</b>的<b class='flag-5'>Arm</b>終端CSS以及新的<b class='flag-5'>Arm</b> <b class='flag-5'>Kleidi</b>軟件