隨著人工智能(AI),尤其是生成式AI的引入,汽車行業(yè)正迎來變革性轉(zhuǎn)變。麥肯錫最近對(duì)汽車和制造業(yè)高管開展的一項(xiàng)調(diào)查表明,超過40%的受訪者對(duì)生成式AI研發(fā)的投資額高達(dá)500萬歐元,超過10%受訪者的投資額超過2,000萬歐元。
隨著行業(yè)向軟件定義汽車(SDV)不斷發(fā)展,到2030年,汽車中的代碼行數(shù)預(yù)計(jì)將從每輛車1億行增加至約3億行。面向汽車的生成式AI與SDV相結(jié)合,可共同實(shí)現(xiàn)性能和舒適性方面的車載用例,以幫助提升駕乘體驗(yàn)。
本文將介紹一項(xiàng)由Arm與亞馬遜云科技(AWS)合作開發(fā)的車載生成式AI用例及其實(shí)現(xiàn)詳情。
用例介紹
隨著汽車愈發(fā)精密,車主已經(jīng)能在交車后持續(xù)接收諸如停車輔助或車道保持等功能更新,伴隨而來的挑戰(zhàn)是,如何讓車主及時(shí)了解新增的更新和新功能?過往通過紙質(zhì)或在線手冊等傳統(tǒng)方法的更新方式已證明存在不足,導(dǎo)致車主無法充分了解汽車的潛能。
為了應(yīng)對(duì)這一挑戰(zhàn),AWS將生成式AI、邊緣計(jì)算和物聯(lián)網(wǎng)(IoT)的強(qiáng)大功能相結(jié)合,開發(fā)了一項(xiàng)車載生成式AI的演示。這項(xiàng)演示所展現(xiàn)的解決方案是由小語言模型(SLM)所支持的車載應(yīng)用,旨在使駕駛員能夠通過自然語音交互獲取比較新的車輛信息。該演示應(yīng)用能夠在部署后離線運(yùn)行,確保駕駛員在沒有互聯(lián)網(wǎng)連接的情況下,也能訪問有關(guān)車輛的重要信息。
該解決方案集成了多項(xiàng)先進(jìn)技術(shù),為用戶打造出更無縫、更有效的產(chǎn)品體驗(yàn)。這項(xiàng)演示的應(yīng)用部署在車內(nèi)本地的小語言模型,該模型利用經(jīng)Arm KleidiAI優(yōu)化的例程對(duì)性能進(jìn)行提升。未經(jīng)KleidiAI優(yōu)化的系統(tǒng)的響應(yīng)時(shí)間為8至19秒左右,相比之下,經(jīng)KleidiAI優(yōu)化的小語言模型的推理響應(yīng)時(shí)間為1至3秒。通過使用KleidiAI,應(yīng)用開發(fā)時(shí)間縮短了6周,而且開發(fā)者在開發(fā)期間無需關(guān)注底層軟件的優(yōu)化。
Arm虛擬硬件(Arm Virtual Hardware)支持訪問許多AWS上的熱門物聯(lián)網(wǎng)開發(fā)套件。當(dāng)物理設(shè)備不可用,或者全球各地的團(tuán)隊(duì)無法訪問物理設(shè)備時(shí),在Arm虛擬硬件上進(jìn)行開發(fā)和測試可節(jié)省嵌入式應(yīng)用的開發(fā)時(shí)間。AWS在汽車虛擬平臺(tái)上成功測試了該演示應(yīng)用,在演示中,Arm虛擬硬件提供了樹莓派設(shè)備的虛擬實(shí)例。同樣的KleidiAI優(yōu)化也可用于Arm虛擬硬件。
這個(gè)在邊緣側(cè)設(shè)備上運(yùn)行的生成式AI應(yīng)用所具備的關(guān)鍵特性之一是,它能夠接收OTA無線更新,其中部分更新使用AWS IoT Greengrass Lite接收,從而確保始終向駕駛員提供比較新信息。AWS IoT Greengrass Lite在邊緣側(cè)設(shè)備上僅占用5 MB的RAM,因此具有很高的內(nèi)存效率。此外,該解決方案包含自動(dòng)質(zhì)量監(jiān)控和反饋循環(huán),用于持續(xù)評(píng)估小語言模型響應(yīng)的相關(guān)性和準(zhǔn)確性。其中采用了一個(gè)比較系統(tǒng),對(duì)超出預(yù)期質(zhì)量閾值的響應(yīng)進(jìn)行標(biāo)記,以進(jìn)行審核。然后,通過AWS上的儀表板,以近乎實(shí)時(shí)的速度對(duì)收集到的反饋數(shù)據(jù)進(jìn)行可視化,使整車廠的質(zhì)保團(tuán)隊(duì)能夠?qū)徍撕痛_定需要改進(jìn)的方面,并根據(jù)需要發(fā)起更新。
這個(gè)由生成式AI提供支持的解決方案,所具備的優(yōu)勢不僅僅在于為駕駛員提供準(zhǔn)確的信息。它還體現(xiàn)了SDV生命周期管理的范式轉(zhuǎn)變,實(shí)現(xiàn)了更持續(xù)的改進(jìn)周期,整車廠可以根據(jù)用戶交互來添加新內(nèi)容,而小語言模型可以使用通過無線網(wǎng)絡(luò)無縫部署的更新信息進(jìn)行微調(diào)。這樣一來,通過保證比較新的車輛信息,用戶體驗(yàn)得以提升,此外整車廠也有機(jī)會(huì)向用戶介紹和指導(dǎo)新特性或可購買的附加功能。通過利用生成式AI、物聯(lián)網(wǎng)和邊緣計(jì)算的強(qiáng)大功能,這個(gè)生成式AI應(yīng)用可以起到汽車用戶向?qū)У淖饔?,其中展示的方法有助于在SDV時(shí)代實(shí)現(xiàn)更具連接性、信息化和適應(yīng)性的駕駛體驗(yàn)。
端到端的上層實(shí)現(xiàn)方案
下圖所示的解決方案架構(gòu)用于對(duì)模型進(jìn)行微調(diào)、在Arm虛擬硬件上測試模型,以及將小語言模型部署到邊緣側(cè)設(shè)備,并且其中包含反饋收集機(jī)制。
圖:基于生成式AI的汽車用戶向?qū)У慕鉀Q方案架構(gòu)圖
上圖中的編號(hào)對(duì)應(yīng)以下內(nèi)容:
1.模型微調(diào):AWS演示應(yīng)用開發(fā)團(tuán)隊(duì)選擇TinyLlama-1.1B-Chat-v1.0作為其基礎(chǔ)模型,該模型已針對(duì)會(huì)話任務(wù)進(jìn)行了預(yù)訓(xùn)練。為了優(yōu)化駕駛員的汽車用戶向?qū)Я奶旖缑?,團(tuán)隊(duì)設(shè)計(jì)了言簡意賅、重點(diǎn)突出的回復(fù),以便適應(yīng)駕駛員在行車時(shí)僅可騰出有限注意力的情況。團(tuán)隊(duì)創(chuàng)建了一個(gè)包含1,000組問答的自定義數(shù)據(jù)集,并使用Amazon SageMaker Studio進(jìn)行了微調(diào)。
2.存儲(chǔ):經(jīng)過調(diào)優(yōu)的小語言模型存儲(chǔ)在Amazon Simple Storage Service (Amazon S3)中。
3.初始部署:小語言模型最初部署到基于Ubuntu的Amazon EC2實(shí)例。
4.開發(fā)和優(yōu)化:團(tuán)隊(duì)在EC2實(shí)例上開發(fā)并測試了生成式AI應(yīng)用,使用llama.cpp進(jìn)行小語言模型量化,并應(yīng)用了Q4_0方案。KleidiAI優(yōu)化預(yù)先集成了llama.cpp。與此同時(shí),模型還實(shí)現(xiàn)了大幅壓縮,將文件大小從3.8 GB減少至607 MB。
5.虛擬測試:將應(yīng)用和小語言模型傳輸?shù)紸rm虛擬硬件的虛擬樹莓派環(huán)境進(jìn)行初始測試。
6.虛擬驗(yàn)證:在虛擬樹莓派設(shè)備中進(jìn)行全面測試,以確保功能正常。
7.邊緣側(cè)部署:通過使用AWS IoT Greengrass Lite,將生成式AI應(yīng)用和小語言模型部署到物理樹莓派設(shè)備,并利用AWS IoT Core作業(yè)進(jìn)行部署管理。
8.部署編排:AWS IoT Core負(fù)責(zé)管理部署到邊緣側(cè)樹莓派設(shè)備的任務(wù)。
9.安裝過程:AWS IoT Greengrass Lite處理從Amazon S3下載的軟件包,并自動(dòng)完成安裝。
10.用戶界面:已部署的應(yīng)用在邊緣側(cè)樹莓派設(shè)備上為最終用戶提供基于語音的交互功能。
11.質(zhì)量監(jiān)控:生成式AI應(yīng)用實(shí)現(xiàn)對(duì)用戶交互的質(zhì)量監(jiān)控。數(shù)據(jù)通過AWS IoT Core收集,并通過Amazon Kinesis Data Streams和Amazon Data Firehose處理,然后存儲(chǔ)到Amazon S3。整車廠可通過Amazon QuickSight儀表板來監(jiān)控和分析數(shù)據(jù),及時(shí)發(fā)現(xiàn)并解決任何小語言模型質(zhì)量問題。
接下來將深入探討KleidiAI及該演示采用的量化方案。
Arm KleidiAI
Arm KleidiAI是專為AI框架開發(fā)者設(shè)計(jì)的開源庫。它為Arm CPU提供經(jīng)過優(yōu)化的性能關(guān)鍵例程。該開源庫最初于2024年5月推出,現(xiàn)在可為各種數(shù)據(jù)類型的矩陣乘法提供優(yōu)化,包括32位浮點(diǎn)、Bfloat16和4位定點(diǎn)等超低精度格式。這些優(yōu)化支持多項(xiàng)Arm CPU技術(shù),比如用于8位計(jì)算的SDOT和i8mm,以及用于32位浮點(diǎn)運(yùn)算的MLA。
憑借四個(gè)Arm Cortex-A76核心,樹莓派5演示使用了KleidiAI的SDOT優(yōu)化,SDOT是最早為基于Arm CPU的AI工作負(fù)載設(shè)計(jì)的指令之一,它在2016年發(fā)布的Armv8.2-A中推出。
SDOT指令也顯示了Arm持續(xù)致力于提高CPU上的AI性能。繼SDOT之后,Arm針對(duì)CPU上運(yùn)行AI逐步推出了新指令,比如用于更有效8位矩陣乘法的i8mm和Bfloat16支持,以期提高32位浮點(diǎn)性能,同時(shí)減半內(nèi)存使用。
對(duì)于使用樹莓派5進(jìn)行的演示,通過按塊量化方案,利用整數(shù)4位量化(也稱為llama.cpp中的Q4_0)來加速矩陣乘法,KleidiAI扮演關(guān)鍵作用。
llama.cpp中的Q4_0量化格式
llama.cpp中的Q4_0矩陣乘法包含以下組成部分:
·左側(cè)(LHS)矩陣,以32位浮點(diǎn)值的形式存儲(chǔ)激活內(nèi)容。
·右側(cè)(RHS)矩陣,包含4位定點(diǎn)格式的權(quán)重。在該格式中,量化尺度應(yīng)用于由32個(gè)連續(xù)整數(shù)4位值構(gòu)成的數(shù)據(jù)塊,并使用16位浮點(diǎn)值進(jìn)行編碼。
因此,當(dāng)提到4位整數(shù)矩陣乘法時(shí),它特指用于權(quán)重的格式,如下圖所示:
在這個(gè)階段,LHS和RHS矩陣均不是8位格式,KleidiAI如何利用專為8位整數(shù)點(diǎn)積設(shè)計(jì)的SDOT指令?這兩個(gè)輸入矩陣都必須轉(zhuǎn)換為8位整數(shù)值。
對(duì)于LHS矩陣,在矩陣乘法例程之前,還需要一個(gè)額外的步驟:動(dòng)態(tài)量化為8位定點(diǎn)格式。該過程使用按塊量化方案將LHS矩陣動(dòng)態(tài)量化為8位,其中,量化尺度應(yīng)用于由32個(gè)連續(xù)8位整數(shù)值構(gòu)成的數(shù)據(jù)塊,并以16位浮點(diǎn)值的形式存儲(chǔ),這與4位量化方法類似。
動(dòng)態(tài)量化可比較大限度降低準(zhǔn)確性下降的風(fēng)險(xiǎn),因?yàn)榱炕叨纫蜃邮窃谕评頃r(shí)根據(jù)每個(gè)數(shù)據(jù)塊中的最小值和比較大值計(jì)算得出的。與該方法形成對(duì)比的是,靜態(tài)量化的尺度因子是預(yù)先確定的,保持不變。
對(duì)于RHS矩陣,在矩陣乘法例程之前,無需額外步驟。事實(shí)上,4位量化充當(dāng)壓縮格式,而實(shí)際計(jì)算是以8位進(jìn)行的。因此,在將4位值傳遞給點(diǎn)積指令之前,首先將其轉(zhuǎn)換為8位。從4位轉(zhuǎn)換為8位的計(jì)算成本并不高,因?yàn)橹恍柽M(jìn)行簡單的移位/掩碼運(yùn)算即可。
既然轉(zhuǎn)換效率如此高,為什么不直接使用8位,省去轉(zhuǎn)換的麻煩?
使用4位量化有兩個(gè)關(guān)鍵優(yōu)勢:
·縮小模型尺寸:由于4位值所需的內(nèi)存只有8位值的一半,因此這對(duì)可用RAM有限的平臺(tái)尤其有益。
·提升文本生成性能:文本生成過程依賴于一系列矩陣向量運(yùn)算,這些運(yùn)算通常受內(nèi)存限制。也就是說,性能受限于內(nèi)存和處理器之間的數(shù)據(jù)傳輸速度,而不是處理器的計(jì)算能力。由于內(nèi)存帶寬是一個(gè)限制因素,縮小數(shù)據(jù)大小可比較大限度減少內(nèi)存流量,從而顯著提高性能。
如何結(jié)合使用KleidiAI與llama.cpp?
非常簡單,KleidiAI已集成到llama.cpp中。因此,開發(fā)者不需要額外的依賴項(xiàng)就能充分發(fā)揮Armv8.2及更新架構(gòu)版本的Arm CPU性能。
兩者的集成意味著,在移動(dòng)設(shè)備、嵌入式計(jì)算平臺(tái)和基于Arm架構(gòu)處理器的服務(wù)器上運(yùn)行l(wèi)lama.cpp的開發(fā)者,現(xiàn)在可以體驗(yàn)到更好的性能。
除了llama.cpp,還有其他選擇嗎?
對(duì)于在Arm CPU上運(yùn)行大語言模型,雖然llama.cpp是一個(gè)很好的選擇,但開發(fā)者也可以使用其他采用了KleidiAI優(yōu)化的高性能生成式AI框架。例如(按首字母順序排列):ExecuTorch、MediaPipe、MNN和PyTorch。只需選擇比較新版本的框架即可。
因此,如果開發(fā)者正考慮在Arm CPU上部署生成式AI模型,探索以上框架有助于實(shí)現(xiàn)性能和效率的優(yōu)化。
總結(jié)
SDV和生成式AI的融合,正在共同開創(chuàng)一個(gè)新的汽車創(chuàng)新時(shí)代,使得未來的汽車變得更加智能化,更加以用戶為中心。文中介紹的車載生成式AI應(yīng)用演示由Arm KleidiAI進(jìn)行優(yōu)化并由AWS所提供的服務(wù)進(jìn)行支持,展示了新興技術(shù)如何幫助解決汽車行業(yè)的實(shí)際挑戰(zhàn)。該解決方案可實(shí)現(xiàn)1至3秒的響應(yīng)時(shí)間并將開發(fā)時(shí)間縮短數(shù)周,證明更有效且離線可用的生成式AI應(yīng)用不僅能夠?qū)崿F(xiàn),而且非常適合車載部署。
汽車技術(shù)的未來在于打造無縫融合邊緣計(jì)算、物聯(lián)網(wǎng)功能和AI的解決方案。隨著汽車不斷演變且軟件越來越復(fù)雜,潛在解決方案(比如本文介紹的解決方案)將成為彌合先進(jìn)汽車功能與用戶理解間差距的關(guān)鍵。
(推廣)