LLM新巔峰||北大提出mllm-NPU,賦能1000字/秒的設(shè)備端LLM預(yù)填充
本文提出了mllm-NPU,這是第一個(gè)有效利用設(shè)備上神經(jīng)處理單元(NPU)卸載的LLM推理系統(tǒng)。mllm-NPU的主要設(shè)計(jì)目標(biāo)是減少預(yù)填充延遲和能耗。它針對(duì)主流的僅解碼器的變壓器架構(gòu)的LLM(例如LlaMA、GPT等)。關(guān)鍵思想是最大限度地在移動(dòng)NPU上執(zhí)行預(yù)填充,以加速整數(shù)計(jì)算,同時(shí)保持在CPU/GPU上執(zhí)行必要的浮點(diǎn)操作以保持準(zhǔn)確性。為了克服上述挑戰(zhàn)并提高NPU卸載效率,mllm-NPU在三個(gè)層面上重構(gòu)了提示和模型:(1)在提示層面:mllm-NPU將可變長(zhǎng)度的提示分割成多個(gè)固定大小的塊,同時(shí)保持?jǐn)?shù)據(jù)依賴性;(2)在張量層面:mllm-NPU識(shí)別并提取重要的異常值以在CPU/GPU上運(yùn)行;(3)在塊層面:mllm-NPU根據(jù)硬件親和性和對(duì)準(zhǔn)確性的敏感度將變壓器塊調(diào)度到CPU/GPU和NPU。
??https://arxiv.org/pdf/2407.05858??
mllm-NPU系統(tǒng)設(shè)計(jì)概述
mllm-NPU是一個(gè)創(chuàng)新的大型語(yǔ)言模型(LLM)推理系統(tǒng),專為移動(dòng)設(shè)備上的神經(jīng)處理單元(NPU)優(yōu)化。該系統(tǒng)的主要設(shè)計(jì)目標(biāo)是減少預(yù)填充(prefill)階段的延遲和能耗,同時(shí)保持推理精度。mllm-NPU通過(guò)在算法和系統(tǒng)設(shè)計(jì)上的協(xié)同優(yōu)化,有效地解決了LLM架構(gòu)與現(xiàn)代NPU設(shè)計(jì)之間的語(yǔ)義差異。
mllm-NPU的工作流程包括準(zhǔn)備階段和執(zhí)行階段。在準(zhǔn)備階段,mllm-NPU使用增強(qiáng)的張量級(jí)量化算法將LLM量化為W8A8格式,并生成固定長(zhǎng)度的分塊共享圖,以高效處理變長(zhǎng)提示。在執(zhí)行階段,mllm-NPU將接收到的提示分割成固定大小的塊,并按照因果關(guān)系處理這些塊。這些塊圖會(huì)根據(jù)它們的數(shù)據(jù)格式被分割成子圖,并根據(jù)硬件親和性和精度敏感性在CPU/GPU和NPU之間進(jìn)行調(diào)度。
三大創(chuàng)新技術(shù)詳解
1. 分塊共享圖
mllm-NPU通過(guò)引入分塊共享圖來(lái)應(yīng)對(duì)動(dòng)態(tài)提示長(zhǎng)度的挑戰(zhàn)。這種方法基于對(duì)LLM操作符的兩種分類:靜態(tài)操作符和動(dòng)態(tài)操作符。靜態(tài)操作符如線性層和層歸一化,可以跨不同塊共享;而動(dòng)態(tài)操作符如注意力機(jī)制,依賴于塊長(zhǎng)度和序列,不能共享。通過(guò)這種方式,mllm-NPU將LLM分解為多個(gè)子圖,共享子圖一次構(gòu)建和優(yōu)化,非共享子圖則針對(duì)不同塊單獨(dú)構(gòu)建。這種方法顯著減少了內(nèi)存開銷,并提高了可擴(kuò)展性。
2. 影子離群值執(zhí)行
為了在不犧牲LLM精度的前提下實(shí)現(xiàn)NPU友好的張量級(jí)激活量化,mllm-NPU采用了影子離群值執(zhí)行技術(shù)。該技術(shù)在運(yùn)行時(shí)將具有離群值的激活通道提取到一個(gè)更緊湊的張量中,在CPU上執(zhí)行,并將結(jié)果合并回NPU上的原始操作符結(jié)果中。這種設(shè)計(jì)不僅解決了離群值的問(wèn)題,還優(yōu)化了內(nèi)存使用,并減少了CPU和NPU之間的同步開銷。
3. 無(wú)序子圖執(zhí)行
mllm-NPU采用無(wú)序子圖執(zhí)行策略來(lái)優(yōu)化執(zhí)行效率。通過(guò)在塊和子圖級(jí)別進(jìn)行分區(qū)后,LLM子圖可以不按塊序列順序執(zhí)行。這種策略顯著擴(kuò)大了調(diào)度空間,最小化了由于CPU/GPU浮點(diǎn)操作引起的執(zhí)行泡沫。mllm-NPU利用在線啟發(fā)式算法,在保證正確性的前提下,動(dòng)態(tài)選擇執(zhí)行順序,從而最大化NPU的利用率并最小化CPU/GPU的工作負(fù)載影響。
實(shí)現(xiàn)與評(píng)估
1. 實(shí)現(xiàn)
mllm-NPU的實(shí)現(xiàn)涉及多個(gè)關(guān)鍵技術(shù),包括分塊共享圖、陰影異常執(zhí)行和亂序子圖執(zhí)行。這些技術(shù)共同優(yōu)化了移動(dòng)NPU的加載效率,顯著提高了預(yù)填充速度和能效。
- 分塊共享圖:通過(guò)將變長(zhǎng)提示分解為多個(gè)固定大小的塊,并為每個(gè)塊構(gòu)建預(yù)優(yōu)化的計(jì)算圖,mllm-NPU顯著減少了圖構(gòu)建和優(yōu)化的時(shí)間。此外,通過(guò)共享不依賴于塊序列的靜態(tài)運(yùn)算符,減少了內(nèi)存占用,提高了擴(kuò)展性。
- 陰影異常執(zhí)行:為了在不犧牲精度的情況下實(shí)現(xiàn)對(duì)NPU友好的張量激活量化,mllm-NPU采用了陰影異常執(zhí)行技術(shù)。通過(guò)在CPU上并行處理稀疏的異常激活通道,mllm-NPU能夠在保持NPU計(jì)算效率的同時(shí),減少由于異常值引起的量化誤差。
- 亂序子圖執(zhí)行:mllm-NPU通過(guò)亂序執(zhí)行子圖來(lái)優(yōu)化計(jì)算流程,減少由于CPU/GPU上的浮點(diǎn)運(yùn)算導(dǎo)致的執(zhí)行泡沫。這種策略擴(kuò)大了調(diào)度空間,使得可以更靈活地管理各個(gè)子圖的執(zhí)行順序,從而最大化NPU的利用率和減少總體執(zhí)行時(shí)間。
2. 評(píng)估
mllm-NPU的性能通過(guò)與多個(gè)基線系統(tǒng)的比較得到驗(yàn)證。實(shí)驗(yàn)結(jié)果顯示,無(wú)論是在預(yù)填充速度、能耗還是端到端推理延遲方面,mllm-NPU都顯著優(yōu)于現(xiàn)有技術(shù)。
- 預(yù)填充性能:在1024個(gè)令牌的提示長(zhǎng)度下,mllm-NPU在Xiaomi 14設(shè)備上的預(yù)填充速度比使用CPU的llama.cpp快18.17-38.4倍,比使用GPU的TFLite快1.27-2.34倍。
- 能耗:在Redmi K60 Pro設(shè)備上,mllm-NPU在1024令牌提示長(zhǎng)度下的能耗比使用CPU的llama.cpp低35.63-59.52倍,比使用GPU的TFLite低1.85-4.32倍。
- 端到端性能:在實(shí)際的移動(dòng)應(yīng)用場(chǎng)景中,mllm-NPU在端到端推理延遲上也展現(xiàn)出了優(yōu)越性,特別是在UI自動(dòng)化和自動(dòng)電子郵件回復(fù)的任務(wù)中,mllm-NPU的表現(xiàn)遠(yuǎn)超其他基線系統(tǒng)。
性能分析
mllm-NPU的性能優(yōu)勢(shì)主要源于其創(chuàng)新的設(shè)計(jì)和優(yōu)化策略。通過(guò)在移動(dòng)NPU上最大化整數(shù)運(yùn)算的執(zhí)行,同時(shí)在CPU/GPU上處理必要的浮點(diǎn)運(yùn)算,mllm-NPU不僅提高了執(zhí)行速度,還降低了能耗。
- 內(nèi)存消耗:盡管mllm-NPU引入了額外的內(nèi)存開銷(主要是由于陰影異常執(zhí)行技術(shù)),但這一開銷相對(duì)較小,僅占總內(nèi)存的一小部分。這得益于其高效的內(nèi)存管理策略,如分塊共享圖技術(shù),有效減少了不必要的內(nèi)存占用。
- 精度保持:mllm-NPU在保持高效NPU執(zhí)行的同時(shí),幾乎不損失推理精度。通過(guò)動(dòng)態(tài)處理異常值位置,mllm-NPU能夠在元素級(jí)別上提供比傳統(tǒng)量化方法更高的精度,從而保證了模型的輸出質(zhì)量。
- 系統(tǒng)兼容性:mllm-NPU支持標(biāo)準(zhǔn)的LLM格式,并可以與現(xiàn)有的解碼引擎兼容,使其能夠靈活地集成到各種移動(dòng)設(shè)備和應(yīng)用中。此外,mllm-NPU的設(shè)計(jì)允許與其他算法級(jí)優(yōu)化技術(shù)結(jié)合使用,進(jìn)一步提升性能。
總之,mllm-NPU通過(guò)一系列創(chuàng)新技術(shù),顯著提高了移動(dòng)設(shè)備上大型語(yǔ)言模型的推理性能,為實(shí)現(xiàn)高效、低能耗的移動(dòng)設(shè)備端LLM推理提供了有效解決方案。
準(zhǔn)確性與內(nèi)存消耗
1. 準(zhǔn)確性保持
mllm-NPU系統(tǒng)在實(shí)現(xiàn)高效的NPU卸載的同時(shí),保持了較高的準(zhǔn)確性。與FP16相比,準(zhǔn)確性損失不到1%,這在實(shí)際應(yīng)用中是可接受的。這得益于其創(chuàng)新的技術(shù),如影子離群值執(zhí)行(shadow outlier execution),它允許在CPU上以浮點(diǎn)精度處理離群值,從而保持了高準(zhǔn)確性。此外,mllm-NPU與其他基線模型相比,在保持準(zhǔn)確性的同時(shí),顯著提高了執(zhí)行效率。
2. 內(nèi)存消耗
盡管mllm-NPU引入了一些額外的內(nèi)存開銷,例如為離群值執(zhí)行加載的浮點(diǎn)權(quán)重,但這些開銷相對(duì)較小,僅占總內(nèi)存的0.6%至1%。此外,通過(guò)共享圖(chunk-sharing graph)技術(shù),mllm-NPU顯著減少了內(nèi)存需求,因?yàn)樗试S在不同的執(zhí)行塊之間共享靜態(tài)操作符。這種方法不僅減少了內(nèi)存占用,還提高了內(nèi)存使用的效率。
本文轉(zhuǎn)載自 ??AI論文解讀??,作者:柏企
