伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

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

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

如何在Arm Neoverse N2平臺上提升llama.cpp擴(kuò)展性能

Arm社區(qū) ? 來源:Arm社區(qū) ? 2026-02-11 10:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:安謀科技 (Arm China) 主任軟件工程師 Bolt Liu

跨 NUMA 內(nèi)存訪問可能會限制 llama.cpp 在 Arm Neoverse 平臺上的擴(kuò)展能力。本文將為你詳細(xì)分析這一問題,并通過引入原型驗(yàn)證補(bǔ)丁來加以解決。測試結(jié)果表明,在基于 Neoverse N2 平臺的系統(tǒng)上運(yùn)行 llama3_Q4_0 模型時,該補(bǔ)丁可使文本生成性能提升多達(dá) 55%。

跨 NUMA 內(nèi)存訪問問題

在 llama.cpp 中,當(dāng)線程數(shù)超過 NUMA 節(jié)點(diǎn)中的核心數(shù)時,性能會下降。本示例基于每個 NUMA 節(jié)點(diǎn)包含 64 個核心的系統(tǒng),并使用 llama3_Q4_0 模型進(jìn)行測試。

be400090-0366-11f1-90a1-92fbcf53809c.png

根本原因分析

當(dāng)線程跨越多個 NUMA 節(jié)點(diǎn)運(yùn)行時,性能下降主要源于以下兩個原因:

ggml_barrier() 函數(shù)調(diào)用中的跨 NUMA 節(jié)點(diǎn)原子操作非常耗時。

MulMat 算子的張量緩沖區(qū)存在大量的跨 NUMA 內(nèi)存訪問。

ggml_barrier 問題

在多線程環(huán)境下運(yùn)行 llama.cpp 時,每個線程負(fù)責(zé)計(jì)算張量數(shù)據(jù)的一部分。在所有線程完成計(jì)算后,會使用 barrier 來確保數(shù)據(jù)同步。隨著線程數(shù)的增加,性能會下降;當(dāng)線程數(shù)超過 NUMA 節(jié)點(diǎn)(每個節(jié)點(diǎn) 64 個核心)時,性能下降現(xiàn)象愈發(fā)明顯。

bebeb85e-0366-11f1-90a1-92fbcf53809c.png

MulMat 算子問題

llama.cpp 中的 MulMat 算子是主要的性能瓶頸。理論上,增加線程數(shù)應(yīng)該可以提高性能,但實(shí)際情況并非如此。原因在于張量緩沖區(qū)是通過 malloc() 分配的,而 malloc() 不具有 NUMA 感知能力,會導(dǎo)致大量的跨 NUMA 內(nèi)存訪問。

bf29b9a6-0366-11f1-90a1-92fbcf53809c.png

優(yōu)化方法

為緩解上述的跨 NUMA 問題,本文采用了兩種優(yōu)化方法:ggml_barrier 優(yōu)化,以及 MulMat 算子優(yōu)化。

ggml_barrier 優(yōu)化

此優(yōu)化方案采用“分而治之”的思想對 ggml_barrier 進(jìn)行優(yōu)化:

使用 NUMA 局部原子變量來實(shí)現(xiàn) barrier,速度很快。

僅由特定的 NUMA 節(jié)點(diǎn)中的最后一個完成張量計(jì)算的線程與其他 NUMA 節(jié)點(diǎn)的最后一個線程進(jìn)行跨 NUMA 同步。

通過這種方式,執(zhí)行跨 NUMA 全局原子操作的線程數(shù)減少到與所涉及的 NUMA 節(jié)點(diǎn)數(shù)相當(dāng)。

bf92ee76-0366-11f1-90a1-92fbcf53809c.png

ggml_barrier 經(jīng)優(yōu)化后,即使存在跨 NUMA 操作,性能也不會明顯下降。

bff7fdac-0366-11f1-90a1-92fbcf53809c.png

MulMat 算子優(yōu)化

MulMat 算子在計(jì)算過程中,會使用三個張量緩沖區(qū):dst(例如 attn_out、ffn_gate、ffn_out、ffn_up、Kcur、Qcur、Vcur、FP32)、src0(權(quán)重)和 src1(例如 attn_norm、ffn_gate_par、ffn_norm、kqv_out FP32)。此優(yōu)化方案將緩沖區(qū)分割成多個片段,以便計(jì)算線程盡可能從本地 NUMA 節(jié)點(diǎn)訪問內(nèi)存。

對于 dst 和 src0 緩沖區(qū),每個線程根據(jù)線程 ID 訪問緩沖區(qū)的一部分。通過將緩沖區(qū)分割成 N 個片段(其中 N 為 NUMA 節(jié)點(diǎn)數(shù)),在滿足以下條件時,每個線程可以訪問本地 NUMA 節(jié)點(diǎn)中的緩沖區(qū)部分:

線程 ID 與物理核心 ID 有良好的對應(yīng)關(guān)系,可通過線程親和性進(jìn)行設(shè)置。

緩沖區(qū)片段被移動到所需的 NUMA 節(jié)點(diǎn),這可通過 move_pages() 系統(tǒng)調(diào)用來實(shí)現(xiàn)。

c0635264-0366-11f1-90a1-92fbcf53809c.png

MulMat 算子在計(jì)算期間,src1 被量化并存儲在另一個名為 wdata 的緩沖區(qū)中。MulMat 算子的計(jì)算公式如下:dst = src0 * wdata

當(dāng)每個線程根據(jù)線程 ID 訪問 src0 和 dst 時,wdata 緩沖區(qū)需要被這些線程全部訪問。

鑒于量化過程并非 MulMat 算子的主要性能瓶頸,此優(yōu)化方案為每個 NUMA 節(jié)點(diǎn)分別創(chuàng)建一個局部的 wdata 緩沖區(qū),各 NUMA 節(jié)點(diǎn)中的所有線程將 src1 量化至其自有的 wdata,因而總共有 N 個 wdata 副本(N 為 NUMA 節(jié)點(diǎn)數(shù))。

c0c93d40-0366-11f1-90a1-92fbcf53809c.png

優(yōu)化 MulMat 算子計(jì)算的張量數(shù)據(jù)布局后,可以看到性能有了明顯的提升。

c12f7eac-0366-11f1-90a1-92fbcf53809c.png

總體性能比較

llama.cpp 的批處理基準(zhǔn)測試結(jié)果如下:

NUMA 經(jīng)優(yōu)化后,性能有了明顯的提升。

在 S_TG t/s 指標(biāo)上,基準(zhǔn)版本的最佳值為 26.52,線程數(shù)為 32;啟用 NUMA 優(yōu)化后,最佳值為 41.15,線程數(shù)為 40,性能提升 55%。

在 S t/s 指標(biāo)上,基準(zhǔn)版本的最佳值為 48.73,線程數(shù)為 36;啟用 NUMA 優(yōu)化后,最佳值為 74.67,線程數(shù)為 54,性能提升 53.2%。

c1922020-0366-11f1-90a1-92fbcf53809c.png

本示例使用雙 NUMA 節(jié)點(diǎn)系統(tǒng),NUMA 優(yōu)化前后的內(nèi)存帶寬數(shù)據(jù)(如下表所示)表明:優(yōu)化后,各 NUMA 節(jié)點(diǎn)的帶寬保持均衡;而優(yōu)化前,瓶頸會出現(xiàn)在 NUMA 節(jié)點(diǎn) 0 中。

c1f88ad6-0366-11f1-90a1-92fbcf53809c.png

各位開發(fā)者,歡迎獲取 GitHub 上的 NUMA 優(yōu)化補(bǔ)丁:

https://github.com/ggml-org/llama.cpp/pull/14232

* 本文為 Arm 原創(chuàng)文章,轉(zhuǎn)載請留言聯(lián)系獲得授權(quán)并注明出處。

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

    關(guān)注

    9

    文章

    3219

    瀏覽量

    76421
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3778

    瀏覽量

    52187
  • Neoverse
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    4987

原文標(biāo)題:破解跨 NUMA 性能問題,在 Arm Neoverse N2 上提升 llama.cpp 擴(kuò)展性能

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    llama.cpp代碼結(jié)構(gòu)&調(diào)用流程分析

    llama.cpp 的代碼結(jié)構(gòu)比較直觀,如下所示,為整體代碼結(jié)構(gòu)中的比較核心的部分的代碼結(jié)構(gòu)
    的頭像 發(fā)表于 11-07 09:23 ?5092次閱讀
    <b class='flag-5'>llama.cpp</b>代碼結(jié)構(gòu)&amp;調(diào)用流程分析

    利用Arm i8mm指令優(yōu)化llama.cpp

    本文將為你介紹如何利用 Arm i8mm 指令,具體來說,是通過帶符號 8 位整數(shù)矩陣乘加指令 smmla,來優(yōu)化 llama.cpp 中 Q6_K 和 Q4_K 量化模型推理。
    的頭像 發(fā)表于 07-24 09:51 ?2016次閱讀
    利用<b class='flag-5'>Arm</b> i8mm指令優(yōu)化<b class='flag-5'>llama.cpp</b>

    Arm Neoverse家族新增V1和N2兩大平臺,突破高性能計(jì)算瓶頸

    帶來 50%和 40%的性能提升。此外,Arm也同時發(fā)布了CMN-700,作為構(gòu)建基于Neoverse V1和 N2
    的頭像 發(fā)表于 04-30 16:20 ?1.1w次閱讀

    【飛騰派4G版免費(fèi)試用】仙女姐姐的嵌入式實(shí)驗(yàn)室之五~LLaMA.cpp及3B“小模型”O(jiān)penBuddy-StableLM-3B

    目使用了C++重寫了LLaMA模型,使其能夠在硬件較弱的設(shè)備使用CPU運(yùn)行LLaMA模型,不需要較高的顯卡性能 獲取LLaMA.cpp
    發(fā)表于 12-22 10:18

    ARM Neoverse IP的AWS實(shí)例etcd分布式鍵對值存儲性能提升

    1、基于ARM Neoverse IP的AWS實(shí)例etcd性能提升etcd是一個分布式鍵值對存儲,設(shè)計(jì)用來可靠而快速的保存關(guān)鍵數(shù)據(jù)并提供給
    發(fā)表于 07-06 17:37

    ARM Neoverse N2 PMU指南

    參考ENEPERN2號更詳盡的描述。 關(guān)于NEPERVERT N2號技術(shù)參考手冊, 請參考Armé EVERTM N2 技術(shù)參考手冊。本文件不討論使用軟件開發(fā)工具或
    發(fā)表于 08-09 06:07

    Arm Neoverse? N2核心加密擴(kuò)展技術(shù)參考手冊

    Neoverse?N2核心支持可選的ARM?v8.0-A和ARM?v8.2-A加密擴(kuò)展ARM
    發(fā)表于 08-17 07:08

    ARM Neoverse?N2核心技術(shù)參考手冊

    Neoverse?N2內(nèi)核是一款高性能、低功耗的產(chǎn)品,采用ARM?v9.0-A架構(gòu)。 此實(shí)施支持所有以前的ARMv8-A架構(gòu)實(shí)施,包括ARM
    發(fā)表于 08-29 08:12

    互聯(lián)網(wǎng)巨頭紛紛啟用Arm CPU架構(gòu),Arm最新Neoverse V1和N2平臺加速云服務(wù)器芯片自研

    電子發(fā)燒友網(wǎng)報道(文/黃晶晶)Arm在2018年10月宣布了Neoverse的路線圖,繼2019年Neoverse N1平臺發(fā)布后,今年9月
    發(fā)表于 09-30 14:46 ?1727次閱讀

    新思科技攜手Arm提升高性能計(jì)算、數(shù)據(jù)中心和AI SoC性能加快上市時間

    Arm與新思科技擴(kuò)展在EDA平臺、IP和參考流程方面的戰(zhàn)略協(xié)議,旨在為Arm下一代Neoverse V1和
    發(fā)表于 05-07 10:06 ?1637次閱讀

    Arm 更新 Neoverse 產(chǎn)品路線圖,實(shí)現(xiàn)基于 Arm 平臺的人工智能基礎(chǔ)設(shè)施

    Neoverse CSS 產(chǎn)品;與 CSS N2 相比,其單芯片性能可提高 50% Arm Neoverse CSS
    發(fā)表于 02-22 11:41 ?961次閱讀

    Arm發(fā)布新一代Neoverse數(shù)據(jù)中心計(jì)算平臺,AI負(fù)載性能顯著提升

    據(jù)公開信息顯示,Arm去年推出的Neoverse CSS運(yùn)算子系統(tǒng)提供了包含處理器設(shè)計(jì)的預(yù)驗(yàn)證平臺,加快了定制SoC上市進(jìn)程,首發(fā)型號為Neoverse CSS
    的頭像 發(fā)表于 02-22 14:48 ?1565次閱讀

    ArmArm Neoverse計(jì)算子系統(tǒng)(CSS):Arm Neoverse CSS V3和Arm Neoverse CSS N3

    Neoverse CSS N3代表了Arm計(jì)算子系統(tǒng)產(chǎn)品組合的最新進(jìn)展。 Neoverse CSS V3是高性能V系列產(chǎn)品組合的首款產(chǎn)品,
    的頭像 發(fā)表于 04-24 17:53 ?2966次閱讀
    <b class='flag-5'>Arm</b>新<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b>計(jì)算子系統(tǒng)(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 <b class='flag-5'>N</b>3

    何在基于Arm Neoverse平臺的CPU構(gòu)建分布式Kubernetes集群

    在本文中,我們將以 X(原 Twitter)為例,演示如何在基于 Arm Neoverse 平臺的 CPU 構(gòu)建分布式 Kubernete
    的頭像 發(fā)表于 03-25 15:58 ?877次閱讀
    如<b class='flag-5'>何在</b>基于<b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b><b class='flag-5'>平臺</b>的CPU<b class='flag-5'>上</b>構(gòu)建分布式Kubernetes集群

    Arm Neoverse N2平臺實(shí)現(xiàn)DeepSeek-R1滿血版部署

    頗具優(yōu)勢。Arm 攜手合作伙伴,在 Arm Neoverse N2 平臺上使用開源推理框架 llama.
    的頭像 發(fā)表于 07-03 14:37 ?1323次閱讀
    <b class='flag-5'>Arm</b> <b class='flag-5'>Neoverse</b> <b class='flag-5'>N2</b><b class='flag-5'>平臺</b>實(shí)現(xiàn)DeepSeek-R1滿血版部署