chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

根本原因分析

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

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

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

ggml_barrier 問題

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

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

MulMat 算子問題

llama.cpp 中的 MulMat 算子是主要的性能瓶頸。理論上,增加線程數(shù)應(yīng)該可以提高性能,但實(shí)際情況并非如此。原因在于張量緩沖區(qū)是通過 malloc() 分配的,而 malloc() 不具有 NUMA 感知能力,會(huì)導(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)化方案采用“分而治之”的思想對(duì) ggml_barrier 進(jìn)行優(yōu)化:

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

僅由特定的 NUMA 節(jié)點(diǎn)中的最后一個(gè)完成張量計(jì)算的線程與其他 NUMA 節(jié)點(diǎn)的最后一個(gè)線程進(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 操作,性能也不會(huì)明顯下降。

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

MulMat 算子優(yōu)化

MulMat 算子在計(jì)算過程中,會(huì)使用三個(gè)張量緩沖區(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ū)分割成多個(gè)片段,以便計(jì)算線程盡可能從本地 NUMA 節(jié)點(diǎn)訪問內(nèi)存。

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

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

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

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

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

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

鑒于量化過程并非 MulMat 算子的主要性能瓶頸,此優(yōu)化方案為每個(gè) NUMA 節(jié)點(diǎn)分別創(chuàng)建一個(gè)局部的 wdata 緩沖區(qū),各 NUMA 節(jié)點(diǎn)中的所有線程將 src1 量化至其自有的 wdata,因而總共有 N 個(gè) 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)測(cè)試結(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)化前,瓶頸會(huì)出現(xiàn)在 NUMA 節(jié)點(diǎn) 0 中。

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

各位開發(fā)者,歡迎獲取 GitHub 上的 NUMA 優(yōu)化補(bǔ)?。?/p>

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

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

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

    關(guān)注

    9

    文章

    3209

    瀏覽量

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

    關(guān)注

    1

    文章

    3751

    瀏覽量

    52093
  • Neoverse
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    4969

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(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 ?4987次閱讀
    <b class='flag-5'>llama.cpp</b>代碼結(jié)構(gòu)&amp;調(diào)用流程分析

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

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

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

    帶來 50%和 40%的性能提升。此外,Arm也同時(shí)發(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分布式鍵對(duì)值存儲(chǔ)性能提升

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

    ARM Neoverse N2 PMU指南

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

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

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

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

    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平臺(tái)加速云服務(wù)器芯片自研

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

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

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

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

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

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

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

    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 ?2789次閱讀
    <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平臺(tái)的CPU構(gòu)建分布式Kubernetes集群

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

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

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