日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

Arm社區(qū) ? 來源:Arm社區(qū) ? 2025-07-24 09:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文將為你介紹如何利用 Arm i8mm 指令,具體來說,是通過帶符號 8 位整數(shù)矩陣乘加指令 smmla,來優(yōu)化 llama.cpp 中 Q6_K 和 Q4_K 量化模型推理。

llama.cpp 量化

llama.cpp 是一個開源的 C++ 庫,用于運(yùn)行大語言模型 (LLM),針對加速 CPU 推理進(jìn)行了優(yōu)化。通過量化等技術(shù)(例如 8 位或 4 位整數(shù)格式)來減少內(nèi)存占用并加快計(jì)算速度,從而實(shí)現(xiàn)在消費(fèi)級和服務(wù)器級硬件上高效部署模型。

llama.cpp 支持多種量化方式。量化可在模型精度和性能之間取得平衡。數(shù)據(jù)量越小,推理速度越快,但可能會因困惑度升高而致使精度降低。例如,Q8_0 采用 8 位整數(shù)表示一個數(shù)據(jù)點(diǎn),而 Q6_K 則將數(shù)據(jù)量縮減至 6 位。

量化以塊為單位進(jìn)行,同一個塊中的數(shù)據(jù)點(diǎn)共享一個縮放因子。例如,Q8_0 的處理以 32 個數(shù)據(jù)點(diǎn)為一個塊,具體過程如下:

從原始數(shù)據(jù)中提取 32 個浮點(diǎn)值,記為 f[0:32]

計(jì)算絕對值的最大值,即 mf = max(abs(f[0:32]))

計(jì)算縮放因子:scale_factor = mf / (max(int8)) = mf / 127

量化:q[i] = round(f[i] / scale_factor)

反量化:v[i] = q[i] * scale_factor

Q6_K 則更為復(fù)雜。如下圖所示,數(shù)據(jù)點(diǎn)分為兩個層級:

一個超級塊包含 256 個數(shù)據(jù)點(diǎn),并對應(yīng)一個浮點(diǎn)格式的超級塊縮放因子

每個超級塊由 16 個子塊組成。每個子塊包含 16 個數(shù)據(jù)點(diǎn),這些數(shù)據(jù)點(diǎn)共享一個整數(shù)格式的子塊級縮放因子。

ad783d60-63c3-11f0-a6aa-92fbcf53809c.png

圖 1:Llama.cpp Q6_K 量化

利用 Arm i8mm 指令

優(yōu)化 llama.cpp

與大多數(shù)人工智能 (AI) 工作負(fù)載相同,在 LLM 推理過程中,大部分 CPU 周期都耗費(fèi)在矩陣乘法運(yùn)算上。Arm i8mm(具體是指 smmla 指令)能夠有效加速 8 位整數(shù)矩陣乘法運(yùn)算。

為了說明 smmla 指令的作用及其高效性,假設(shè)我們要對下圖中的兩個矩陣進(jìn)行乘法運(yùn)算。

ad863258-63c3-11f0-a6aa-92fbcf53809c.png

圖 2:矩陣乘法

按照教科書上的方法,我們可以逐一計(jì)算輸出矩陣中的四個標(biāo)量,即第一個輸出標(biāo)量是矩陣 x 的第一行與矩陣 y 的第一列的內(nèi)積。依此類推,需要進(jìn)行四次內(nèi)積運(yùn)算。

還有一種更高效的方法,即外積法。如下圖所示,我們可以用矩陣 x 的第一列乘以矩陣 y 的第一行,一次性得出四個部分輸出標(biāo)量。將這兩個部分輸出相加就能得到結(jié)果,這樣只需要兩次外積運(yùn)算即可。

ad9ad348-63c3-11f0-a6aa-92fbcf53809c.png

圖 3:外積

smmla 指令實(shí)現(xiàn)了向量級別的外積運(yùn)算,如下圖所示。請注意,vmmlaq_s32 是實(shí)現(xiàn) smmla 指令的編譯器內(nèi)建函數(shù)。

每個輸入向量 (int8x16) 被拆分為兩個 int8x8 向量

計(jì)算四對 int8x8 向量的內(nèi)積

將結(jié)果存儲到輸出向量 (int32x4) 的四個通道中

ada77fd0-63c3-11f0-a6aa-92fbcf53809c.png

圖 4:smmla 指令

借助 smmla 指令,我們可以通過同時處理兩行和兩列來加速矩陣乘法。如下圖所示,計(jì)算步驟如下:

從矩陣 x 中加載兩行數(shù)據(jù) (int8x16) 到 vx0 和 vx1,從矩陣 y 中加載兩列數(shù)據(jù)到 vy0 和 vy1

對 vx0 和 vx1 進(jìn)行“壓縮”操作,將這兩個向量的下半部分合并為一個向量,上半部分合并為另一個向量。這是確保 smmla 指令正確工作的必要步驟。對 vy0 和 vy1 執(zhí)行相同操作

使用兩條 smmla 指令計(jì)算四個臨時標(biāo)量結(jié)果

處理下一個數(shù)據(jù)塊并累積臨時結(jié)果,直到處理完所有數(shù)據(jù)

adb43112-63c3-11f0-a6aa-92fbcf53809c.png

圖 5:使用 smmla 指令進(jìn)行矩陣乘法

我們利用 smmla 指令對 llama.cpp 的 Q6_K 和 Q4_K 矩陣乘法內(nèi)核進(jìn)行了優(yōu)化,并在 Arm Neoverse N2 平臺上進(jìn)行了測試,觀察到性能有顯著提升。下圖展示了 Q6_K 優(yōu)化前后 llama.cpp 的性能對比,其中:

S_TG 代表詞元生成速度,數(shù)值越高代表性能越好

S_PP 代表提示詞預(yù)填充速度,數(shù)值越高代表性能越好

adc4ffa6-63c3-11f0-a6aa-92fbcf53809c.png

圖 6:Arm i8mm 提升 llama.cpp Q6_K 模型性能

上游補(bǔ)丁

[1]利用 Arm i8mm 優(yōu)化 llama.cpp Q6_K 內(nèi)核:

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

[2]利用 Arm i8mm 優(yōu)化 llama.cpp Q4_K 內(nèi)核:

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

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

    關(guān)注

    135

    文章

    9589

    瀏覽量

    393778
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    624

    瀏覽量

    37675
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    4368

    瀏覽量

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

    關(guān)注

    1

    文章

    3831

    瀏覽量

    52286

原文標(biāo)題:一文詳解如何利用 Arm i8mm 指令優(yōu)化 llama.cpp

文章出處:【微信號: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 ?5251次閱讀
    <b class='flag-5'>llama.cpp</b>代碼結(jié)構(gòu)&amp;調(diào)用流程分析

    大模型筆記之gem5運(yùn)行模型框架LLama介紹

    LLama.cpp 支持x86,arm,gpu的編譯。
    的頭像 發(fā)表于 01-22 09:10 ?3696次閱讀
    大模型筆記之gem5運(yùn)行模型框架<b class='flag-5'>LLama</b>介紹

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

    和語法規(guī)則,將這些詞匯串聯(lián)起來,形成一個完整的回答 關(guān)于LLaMALLaMA.cpp LLaMA全稱是Large Language Model Meta AI,是由Meta AI研究人員發(fā)布的一個
    發(fā)表于 12-22 10:18

    將Deepseek移植到i.MX 8MP|93 EVK的步驟

    此共享介紹了如何將 deepseek 移植到i.MX93EVK使用 llama.cpp 的 Yocto BSP 本文檔使用的主要測試模型是在 deepseek 模型的基礎(chǔ)上進(jìn)行提煉和量化的 Qwen
    發(fā)表于 03-26 06:08

    《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價值 第21期:2025.07.21--2025.07.25

    http://m.sdkjxy.cn/p/ 技術(shù)看點(diǎn): 1、德州儀器方案--如何限制PFC再浪涌電流 2、Arm方案--利用Arm i8mm
    發(fā)表于 07-25 20:03

    《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價值 第22期:2025.07.28--2025.08.1

    控制器。與 MOSFET 相比,使用 TI GaN 器件可提高效率并減小 PCB 尺寸,而且不會增加 BOM 成本。 2、Arm方案--利用Arm i8mm
    發(fā)表于 08-01 21:05

    【CIE全國RISC-V創(chuàng)新應(yīng)用大賽】基于 K1 AI CPU 的大模型部署落地

    。llama.cpp 引擎本身兼容 Q2_K,Spacemit 的硬件加速(X60 NPU)通常對矩陣乘法通用,即使 NPU 不支持 Q2,CPU (RVV) 也會自動接管,保證任務(wù)“成功完成”。 2. 完整的實(shí)施
    發(fā)表于 11-27 14:43

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

    位來完成。實(shí)際上乘以任何一個整數(shù)都可以用移位和加法來代替乘法。ARM 7 中加法和移位可以通過一條指令來完成,且執(zhí)行時間少于乘法指令。例如: i =
    發(fā)表于 07-07 11:06

    基于ARM的除法運(yùn)算優(yōu)化策略

    指令流水線的優(yōu)化、針對寄存器分配進(jìn)行的優(yōu)化等。   ARM在硬件上不支持除法指令,編譯器是通過調(diào)用C庫函數(shù)來實(shí)現(xiàn)除法運(yùn)算的,有許多不同類型的
    發(fā)表于 07-14 14:48

    ARM指令集詳解

    ARM指令集詳解 內(nèi)容提要 ARM指令ARM指令集分類與
    發(fā)表于 03-09 09:39 ?264次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>指令</b>集詳解

    如何優(yōu)化 Llama 3 的輸入提示

    優(yōu)化輸入提示(prompt engineering)是提高人工智能模型輸出質(zhì)量的關(guān)鍵步驟。對于Llama 3這樣的模型,優(yōu)化輸入提示可以幫助模型更準(zhǔn)確地理解用戶的意圖,從而生成更相關(guān)和高質(zhì)量的內(nèi)容
    的頭像 發(fā)表于 10-27 14:39 ?1375次閱讀

    K1 AI CPU基于llama.cpp與Ollama的大模型部署實(shí)踐

    AICPU芯片,已于今年4月份發(fā)布。下面我們以K1為例,結(jié)合llama.cpp來展示AICPU在大模型領(lǐng)域的優(yōu)勢。
    的頭像 發(fā)表于 02-18 14:23 ?2343次閱讀
    K1 AI CPU基于<b class='flag-5'>llama.cpp</b>與Ollama的大模型部署實(shí)踐

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

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

    RISC-V CPU 上 3 倍推理加速!V-SEEK:在 SOPHON SG2042 上加速 14B LLM

    關(guān)鍵詞:V-SEEK、LLMInferenceOptimization、RISC-V、SOPHONSG2042、llama.cpp、NUMAOptimizationV-SEE
    的頭像 發(fā)表于 08-05 14:01 ?1503次閱讀
    RISC-V CPU 上 3 倍推理加速!V-SEEK:在 SOPHON SG2042 上加速 14B LLM

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

    跨 NUMA 內(nèi)存訪問可能會限制 llama.cppArm Neoverse 平臺上的擴(kuò)展能力。本文將為你詳細(xì)分析這一問題,并通過引入原型驗(yàn)證補(bǔ)丁來加以解決。測試結(jié)果表明,在基于 Neoverse N2 平臺的系統(tǒng)上運(yùn)行 llam
    的頭像 發(fā)表于 02-11 10:06 ?327次閱讀
    青川县| 安顺市| 高青县| 中卫市| 永年县| 察隅县| 阳谷县| 怀来县| 上林县| 兰考县| 吴旗县| 二连浩特市| 池州市| 靖边县| 石城县| 永顺县| 比如县| 巴林右旗| 寻乌县| 临江市| 灯塔市| 临沂市| 乡城县| 晴隆县| 平原县| 康保县| 韶山市| 肥西县| 奉贤区| 天祝| 周口市| 泽州县| 靖安县| 桃园市| 寻乌县| 建平县| 屏东县| 郸城县| 额尔古纳市| 黎城县| 巩义市|