衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FunASR語音大模型在Arm Neoverse平臺上的優化實踐流程

Arm社區 ? 來源:Arm社區 ? 2024-02-22 13:41 ? 次閱讀

Arm 架構在服務器領域發展勢頭前景看好。目前已有許多頭部云服務提供商和服務器制造商推出了基于 Arm Neoverse 平臺的服務器產品,例如 AWS Graviton、阿里云的倚天 710 系列等。這些廠商提供了完整的軟硬件支持和優化,使得大模型推理在基于 Arm 架構的服務器上運行更加便捷和高效。

Arm 架構的服務器通常具備低功耗的特性,能帶來更優異的能效比。相比于傳統的 x86 架構服務器,Arm 服務器在相同功耗下能夠提供更高的性能。這對于大模型推理任務來說尤為重要,因為大模型通常需要大量的計算資源,而能效比高的 Arm 架構服務器可以提供更好的性能和效率。

Armv9 新特性提高大模型推理的計算效率

Armv9 架構引入了 SVE2 (Scalable Vector Extension,可擴展向量延伸指令集)。SVE2 是一種可擴展的向量處理技術,它允許處理器同時執行多個數據元素的操作,可以提供更高效的向量計算和人工智能 (AI) 硬件加速,從而加快了 AI 任務的執行速度,提高了能效和性能。這對于在 Arm 架構的服務器上進行大規模 AI 推理和訓練任務非常有益,不論是實現更好的用戶體驗或是更高的計算效率。

SVE2 對 AI 推理引擎的支持有效地使用了 BFloat16 (BF16) 格式,BF16 是一種浮點數格式,它使用 16 位表示浮點數,其中 8 位用于指數部分,7 位用于尾數部分,還有 1 位用于符號位。相比于傳統的 32 位浮點數格式(如 FP32),BF16 在表示范圍和精度上有所減少,但仍然能夠滿足大多數 AI 推理任務的需求。

a998db7a-d13c-11ee-a297-92fbcf53809c.jpg

圖 1:BFloat16 格式

BF16 格式可以在減少存儲和帶寬需求之余,同時提供足夠的精度,來滿足大多數 AI 推理任務的要求。由于 SVE2 提供了針對 BF16 的向量指令,可以在同一條指令中同時處理多個 BF16 數據元素,從而提高計算效率。理論上來說,采用 BF16 可以實現雙倍的 FP32 的性能。

SVE2 的矩陣運算在 AI 推理中扮演著重要的角色,它可以顯著提高計算效率和性能。比如矩陣乘法 (Matrix Multiplication) 是許多 AI 任務中常見的運算,如卷積運算和全連接層的計算。SVE2 的向量指令可以同時處理多個數據元素,使得矩陣乘法的計算能夠以向量化的方式進行,從而提高計算效率。指令 FMMLA 可以實現 FP32 格式下兩個 2x2 矩陣乘法運算,指令 BFMMLA 可以通過單指令實現 BF16 格式下 4x2 矩陣和 2x4 矩陣的乘法,UMMLA、SMMLA 等可以實現 INT8 格式下 8x2 矩陣和 2x8 矩陣的矩陣乘法運算。通過 SVE2 的硬件加速功能,AI 推理可以在 Arm 架構中獲得更高效的矩陣運算執行,提高計算效率和性能。

a9abce92-d13c-11ee-a297-92fbcf53809c.png

圖 2:矩陣乘指令

ACL 實現 PyTorch 的計算加速

PyTorch 可以支持 Arm 架構的硬件加速資源,但需要安裝適用于 Arm 架構的 PyTorch 版本,或者是從開源源代碼編譯支持 Arm 架構硬件加速的 PyTorch 版本。Arm Compute Library (ACL, Arm 計算庫) 實現了 Arm 架構的硬件加速資源的優化封裝,通過 OneDNN 來使 PyTorch 對 Arm 優化加速調用。下面介紹如何生成帶 ACL 加速的 PyTorch 版本。

a9c5afd8-d13c-11ee-a297-92fbcf53809c.png

圖 3:Arm Neoverse 平臺 AI/ML 軟件組合

ACL 是開源軟件,下載后編譯并設定相應的系統路徑。

鏈接:https://github.com/arm-software/ComputeLibrary

# git clone https://github.com/ARM-software/ComputeLibrary.git

# scons arch=armv8.6-a-sve debug=0 neon=1 os=linux opencl=0 build=native -j 32 Werror=false

validation_tests=0 multi_isa=1 openmp=1 cppthreads=0 fixed_format_kernels=1

# export ACL_ROOT_DIR=/path_to_ACL/ComputeLibrary

開源軟件 OpenBLAS 也實現了部分 Neon 的加速,PyTorch 同樣也要依賴 OpenBLAS,下載相應源代碼編譯和安裝。

鏈接:https://github.com/OpenMathLib/OpenBLAS

# git clone https://github.com/OpenMathLib/OpenBLAS.git

# cmake & make & make install

獲取開源的 PyTorch 代碼,下載相應的依賴開源軟件,指定使能 ACL 的方法進行編譯,獲取 PyTorch 的安裝包并更新。

# git clone https://github.com/pytorch/pytorch

# git submodule update --init –recursive

# MAX_JOBS=32 PYTORCH_BUILD_VERSION=2.1.0 PYTORCH_BUILD_NUMBER=1 OpenBLAS_HOME=/opt/openblas

BLAS="OpenBLAS" CXX_FLAGS="-O3 -mcpu=neoverse-n2 -march=armv8.4-a" USE_OPENMP=1 USE_LAPACK=1 USE_CUDA=0

USE_FBGEMM=0 USE_DISTRIBUTED=0 USE_MKLDNN=1 USE_MKLDNN_ACL=1 python setup.py bdist_wheel

# pip install --force-reinstall dist/torch-2.x.x-cp310-cp310-linux_aarch64.whl

配置了運行環境,就可以利用 Arm 架構的硬件加速資源來加速 PyTorch 的計算。盡管 PyTorch 可以在 Arm 架構上利用硬件加速資源,但針對具體模型和應用場景,需要對模型和代碼進行一些調整以最大程度地發揮硬件的加速優勢。

基于 FunASR 的優化實踐

FunASR 是阿里巴巴達摩院開發的開源的基于 Paraformer 的大模型語音識別模型,提供包括語音識別 (ASR)、語音端點檢測 (VAD)、標點恢復、語言模型、說話人驗證、說話人分離和多人對話語音識別等在內的多種功能。本文以 FunASR 在 Arm Neoverse 平臺上優化的過程做為大模型的優化實踐案例。

倉庫地址:https://github.com/alibaba-damo-academy/FunASR

a9d9164a-d13c-11ee-a297-92fbcf53809c.png

圖 4:FunASR

本次優化是基于 ACL v23.08、oneDNN v3.3、PyTorch v2.1 進行,測試平臺基于阿里云的 ECS 公有云,包括 C8Y、C8I、C7 等云實例。

為了確保 PyTorch 已經啟動 ACL 進行加速,可以加上 “DNNL_VERBOSE=1” 來查看運行的日志輸出。

# OMP_NUM_THREADS=16 DNNL_VERBOSE=1 python runtimes.py

a9fdfca8-d13c-11ee-a297-92fbcf53809c.png

圖 5:使能 ACL 的 PyTorch 運行日志

得到如上的輸出結果,可以看到已經啟用了 ACL。

為了使優化有明確的目標,在運行大模型時,用 PyTorch 的 profiler 做整個模型的數據統計,即在調用大模型之前加上統計操作,為了減少單次運行的統計誤差,可以在多次運行之后做統計并輸出統計結果,如下面的示例:

aa1c9a14-d13c-11ee-a297-92fbcf53809c.jpg

默認運行是用 FP32 的格式,如果需要指定 BF16 的格式運行,需要加上 “ONEDNN_DEFAULT_FPMATH_MODE=BF16” 的參數

# OMP_NUM_THREADS=16 ONEDNN_DEFAULT_FPMATH_MODE=BF16 python profile.py

得到 profile 的統計數據:

aa27300a-d13c-11ee-a297-92fbcf53809c.png

圖 6:統計分析日志

分析運行的結果,找出需要優化的算子,在這個示例中,mkldnn_convolution 運行的時間顯著較長。

aa481f86-d13c-11ee-a297-92fbcf53809c.jpg

圖 7:優化前統計分析

通過分析定位,發現在 OMP 的操作中,數據并沒有按照多處理器進行并行數據處理,修復問題后,再次測試,發現 Convolution 的效率大大提升。

aa6a77d4-d13c-11ee-a297-92fbcf53809c.jpg

圖 8:卷積優化后統計分析

在 Arm 架構處理器中,SVE2 可以對 INT8 進行并行數據處理,比如單指令周期可以做到 16 個 INT8 的乘累加操作,對 INT8 的執行效率非常高,在對模型執行效率有更高要求的場景下,可以用 INT8 來動態量化模型,進一步提高效率。當然,也可以把 INT8 和 BF16 相結合,模型用 INT8 量化,中間計算用 BF16 格式,相較其他平臺,有 1.5 倍的效率提升。

aa81fd5a-d13c-11ee-a297-92fbcf53809c.png

圖 9:動態量化優化

aa9b7398-d13c-11ee-a297-92fbcf53809c.png

圖 10:優化結果對比

綜上,通過充分利用 Armv9 架構中的 SVE2 指令、BF16 數據類型等特性,并引入動態量化等技術,能夠實現以 FunASR 為例的大模型在 Arm Neoverse 平臺的服務器上高效率運行。





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19407

    瀏覽量

    231175
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9165

    瀏覽量

    369170
  • 語音識別
    +關注

    關注

    38

    文章

    1742

    瀏覽量

    112922
  • pytorch
    +關注

    關注

    2

    文章

    808

    瀏覽量

    13359

原文標題:FunASR 語音大模型在 Arm Neoverse 平臺上的優化實踐

文章出處:【微信號:Arm社區,微信公眾號:Arm社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    利用Arm Kleidi技術實現PyTorch優化

    Neoverse 平臺上的 PyTorch 推理表現。Kleidi 技術可以通過 Arm Compute Library (ACL) 和 KleidiAI 庫獲取。
    的頭像 發表于 12-23 09:19 ?329次閱讀
    利用<b class='flag-5'>Arm</b> Kleidi技術實現PyTorch<b class='flag-5'>優化</b>

    Arm Neoverse如何加速實現AI數據中心

    快速演進的云計算和人工智能 (AI) 時代,企業需要能助力其優化性能、降低成本并在市場競爭中保持領先的方法。Arm Neoverse 已成為眾多前沿企業的選擇,他們希望
    的頭像 發表于 11-26 09:30 ?390次閱讀

    【實操文檔】智能硬件的大模型語音交互流程中接入RAG知識庫

    本帖最后由 jf_40317719 于 2024-9-29 17:13 編輯 智能硬件的語音交互接入大模型后可以直接理解自然語言內容,但大模型作為一個語言模型,對專業領域知識
    發表于 09-29 17:12

    深度學習算法嵌入式平臺上的部署

    隨著人工智能技術的飛速發展,深度學習算法各個領域的應用日益廣泛。然而,將深度學習算法部署到資源受限的嵌入式平臺上,仍然是一個具有挑戰性的任務。本文將從嵌入式平臺的特點、深度學習算法的優化
    的頭像 發表于 07-15 10:03 ?1686次閱讀

    ARM進軍汽車芯片市場,推出Neoverse設計

    近日,全球知名的移動芯片設計公司ARM宣布邁出重大步伐,正式推出專為汽車領域設計的芯片——Neoverse。這一創新不僅展示了ARM芯片設計領域的領先地位,也為汽車行業帶來了前所未有
    的頭像 發表于 05-20 10:46 ?765次閱讀

    ArmArm Neoverse計算子系統(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Arm宣布了兩款新的Arm Neoverse計算子系統(CSS),它們基于“迄今為止最好的一代Neoverse技術”。是什么讓這些新產品
    的頭像 發表于 04-24 17:53 ?1187次閱讀
    <b class='flag-5'>Arm</b>新<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b>計算子系統(CSS):<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS V3和<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS N3

    高通支持Meta Llama 3大語言模型驍龍旗艦平臺上實現終端側執行

    高通和Meta合作優化Meta Llama 3大語言模型,支持未來的驍龍旗艦平臺上實現終端側執行。
    的頭像 發表于 04-20 09:13 ?572次閱讀

    Google Cloud推出基于Arm Neoverse V2定制Google Axion處理器

    Arm Neoverse 平臺已成為云服務提供商優化其從芯片到軟件全棧的心儀之選。近日,Google Cloud 推出了基于 Arm
    的頭像 發表于 04-16 14:30 ?721次閱讀

    Arm Neoverse CSS V3 助力云計算實現 TCO 優化的機密計算

    Arm 基礎設施事業部高級產品經理 Mohit Taneja Arm 基礎設施事業部產品總監 Saptarshi Mondal ? 實現高性能定制芯片 ? Arm Neoverse
    發表于 03-26 16:37 ?406次閱讀
    <b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS V3 助力云計算實現 TCO <b class='flag-5'>優化</b>的機密計算

    Neoverse CSS V3助力云計算實現TCO優化的機密計算

    Arm Neoverse 旨在為從云到邊緣的全場景基礎設施用例提供高性能和出色能效。針對需要更高性能的工作負載和用例,Arm 推出了 Neoverse V 系列。
    的頭像 發表于 03-14 12:13 ?585次閱讀
    <b class='flag-5'>Neoverse</b> CSS V3助力云計算實現TCO<b class='flag-5'>優化</b>的機密計算

    Arm Neoverse CSS N3助力快速實現出色能效

    從云到邊緣,Arm Neoverse 正憑借出色的性能、效率、設計靈活性和總體擁有成本 (TCO) 優勢,革新傳統基礎設施芯片領域。
    的頭像 發表于 02-29 13:36 ?489次閱讀
    <b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> CSS N3助力快速實現出色能效

    Arm發布Neoverse V3和N3 CPU內核

    計算市場持續迎來變革的背景下,Arm公司發布了其最新一代Neoverse CPU內核設計,分別為Neoverse V3(代號Poseidon)和N3(代號Hermes),兩款內核將為
    的頭像 發表于 02-27 09:27 ?1098次閱讀
    <b class='flag-5'>Arm</b>發布<b class='flag-5'>Neoverse</b> V3和N3 CPU內核

    Arm架構與Neoverse技術基礎設施領域的應用與發展

    ArmNeoverse系列已有穩定的立足點。例如,英偉達的超級芯片Grace-Hopper就是由兩片獨立的芯片組成,其中 Hopper負責處理所有AI任務,如張量運算,Grace則扮演 CPU角色,利用I/O與內存管理功能與常規云世界相連。
    的頭像 發表于 02-22 15:36 ?651次閱讀

    Arm發布新一代Neoverse數據中心計算平臺,AI負載性能顯著提升

    據公開信息顯示,Arm去年推出的Neoverse CSS運算子系統提供了包含處理器設計的預驗證平臺,加快了定制SoC上市進程,首發型號為Neoverse CSS N2。
    的頭像 發表于 02-22 14:48 ?765次閱讀

    Arm 更新 Neoverse 產品路線圖,實現基于 Arm 平臺的人工智能基礎設施

    新聞重點: Arm 宣布推出兩款基于全新第三代 Neoverse IP 構建的新的 Arm Neoverse 計算子系統 Arm
    發表于 02-22 11:41 ?439次閱讀
    TT娱乐城娱乐,| 大发888组件下载| 百家乐官网赢家电子书| 大发888游戏平台 新葡京| 百家乐官网红桌布| 优博注册| 百家乐娱乐平台真钱游戏| 百家乐官网游戏源码手机| 云顶国际娱乐开户| 加多宝百家乐的玩法技巧和规则 | 大发888手机版亚洲城| 澳门百家乐路单怎么看| 百家乐官网号游戏机| 正蓝旗| 大发888游乐场| 网上百家乐是假还是真的| 属羊的和属猪的做生意| 百家乐官网玩法教程| 和林格尔县| 莆田棋牌游戏下载| 威尼斯人娱乐城老| 百家乐保单机解码| 网上百家乐的打法| 新葡京百家乐现金网| 破战百家乐官网的玩法技巧和规则| 百家乐官网视频二人麻将| 足球比分直播| 大发888开户注册平台| 大发888充值100| 利高百家乐的玩法技巧和规则| 百家乐包赢| 游戏百家乐押发| LV百家乐官网客户端LV| 至尊百家乐官网娱乐场开户注册 | 视频棋牌游戏大厅| 大发888投注网| 大发888娱乐城下载地址| 大发888登录网页游戏| 大发888大发8668| 大发888在线娱乐城二十一点| 赌球网址|