端側大語言模型原理與應用

五月 28, 2024 by
Filed under: killtest 

原创 twt社区
【作者】李登昊,某金融單位人工智慧工程師,長期從事金融領域人工智慧服務落地應用工作,曾負責建置雲端自然語言處理模式服務系統,服務使用者超三十萬人;參與研發大模式智慧產品,對 大模型推理服務性能最佳化及RAG、Agent等技術有深入研究。

一、引言
隨著大語言模式的快速發展,不同場景對大語言模式的需求差異日益顯現。 特別是對手機、PC以及汽車等終端智慧系統來說,出於對輕量敏捷、安全穩定和成本等方面的考慮,傳統的雲端大語言模型服務並不能完全滿足需求。 因此,端側大模型在這些領域的熱度日益提升,逐漸成為新的產業趨勢。 本文旨在透過介紹端側大語言模型的發展現狀、關鍵技術和應用場景,幫助讀者了解端側大語言模型的技術路線和發展趨勢。

二、端側大語言模型概述
2.1 大語言模型概述
大語言模型(Large Language Model,LLM)是一種人工智慧模型,旨在理解和產生自然語言。 基於深度神經網路的自然語言模型架構演進經歷了早期的循環神經網路(Recurrent Neural Networks,RNN)和長短期記憶(Long Short Term Memory,LSTM)時代,在Transformer架構出現後,其迅速成為語言模型的 主流架構。 在基於Transformer的架構中,早期以Google BERT為代表的Encoder-only架構在各項下游任務上表現優於Encoder-Decoder架構和Decoder-only架構。 而隨著算力的不斷發展,模型規模不斷提升,自然語言生成能力也迎來湧現時刻,以OpenAI GPT系列模型為代表的Decoder-only架構在近兩年成為大語言模型主流技術架構。 與傳統的語言模型相比,大語言模型的特點是規模龐大,包含數十億甚至上千億參數,在TB級別的大量文本資料上進行訓練,這使得它們掌握了自然語言中的複雜模式, 產生湧現能力,可執行包括文本總結、翻譯、分類等廣泛的任務。

在大語言模式發展的早期,其應用普遍以呼叫雲端部署的模型服務介面形式進行。 而隨著其在各類自然語言處理任務中應用範圍的擴展,面向雲端服務介面僅透過設計提示詞(Prompt)對介面進行包裝的模式逐漸無法滿足企業級應用對場景複雜度和響應時效性不斷 增長的要求。 因而端側大模型的受重視程度逐漸提升,AIPC、AI手機和AI車機等軟硬體結合的端側大模型落地應用案例如雨後春筍般發布,又進一步推動端側軟硬體技術的快速發展,形成 新時代的適用於大模型的摩爾定律。

2.2 軟硬體技術現狀
由於大語言模型龐大的體量,適用於傳統深度學習的通用軟硬體技術在性能方面遭遇了前所未有的挑戰。 因而多種軟硬體技術被提出,以優化大語言模型的訓練、微調和推理階段的速度和資源消耗,降低其研究和應用的門檻。

由於訓練所需的巨量算力資源,僅有少數企業和機構會選擇從頭訓練大模型,因而相關技術開源程度和通用程度低。 主流大模型訓練,算力硬體通常為Nvidia A100或更先進的H100和B100 GPU;而Nvidia Megatron和Microsoft Deepspeed為大模型訓練提供了整合先進最佳化技術的軟體支援。 在國內,華為昇騰910 NPU同樣支援大規模算力集群的建構與調度,被廣泛用於大語言模型的訓練;而國內GPGPU方向的領頭羊海光與多數企業的ASIC技術路線不同,推出的深 算二號DCU採用「類CUDA」通用平行運算架構,能夠較好地適應並適應國際主流商業運算軟體和人工智慧軟體,產品效能達到國內領先。

相較之下,利用LoRA等參數高效演算法,基於開源大模型底座進行微調所需算力接近傳統深度學習任務,因而得以在更多企業和機構中進行。 主流的深度學習框架如Meta Pytorch、Google TensorFlow和國內的華為昇思、百度飛槳、阿里MNN等都為大模型的微調技術提供了開箱即用的支援。

但對於端側而言,軟硬體技術的核心目標在於為使用者提供大語言模型推理服務,訓練與微調並非端側需要考慮的任務。 在推理方面,Intel在進一步提升CPU產品對大模型的支援的同時,推出NPU(Neural Processing Unit)與原有CPU和整合GPU有機結合來應對AIPC時代的到來,Nvidia在牢牢把控雲端算力 先進地位的同時,也推出了在消費級GPU上的大模型應用。 而在AI手機、AI車機方面,高通、聯發科等頭公司也與手機、汽車廠商共同發表原生支援大模型能力的新產品。 國內以華為代表的端側技術供應商也緊跟國際先進企業步伐,在新一代產品中為用戶帶來大模型能力。

開發者,Intel BigDL和OpenVINO提供了在AIPC上運行大模型的完整框架;MLC(Machine Learning Compilation)、阿里MNN等端側跨平台深度學習框架也都推出了對大模型從訓練、微調的算 力環境轉移到端側部署環境的全套支援。

三、端側大語言模型關鍵技術
3.1 量化壓縮技術
與微調階段的參數高效技術相比,在推理階段大模型的參數規模幾乎是一個無法逾越的阻礙,儘管學術界提出了各類剪枝、蒸餾等方法來降低推理階段的資源消耗,但其局限 性往往較強,通用性不足,因而主流的技術路線仍是透過量化來盡可能減少單一參數的空間資源消耗。

對於大模型的量化壓縮結果評價,除了直接將壓縮後的模型在下游任務上進行測試,與壓縮前測試結果指標進行對比之外,一個重要的評估指標是困惑度(perplexity,PPL)。 這項指標在傳統的自然語言處理任務中就被用來評估文本生成質量,指標越低往往代表模型表現越好。 其計算過程不依賴外部標籤,測算方便,因而廣泛應用。 困惑度的值等於交叉熵損失以2為底的指數,在樣本量為T,詞表為V的語料中,模型的交叉熵損失J的計算公式為[1]:
微信图片_20240528161222
圖1 模型的交叉熵損失J的計算公式

由於交叉熵損失是模型訓練和微調過程中需要計算的損失函數,各個深度學習框架對其都有完備的支持,因而在評價量化壓縮結果時也常直接使用交叉熵損失值,即困惑度的對 數作為量化指標。

在大模型的量化壓縮技術中,一組需要區分的基本概念是權重(通常以W表示)和活化(即模型中神經網路層的輸入和輸出,通常以A表示)。 研究結果指出,相較之下,W的分佈範圍較為接近標準常態分佈,可壓縮的空間較大;而A的分佈範圍波動大,加大其壓縮力度將顯著影響模型效果。 因而最基礎的量化壓縮技術一般是基於標準的32位或16位浮點數模型,將W量化為8位甚至4位整數,但A採用16位浮點數參與計算。 為了進一步壓縮A的資源消耗,學術界提出了多種演算法。 其中一個被廣泛應用的經典演算法SmoothQuant[2] 透過探查A和W的極值分佈情況,計算平滑因子,將A的數值波動轉移到W,這樣儘管W的量化難度會提升,但在一定範圍 內,A量化品質的提升對模型效果的貢獻會超過W量化品質的下降所帶來的負面影響,使得模型整體量化壓縮效果提升。
微信图片_20240528161222
圖2 SmoothQuant原理示意圖

SmoothQuant原理示意圖[2]。 圖中X代表中間結果,對應於文中的A,透過將X的數值波動由W分擔,使得二者分佈均處在較為容易量化的合理區間內。

SmoothQuant不對量化本身的編碼作要求,因而計算速度快,通用性高,但其效能上限也較低。 為了進一步優化量化壓縮質量,一系列對量化編碼進行最佳化的演算法被提出。 OmniQuant[3]是一種在端側大模型中廣泛應用的量化壓縮演算法,其中透過可學習的權重裁剪(Learnable Weight Clipping,LWC)在量化過程中自適應地學習編碼規則,取得了優於 SmoothQuant的效果[4]。 另一方面,針對傳統的對稱均勻編碼,一系列非對稱、非均勻的編碼模式也被運用與大模型,以達到在同樣位元數下盡可能少的壓縮資訊損失。 例如在QLoRA[5]中提出的NF4(Normal Float 4-bit)編碼針對參數分佈的特點,依照常態分佈機率密度函數設計量化區間邊界值,將浮點數量化為以4位元記錄的對應區間的 序號[6]。

除了認識到A和W應該採用不同量化壓縮策略之外,不同參數採用不同量化壓縮策略的想法也被進一步擴展。 在廣泛應用的端側大模型量化壓縮項目llama.cpp[7]中,提供了透過計算參數重要性矩陣為不同重要性的參數賦予不同量化精度的I-Quant和對參數分組分別實施不同量化 策略的K-Quant兩類量化壓縮模式[8]。 這些量化壓縮演算法形成了事實上的行業標準,被廣泛應用於各類端側場景當中,其中模型壓縮率與交叉熵損失增量近似呈線性關係,在同等壓縮率下,I-Quant是目前性能 損失最小的壓縮演算法。
微信图片_20240528161222
圖3 模型性能損失與壓縮率的關係
圖為模型性能損失與壓縮率的關係[8]。 圖中橫座標為bpw(bit per weight),表示儲存單一參數平均所需的位元數,縱座標為量化後PPL與量化前(以16位元浮點數進行運算)PPL比值減去1後的百分數取對 數座標,其數值變化規律上等價於交叉熵損失增量。
3.2 資料重排技術
大模型推理過程中,除了巨量的計算任務之外,資料在記憶體中的流動同樣帶來了不可忽視的時間消耗。 然而在模型微調和訓練過程中,這方面因素往往不是影響效能的關鍵,因而相關技術框架較少關注,需要在模型部署階段額外開展資料重排工作盡可能減少記憶體存取尋址。 這一類技術在基於CUDA生態的GPU上得到了廣泛的研究,例如在TC-FPx(Tensor Cores Floating Point x)內核方案中[9],透過位元級別的預重排,確保對於不同量化精度的 大模型參數都可以消除冗餘的記憶體存取。 而在推理服務架構qserve中[10],資料重排技術也同樣被用來消除GPU的記憶體牆。
阿里MNN框架在端側部署時,引入依照裝置支援的最優SIMD(Single instruction, multiple data)計算指令對資料進行特定的重排以提升記憶體局部性,減少訪存開銷,提升訪存效率的方案 [10]。 透過將資料重排到裝置指令集支援的平行方案所需的位置,在與量化壓縮技術結合時,將多個低位元數值合併視為單一高位元數值,可以一次性執行4或8個數值操作 ,這使得MNN框架下大模型的推理速度大大優於其他框架[12]。
模型參數的重排是資料重排的另一個維度。 推理階段大模型以端到端的形式工作,在訓練和微調階段中便於研發人員觀察的內部細節可以不再對外暴露,可以進行計算圖的重排和對不同算子的融合。 常見的最佳化策略是將激活函數作為前序算符的一部分融合進行,無需等待前一個算子的結果寫入記憶體即可計算激活函數。 主流端側部署框架均針對不同的硬體平台對此能力進行了支援。

四、端側大語言模型應用場景
大模型在企業級應用場景的應用非常廣泛,現階段社會各行各業中實現落地應用案例的領域包括:
1.醫療產業:端側大模型在醫療領域的應用包括醫學資料檢索增強、智慧知識庫和知識助理等,智慧問答服務,基於大模型和知識圖譜能力,可以快速提升醫學內容生產的自動化。
2.供應鏈管理:在供應鏈領域,端側大模型可以創建虛擬數位員工專家團隊,協助白領員工完成數位化工作,並提高供應鏈服務的品質和效率。
3.人才服務:端側大模型可用於獵人頭管理與決策洞察,透過智慧一站式指標分析平台簡化資料分析與管理流程,提升獵人頭服務的品質與效率。
4.工業領域:在工業領域,端側大模型可以用於設備運算知識助手,幫助企業實現從行銷到履約到財務結算的端到端全局自動化。
5.辦公室自動化:端側大模型可與辦公室硬體及軟體產品結合,提供AI摘要、AI待辦、語篇規則、一鍵成稿等功能,提升工作效率。
6.智慧製造:在製造領域,端側大模型可用於汽車線上問答平台,針對非結構化文件實現自然語言與知識間的交互,提升員工工作效率及學習能力。
7.保險業:端側大模型可用於保險個人助理,透過多通路觸達客戶,提供保險服務,提高銷售人效和降低成本。
8.金融風控:端側大模型可用來建構金融風控場景的垂直領域模型,實現對貸前審核的材料審查工作,並提升審核效率。
與雲端部署的大模型服務相比,端側大模型具有隱私安全性高,不受網路環境限制的優勢。 在一些隱私高度敏感或工作環境網路條件不佳的行業當中,端側大模型為企業提供了突破大模型落地應用的障礙的有效解決方案。 這些企業級應用正在幫助企業提升效率、降低成本,並透過賦能現有的PC、手機甚至工業機器人等端側設備,推動數位轉型和智慧升級。 隨著技術的不斷發展,端側大模型在企業級應用場景中的潛力將進一步被挖掘和實現。
參考資料:
[1] https://www.hankcs.com/nlp/cs224n-rnn-and-language-models.html
[2] https://github.com/mit-han-lab/smoothquant
[3] https://github.com/OpenGVLab/OmniQuant

Comments


Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/html/wwwroot/itrenzheng.hk/wp-includes/class-wp-comment-query.php on line 399

Tell me what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!





*