2023 年,生成式人工智能 (Generative AI) 領域涌現(xiàn)出諸多用例。這一突破性的人工智能 (AI) 技術是 OpenAI 的 ChatGPT 和 Google 的 Gemini AI 模型的核心,能夠根據(jù)用戶輸入的文本提示生成文本、圖像,甚至音頻內(nèi)容,其有望簡化工作流程和推動教育發(fā)展。這是不是聽起來相當震撼呢?
而隨著生成式 AI 技術下沉到我們鐘愛的消費電子設備上,其未來又將會如何發(fā)展?答案是,在邊緣移動設備上部署生成式 AI。
在本文中,我們將展示大語言模型 (LLM) 作為一種生成式 AI 推理形式,如何在基于 Arm 技術的多數(shù)移動設備上運行。此外我們還將介紹,鑒于此類 AI 工作負載所需的典型批量處理大小以及計算和帶寬的平衡,Arm CPU 如何適配此類用例。并進一步闡釋 Arm CPU 的 AI 功能,展示其靈活性和可編程性如何巧妙地實現(xiàn)軟件優(yōu)化,從而為許多 LLM 用例帶來巨大的性能優(yōu)勢和發(fā)展機會。
LLM 簡介
生成式 AI 可采用的網(wǎng)絡架構多種多樣。LLM 以其無可比擬的大規(guī)模解釋和生成文本的能力,迅速嶄露頭角。
顧名思義,大語言模型 (LLM) 比以往使用的模型要大得多。確切地說,其可訓練參數(shù)達到一千億到一萬億。如此規(guī)模的參數(shù)量,至少是 2018 年 Google 訓練的最大型先進自然語言處理 (NLP) 模型之一的 BERT(基于 Transformer 的雙向編碼器表示技術)三倍以上的數(shù)量級。
那么,一個一千億參數(shù)的模型如何轉化為 RAM 呢?如果打算在使用 16 位浮點數(shù)加速的處理器上部署這一模型,那么至少需要 200 GB 的 RAM!
因此,這些大模型只能在云端運行。然而,這帶來了三個根本性的挑戰(zhàn),并進而限制此項技術的普及:
高昂的基礎設施成本
隱私問題(因為用戶數(shù)據(jù)可能會泄漏)
可擴展性挑戰(zhàn)
2023 年下半年,一些規(guī)模較小、效率更高的 LLM 逐漸涌現(xiàn)。這些模型將生成式 AI 擴展至移動端,讓此項技術的應用變得更加普遍。
2023 年,Meta 的 Llama 2、Google 的 Gemini Nano 和微軟的 Phi-2 開辟了移動端 LLM 的部署,以解決上述三大挑戰(zhàn)。具體來說,這三個模型的可訓練參數(shù)分別達到 70 億、32.5 億和 27 億。
在移動端 CPU 上運行 LLM
基于 Arm 技術,當今的移動設備擁有強大的計算能力,能夠實時運行復雜的 AI 算法。事實上,現(xiàn)有的旗艦和高端智能手機已經(jīng)可以運行 LLM。
預計未來 LLM 在移動端的部署將會加速,并可能出現(xiàn)如下用例:
文本生成:舉例而言,我們要求虛擬助理為我們撰寫一封電子郵件。
智能回復:即時通訊應用自動提供針對某個問題的建議回復。
文本摘要:電子書閱讀器提供章節(jié)摘要。
在上述的用例中,模型需要處理大量的用戶數(shù)據(jù)。而在邊緣側運行的 LLM 則無需連接網(wǎng)絡,用戶數(shù)據(jù)便會保留在設備中,這將有助于保護個人隱私,同時降低延遲,改善響應速度和用戶體驗。這些都是在邊緣側移動設備上部署 LLM 所能帶來的優(yōu)勢。
幸運的是,得益于 Arm CPU,全世界約 99% 的智能手機都具備在邊緣側處理 LLM 所需的技術。
在 2024 世界移動通信大會 (MWC 2024) 上 Arm 進行了相關演示,敬請觀看以下視頻:
該視頻演示了在搭載三核 Arm Cortex-A700 系列 CPU 核心的現(xiàn)有安卓手機上運行 Llama2-7B LLM 的性能表現(xiàn)。視頻中展示的是實際運行速度,可以看到安卓應用里的虛擬助手反應非常靈敏,回復速度很快。詞元 (Token) 首次響應時間表現(xiàn)驚人,文本生成速率達到每秒 9.6 個詞元,高于人們的平均閱讀速度。這得益于現(xiàn)有針對 AI 設計的 CPU 指令和專門為 LLM 進行的軟件優(yōu)化。更重要的是,所有處理都在邊緣(即移動設備上)本地完成。
隨著新模型的不斷涌現(xiàn),Arm 也在不斷地改進 Arm 平臺上的 LLM 體驗。隨著近期 Meta 推出了最新 Llama 3 模型,以及微軟發(fā)布了 Phi-3-mini (Phi-3 3.8B) 模型,我們迅速地讓它們得以在移動設備上的 Arm CPU 運行。Llama 3 和 Phi-3-mini 比它們的前代模型更大。從體量上來看,最小版本的 Llama 2 為 7B,而 Llama 3 達到了 8B;另外,Phi-2 為 2.7B,而 Phi-3-mini 達到了 3.8B。這些新的 AI 模型能力更強,可以回應更廣泛的問題。
新的演示配備了一個經(jīng)過專門訓練的聊天機器人“Ada”,可以作為科學和編碼的虛擬助教。在以下視頻中運行的 Phi-3-mini 模型顯示出同樣令人印象深刻的詞元首次響應時間性能,文本生成速率每秒超過 15 個詞元。該演示基于我們?yōu)?Llama 2 和 Phi-2 開發(fā)的現(xiàn)有軟件優(yōu)化。盡管這些模型更大、更復雜,但這清楚地表明它們可以在當今由 Arm CPU 驅動的移動設備上良好運行。
那么這些演示是如何開發(fā)出來的呢?接下來,我將分享一些技巧,來幫助大家在搭載 Arm CPU 的安卓手機上部署 LLM。
在移動設備上部署 LLM
首先要強調(diào)的是,Arm CPU 為 AI 開發(fā)者提供了諸多便利。因此,如今第三方應用中有 70% 的 AI 應用均運行在 Arm CPU 上。由于其編程能力非常靈活,AI 開發(fā)者可以嘗試應用創(chuàng)新的壓縮和量化技術,讓 LLM 更加小巧,并且在各種環(huán)境下運行得更快。實際上,我們之所以能運行一個具有 70 億參數(shù)的模型,關鍵就在于整數(shù)量化技術,我們的演示中使用的是 int4。
int4 位量化
作為一項關鍵技術,量化可以將 AI 和機器學習 (ML) 模型壓縮至足夠小,以便能在 RAM 有限的設備上高效運行。因此,這項技術對于那些原生以浮點數(shù)據(jù)類型(如 32 位浮點 FP32 和 16 位浮點 FP16)存儲數(shù)十億可訓練參數(shù)的 LLM 來說,是必不可少的。例如,采用 FP16 權重的 Llama2-7B 版本至少需要大約 14 GB 的 RAM,而這是許多移動設備無法滿足的條件。
通過將 FP16 模型量化到四位,我們可以將其大小縮減至原來的四分之一,并將 RAM 使用量降低到大約 4 GB。得益于 Arm CPU 提供的巨大軟件靈活性,開發(fā)者還可以通過減少參數(shù)值位數(shù)來獲得更小的模型。但請注意,將位數(shù)減少至三位或兩位可能會導致準確度明顯降低。
在 CPU 上運行工作負載時,我們建議通過一個簡單的技巧來提高其性能,即設置線程的 CPU 關聯(lián)性。
采用線程關聯(lián)性改善 LLM 的實時體驗
一般來說,當部署 CPU 應用時,操作系統(tǒng) (OS) 負責選擇運行線程的核心。此決策并不總是以實現(xiàn)最佳性能為目標。
但是,對于非常看重性能表現(xiàn)的應用而言,開發(fā)者可以使用線程關聯(lián)性,強制線程運行在特定核心上。這項技術幫助我們提升了 10% 以上的延遲速度。
您可以通過關聯(lián)性掩碼指定線程關聯(lián)性,關聯(lián)性掩碼的每一位都代表系統(tǒng)中的一個 CPU 核心。假設有八核,其中四核是 Arm Cortex-A715 CPU,并被分配給位掩碼的最高有效位 (0b1111 0000)。
為了在每個 Cortex-A715 CPU 核心上運行每個線程,我們應該在執(zhí)行工作負載之前將線程關聯(lián)性掩碼傳遞給系統(tǒng)調(diào)度程序。在安卓設備中,此操作可通過以下系統(tǒng)調(diào)用函數(shù)完成:
例如,假設有兩個線程,我們可以為每個線程使用以下位掩碼:
線程 1:位掩碼 0b1000 0000
線程 2:位掩碼 0b0100 0000
執(zhí)行工作負載后,我們應將關聯(lián)性掩碼重置為默認狀態(tài),如下面的代碼片段所示:
通過利用線程關聯(lián)性,您可輕松提高各類 CPU 工作負載性能。然而,僅靠 int4 量化和線程關聯(lián)性還不足以全方面發(fā)揮 LLM 的性能。我們知道,低延遲直接關系到用戶的整體體驗,對此類模型至關重要。
因此,Arm 開發(fā)了高度優(yōu)化的 int4 矩陣乘向量和矩陣乘矩陣 CPU 例程,以顯著提升性能表現(xiàn)。
Arm int4 優(yōu)化矩陣乘矩陣和矩陣乘向量例程
矩陣乘矩陣和矩陣乘向量例程是對 LLM 性能至關重要的函數(shù)。這些例程已使用 SDOT 和 SMMLA 指令針對 Cortex-A700 系列 CPU 進行了優(yōu)化。相較于 llama.cpp 中的原生實現(xiàn),我們的例程(即將推出)將詞元首次響應時間(編碼器)縮短了 50% 以上,文本生成速率提升了 20%。
這僅僅只是開始......
出色的用戶體驗、優(yōu)越的性能表現(xiàn),而這僅僅只是開始......借助專用 AI 指令、CPU 線程關聯(lián)性,以及經(jīng)過軟件優(yōu)化的例程,這些演示展示了出色的交互式用例的整體使用體驗。上文中的演示視頻展示出,詞元首次響應時間非常短,文本生成速率快于人們的平均閱讀速度。更令人興奮的是,所有搭載 Cortex-A700 的移動設備均能實現(xiàn)這樣的性能表現(xiàn)。
我們也很高興看到開發(fā)者開源社區(qū)參與到 Arm 平臺上的模型工作。Arm CPU 為 AI 開發(fā)者社區(qū)提供了試煉自己技術的機會,以提供進一步的軟件優(yōu)化,使 LLM 得以更小、更快、更高效。開源社區(qū)中的開發(fā)者大約在 48 小時內(nèi)就成功在 Arm 平臺上啟動并運行了新模型,這便是很好的例證。我們期待看到更多來自開源的力量參與到 Arm 平臺上的生成式 AI 開發(fā)。
而這只是基于 Arm 技術的 LLM 體驗的初期成果。隨著 LLM 變得更加小巧而精密,它們在邊緣移動設備上的表現(xiàn)也將穩(wěn)步提升。此外,Arm 以及我們行業(yè)領先生態(tài)系統(tǒng)中的合作伙伴將繼續(xù)推動硬件進步和軟件優(yōu)化,加速發(fā)展 CPU 指令集的 AI 功能,如針對 Armv9-A 架構的可伸縮矩陣擴展 (Scalable Matrix Extension, SME) 等。這些進展預示著在不久的未來,基于 Arm 架構的消費電子設備將迎來 LLM 用例的新時代。
審核編輯:劉清
-
RAM
+關注
關注
8文章
1368瀏覽量
114697 -
人工智能
+關注
關注
1791文章
47279瀏覽量
238495 -
LLM
+關注
關注
0文章
288瀏覽量
335 -
生成式AI
+關注
關注
0文章
504瀏覽量
474
原文標題:移動端生成式 AI 如何在 Arm CPU 上運行?
文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論