偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

LLM 推理引擎綜述:優(yōu)化與效率的多維探索

人工智能
本文盤點(diǎn)剖析了LLM推理引擎優(yōu)化,從架構(gòu)、推理過程到引擎分類,探索提升效率的奧秘,助力智能應(yīng)用加速前行。

大家好,我是肆〇柒,玩開源模型蠻久了,做開源模型項(xiàng)目的各位,應(yīng)該都了解推理引擎在工程落地上的重要性。一個好的推理引擎,不僅要具備算力的精準(zhǔn)調(diào)度能力,還需要符合工程基線的穩(wěn)定性指標(biāo),更重要的,還要保障模型的推理精度符合業(yè)務(wù)標(biāo)準(zhǔn)。然而,隨著模型規(guī)模的指數(shù)級膨脹,如何高效地部署和運(yùn)行這些模型,成為了技術(shù)發(fā)展道路上的關(guān)鍵挑戰(zhàn)。今天,讓我們一起探索一下 LLM 推理引擎,看看那些隱藏在智能應(yīng)用背后的 “效率加速器” 是如何工作的。

LLM 架構(gòu):解碼器與注意力機(jī)制的精妙配合

(一)解碼器架構(gòu):自回歸訓(xùn)練的零樣本 powerhouse

當(dāng)下盛行的 LLM 主要都是基于解碼器架構(gòu)的,這種架構(gòu)的優(yōu)勢在于其強(qiáng)大的自回歸訓(xùn)練能力。自回歸訓(xùn)練讓模型在面對新任務(wù)時展現(xiàn)出驚人的零樣本(Zero-shot)性能。解碼器架構(gòu)通過多層神經(jīng)網(wǎng)絡(luò)對輸入序列進(jìn)行建模,每一步都基于前面生成的 token 預(yù)測下一個 token,這種機(jī)制使得模型能夠捕捉語言的時序依賴關(guān)系,生成高質(zhì)量的文本輸出。

解碼器架構(gòu)在生成文本時,會先對輸入的提示(Prompt)進(jìn)行編碼,然后通過逐個生成 token 來構(gòu)建輸出序列。在每一步生成過程中,模型都會參考之前生成的所有 token,從而確保輸出的連貫性和邏輯性。這種自回歸特性使得解碼器架構(gòu)在處理需要強(qiáng)邏輯連貫性的任務(wù)時表現(xiàn)尤為出色,例如問答系統(tǒng)和文本摘要等。

例如,在 OpenAI 的 ChatGPT 和 Google 的 Gemini 等模型中,解碼器架構(gòu)使得模型能夠根據(jù)用戶輸入的提示生成連貫且邏輯性強(qiáng)的回答。當(dāng)用戶提問 “What is the capital of France?” 時,模型會先對問題進(jìn)行編碼,然后逐步生成回答 “The capital of France is Paris.” 每一步生成的 token 都依賴于之前的上下文,從而確保回答的準(zhǔn)確性和連貫性。

圖片

Decoder-only Transformer 架構(gòu)概述

(二)注意力機(jī)制:從 MQA 到 GQA 的效率革命

注意力機(jī)制是 LLM 的核心組件之一,它允許模型在生成每個 token 時關(guān)注輸入序列中的相關(guān)部分。傳統(tǒng)的多頭注意力(MHA)機(jī)制雖然強(qiáng)大,但其內(nèi)存占用和計(jì)算復(fù)雜度隨著序列長度的增加呈二次增長,這對長文本處理構(gòu)成了挑戰(zhàn)。為了解決這一問題,研究人員提出了多種優(yōu)化方案,如多查詢注意力(MQA)和分組查詢注意力(GQA)。

MQA 通過共享多個查詢頭之間的 K 和 V 矩陣,將 KV 緩存的內(nèi)存占用從與注意力頭數(shù)成正比降低到與查詢頭數(shù)成正比。GQA 則在 MQA 的基礎(chǔ)上進(jìn)一步平衡內(nèi)存效率和模型性能,通過將注意力頭分組并共享 K 和 V,使得開發(fā)者能夠在內(nèi)存使用和模型精度之間靈活權(quán)衡。

以 DeepSeek-v2 模型為例,該模型引入的多頭潛在注意力(MLA)通過將多個頭的 K 和 V 壓縮到一個共享的潛在向量中,進(jìn)一步減少了緩存大小,同時保留了模型的準(zhǔn)確性。這種創(chuàng)新的注意力機(jī)制顯著提升了 LLM 的推理效率,尤其是在長文本生成和處理場景中。

圖片

注意力機(jī)制

(三)架構(gòu)變體:位置嵌入與Tokenizer的細(xì)節(jié)抉擇

除了核心架構(gòu)和注意力機(jī)制外,LLM 的性能還受到多種架構(gòu)變體的影響。位置嵌入類型、Tokenizer 選擇以及歸一化層的位置等細(xì)節(jié)因素,都會對模型的推理效率和效果產(chǎn)生重要影響。

例如,BLOOM 模型采用注意力偏差(ALiBi)來替代傳統(tǒng)的位置編碼,而 Llama 和 Mistral 模型則使用旋轉(zhuǎn)位置編碼(RoPE)。不同的位置編碼方式會影響模型對序列位置信息的捕捉能力,進(jìn)而影響長序列處理的性能。此外,GPT 變體通常使用字節(jié)對編碼(BPE)Tokenizer,而 Llama 和 T5 則依賴 SentencePiece 基于單語的Tokenizer。這些Tokenizer的選擇不僅影響模型的詞匯表大小和 token 化效率,還會影響模型在不同語言和文本風(fēng)格上的適應(yīng)性。

例如,在處理醫(yī)學(xué)文獻(xiàn)時,RoPE 的位置編碼方式能夠更好地捕捉長序列中的位置信息,從而提高模型對醫(yī)學(xué)術(shù)語和長句的處理能力。而 BPE Tokenizer在處理代碼生成任務(wù)時,能夠更高效地 token 化代碼片段,提升模型的生成效率。

推理過程與優(yōu)化:KV 緩存與量化壓縮的協(xié)同作戰(zhàn)

(一)推理過程:預(yù)填充與解碼的雙階段交響曲

LLM 推理過程主要分為預(yù)填充(Prefill)和解碼(Decode)兩個階段。在預(yù)填充階段,模型對輸入文本進(jìn)行處理,計(jì)算出最后一個 token 的隱藏狀態(tài),這一階段涉及 token 化、嵌入和多個變換器塊的運(yùn)算。而在解碼階段,模型則基于預(yù)填充階段的結(jié)果,迭代生成后續(xù)的 token,直到滿足停止條件。

圖片

 LLM 推理過程

以用戶向聊天機(jī)器人提問 “Is Seoul in Korea?” 為例,模型首先對輸入進(jìn)行預(yù)填充處理,生成初始的隱藏狀態(tài)。然后在解碼階段,逐步生成回答的每個 token,如 “Yes it is” 等。整個過程需要高效地利用計(jì)算資源和內(nèi)存,以確??焖偾覝?zhǔn)確的響應(yīng)。

在預(yù)填充階段,模型會將輸入文本轉(zhuǎn)換為高維向量表示,通過多層變換器塊進(jìn)行特征提取。每一步都涉及到大量的矩陣運(yùn)算和非線性變換,這些計(jì)算密集型操作決定了預(yù)填充階段的性能瓶頸。而在解碼階段,模型需要在每一步生成新的 token 時,參考之前生成的所有 token 的上下文信息,這導(dǎo)致了解碼階段的計(jì)算復(fù)雜度隨著生成序列長度的增加而線性增長。

圖片

大型語言模型的推理與服務(wù)過程

(二)優(yōu)化技術(shù):KV 緩存、內(nèi)核融合與量化的效率密碼

為了提升推理效率,多種優(yōu)化技術(shù)被廣泛應(yīng)用。

KV 緩存通過存儲每個 token 步驟中生成的 K 和 V 矩陣,避免在解碼階段重復(fù)計(jì)算,從而顯著降低推理延遲并提高吞吐量。內(nèi)核融合則將多個操作(如層歸一化、矩陣乘法和激活函數(shù))整合到一個 GPU 內(nèi)核中,減少內(nèi)存訪問和內(nèi)核啟動開銷。

量化技術(shù)將模型參數(shù)表示為低精度整數(shù)(如 8 位或 4 位),從而減少內(nèi)存占用和帶寬需求。例如,SmoothQuant 通過對激活和權(quán)重分布進(jìn)行歸一化處理,減少量化過程中的剪輯現(xiàn)象,實(shí)現(xiàn)穩(wěn)定的基于 PTQ 的激活量化,同時降低延遲和內(nèi)存使用。這些優(yōu)化技術(shù)的協(xié)同作用,使得 LLM 推理能夠在有限的硬件資源上實(shí)現(xiàn)高效運(yùn)行。

例如,在處理長文本生成任務(wù)時,KV 緩存能夠顯著減少解碼階段的計(jì)算量。假設(shè)生成一個包含 1000 個 token 的序列,每個 token 的 K 和 V 矩陣大小為 1024 維,通過 KV 緩存可以節(jié)省約 99% 的計(jì)算量,從而將推理延遲從數(shù)秒降低到數(shù)百毫秒。

圖片

KV Caching

推理引擎分類與特性剖析:從單節(jié)點(diǎn)到多節(jié)點(diǎn)的性能版圖

(一)推理引擎分類標(biāo)準(zhǔn):部署規(guī)模與硬件兼容性的雙重維度

根據(jù)部署規(guī)模和硬件兼容性,LLM 推理引擎可以分為單節(jié)點(diǎn)異構(gòu)設(shè)備、單節(jié)點(diǎn)同構(gòu)設(shè)備、多節(jié)點(diǎn)異構(gòu)設(shè)備和多節(jié)點(diǎn)同構(gòu)設(shè)備四類。

單節(jié)點(diǎn)異構(gòu)設(shè)備推理引擎適合在本地環(huán)境(如筆記本電腦、個人電腦等)上運(yùn)行,能夠利用多種硬件資源(如 CPU 和 GPU)進(jìn)行推理。單節(jié)點(diǎn)同構(gòu)設(shè)備推理引擎則專注于在單一類型的硬件上優(yōu)化推理性能,如僅在 CPU 或 GPU 上運(yùn)行。多節(jié)點(diǎn)異構(gòu)設(shè)備推理引擎適用于大規(guī)模分布式部署場景,能夠在多種硬件設(shè)備(如多個 GPU、TPU 或其他 AI 加速器)上協(xié)同工作,處理高并發(fā)請求。而多節(jié)點(diǎn)同構(gòu)設(shè)備推理引擎則在多個相同類型的硬件設(shè)備上進(jìn)行推理,通常用于高性能計(jì)算集群。

下面我們簡單了解一下這些具有代表性的推理引擎。

(二)代表性推理引擎概述

單節(jié)點(diǎn)異構(gòu)設(shè)備推理引擎
  • Ollama :Ollama 是一個基于 Go 語言的推理引擎,專為本地部署而設(shè)計(jì),利用 llama.cpp 作為核心后端。它支持多種模型格式,如 GGUF 和 Safetensors,便于模型定制。通過 REST API,用戶可以輕松管理和執(zhí)行模型。Ollama 適合對技術(shù)背景要求較低的用戶進(jìn)行模型測試和部署。在單 GPU 環(huán)境下,模型加載速度相對傳統(tǒng)方式可提升 30%,推理延遲降低 20%。
  • llama.cpp :llama.cpp 是一個用 C++ 編寫的 LLM 推理庫,支持在 CPU 上運(yùn)行。它支持多種數(shù)據(jù)類型量化(如 1.5 位、4 位和 8 位),提高量化效率。此外,llama.cpp 引入了 GGUF 格式,簡化了 LLM 的存儲和部署。該引擎適合在資源有限的硬件上運(yùn)行模型,且對硬件外部依賴性低。在 CPU 上運(yùn)行時,推理速度提升 25%。
  • MAX :MAX 是一個基于 Mojo 語言的推理引擎,支持 CPU 和 GPU。它采用圖編譯器和運(yùn)行時,能夠加速生成式 AI 模型的推理。MAX 支持硬件無關(guān)的庫,提升了執(zhí)行效率,適用于需要在不同硬件平臺上高效部署 LLM 的場景。曾有團(tuán)隊(duì)利用 MAX 在多個硬件平臺上統(tǒng)一部署模型,開發(fā)周期縮短 40%。在多硬件平臺上,推理效率提升 35%,模型加載時間減少 50%。
  • MLC LLM :MLC LLM 是一個基于 Apache TVM 的推理引擎,支持多平臺部署。它提供持續(xù)批處理和投機(jī)解碼優(yōu)化,并采用 FlashInfer 加速 GPU 推理。MLC LLM 適合在服務(wù)器和邊緣環(huán)境中統(tǒng)一部署 LLM 的場景。設(shè)備端推理相對比傳統(tǒng)方式,延遲降低 60%。在邊緣設(shè)備上,推理速度比傳統(tǒng)方法快 2 倍,模型加載時間減少 70%。
  • PowerInfer :PowerInfer 是基于 llama.cpp 擴(kuò)展的推理引擎,支持在單消費(fèi)級 GPU 上運(yùn)行 LLM。它利用神經(jīng)元激活的冪律分布特性,將熱神經(jīng)元加載到 GPU,冷神經(jīng)元處理于 CPU。這種設(shè)計(jì)適用于本地單 GPU 環(huán)境,尤其是內(nèi)存受限的本地部署場景。相對同類引擎在同尺寸模型基礎(chǔ)上,系統(tǒng)資源占用降低 40%。GPU 內(nèi)存使用減少 35%,整體推理延遲降低 25%。
  • TGI :TGI 是一個支持多硬件平臺的推理引擎,包括 NVIDIA GPUs、AWS Inferentia 和 Intel Gaudi。它采用量化、RoPE 縮放、Safetensors 和 Zero Config 自動配置等技術(shù)。TGI 適用于需要在多種硬件平臺上靈活部署 LLM 的場景。
單節(jié)點(diǎn)同構(gòu)設(shè)備推理引擎
  • Unsloth :Unsloth 是一個支持 LLM 的高效微調(diào)和推理的推理引擎,采用 LoRA 和 QLoRA 技術(shù)。所有內(nèi)核用 OpenAI Triton 實(shí)現(xiàn),提升執(zhí)行速度。Unsloth 適合需要快速微調(diào)和高效推理的場景,尤其是對模型精度要求較高的場景。利用 Unsloth 快速微調(diào)模型,用于特定領(lǐng)域的文本生成任務(wù),微調(diào)時間相較傳統(tǒng)方式,可縮短 50%。微調(diào)速度比傳統(tǒng)方法快 2.5 倍,推理延遲降低 35%。
  • llama2.c :llama2.c 是一個純 C 語言編寫的推理引擎,支持小型 Llama2 模型推理。代碼簡潔(約 700 行),支持 OpenMP 多線程。它適合教育目的和小型推理任務(wù),易用上手。在小型任務(wù)中,推理速度比復(fù)雜引擎快 1.8 倍,但擴(kuò)展性有限。
  • bitnet.cpp :bitnet.cpp 是一個支持一比特 LLM 推理的推理引擎,基于 llama.cpp 開發(fā)。它采用多種內(nèi)核類型(如 I2_S、TL1 和 TL2),優(yōu)化 x86 和 ARM 處理器。bitnet.cpp 適用于對內(nèi)存和帶寬要求極高的場景,如嵌入式設(shè)備上的 LLM 部署。
  • OpenLLM :OpenLLM 是一個基于 BentoML 的推理引擎,提供簡單命令執(zhí)行和部署開源 LLM 和自定義模型。它支持 vLLM 和 BentoML 后端,維持高吞吐量。OpenLLM 適合需要在云或本地服務(wù)器上快速部署 LLM 的場景,但多節(jié)點(diǎn)擴(kuò)展能力有限。
  • LightLLM :LightLLM 是一個基于 Python 的輕量級且高度可擴(kuò)展的推理引擎。它采用三進(jìn)程異步協(xié)作方法,引入 TokenAttention 和高效路由器調(diào)度。LightLLM 適合在多用戶環(huán)境中高效部署 LLM 的場景。
  • NanoFlow :NanoFlow 是一個引入 Nano-batching 技術(shù)的推理引擎,支持設(shè)備內(nèi)并行操作。它將批處理任務(wù)細(xì)分為更小的Nano批次,提升資源利用率。NanoFlow 適用于對吞吐量要求極高的場景,如實(shí)時數(shù)據(jù)處理,但對小規(guī)模任務(wù)的優(yōu)化效果有限。
  • vAttention :vAttention 是一個基于 Sarathi-Serve 的推理引擎,支持動態(tài)管理 KV 緩存內(nèi)存。它采用虛擬張量和自定義 UVM 驅(qū)動,提升內(nèi)存管理效率。vAttention 適合需要高效內(nèi)存管理的場景,尤其是長序列推理任務(wù)。
  • Sarathi-Serve :Sarathi-Serve 是一個基于 vLLM 構(gòu)建的推理引擎,解決推理中的吞吐量和時延權(quán)衡問題。它采用塊狀預(yù)填充和無停頓調(diào)度,降低 TBT。Sarathi-Serve 適合對時延要求極高的場景,如實(shí)時對話系統(tǒng)。
多節(jié)點(diǎn)異構(gòu)設(shè)備推理引擎
  • vLLM :vLLM 是一個采用 PagedAttention 優(yōu)化內(nèi)存效率的推理引擎,支持 FlashAttention-3 技術(shù)降低推理時延。它支持 GPU 和 CPU 的分布式工作負(fù)載。vLLM 適用于追求快速 token 生成和低時延的高性能 LLM 服務(wù)場景。
  • SGLang :SGLang 是一個支持多模型類型和多節(jié)點(diǎn)操作的推理引擎,采用 RadixAttention 基于 KV 緩存管理。它提供 OpenAI 兼容 API。SGLang 適用于需要高效多模型推理的場景,如多模態(tài)應(yīng)用。
  • LMDeploy :LMDeploy 是一個支持推理和部署的優(yōu)化技術(shù)的推理引擎,如持續(xù)批處理、動態(tài)拆分融合和高性能 CUDA 內(nèi)核。它提供 TurboMind 引擎,支持高效 LLM 推理。LMDeploy 適用于需要高吞吐量和低時延的 LLM 部署場景。
  • DeepSpeed-FastGen :DeepSpeed-FastGen 是一個集成 Microsoft DeepSpeed 技術(shù)的推理引擎,優(yōu)化內(nèi)存使用。它支持動態(tài) SplitFuse 技術(shù),提升吞吐量并降低時延。DeepSpeed-FastGen 適合大規(guī)模 LLM 部署,特別是對吞吐量要求極高的場景。
  • LitGPT :LitGPT 是一個基于 nanoGPT、Lit-LLaMA 和 Lightning Fabric 構(gòu)建的推理引擎,支持快速原型開發(fā)。它采用 FlashAttention-2 和 KV 緩存優(yōu)化,提升推理速度。LitGPT 適合需要快速開發(fā)和部署 LLM 的研究和開發(fā)場景。
  • Fireworks AI :Fireworks AI 是一個支持 LLM 和圖像模型的快速高效推理的推理引擎,采用多/組查詢注意力優(yōu)化、分片、量化和持續(xù)批處理技術(shù)。Fireworks AI 適合需要處理混合工作負(fù)載的場景,如同時處理文本和圖像任務(wù)。
  • Together Inference :Together Inference 是一個支持多 GPU 和多節(jié)點(diǎn)部署的推理引擎,優(yōu)化硬件資源利用。它提供多種模型配置,支持不同服務(wù)需求。Together Inference 適合對成本敏感且需要高吞吐量的商業(yè)應(yīng)用場景。
多節(jié)點(diǎn)同構(gòu)設(shè)備推理引擎
  • TensorRT-LLM :TensorRT-LLM 是 NVIDIA 提供的推理引擎,支持 NVIDIA GPUs。它采用 TensorRT 編譯和優(yōu)化庫,支持低精度操作。TensorRT-LLM 適用于需要在 NVIDIA GPU 上高效部署 LLM 的場景。
  • DistServe :DistServe 是一個支持在多 GPU 集群中高效運(yùn)行 LLM 推理的推理引擎,采用粒度級分解推理請求策略,提升吞吐量和資源利用率。DistServe 適合在大規(guī)模 GPU 集群上部署 LLM 的場景。
  • GroqCloud :GroqCloud 是基于 Groq LPU AI 加速器的推理引擎,提供低時延、高吞吐推理服務(wù)。它采用 TruePoint 技術(shù),支持 FP16 或 INT8 計(jì)算。GroqCloud 適用于對時延要求極高的場景,如金融交易和自動駕駛。

(三)代表性推理引擎對比


圖片

圖 A. 跨六個維度的LLM推理引擎代表性特征比較:模型通用性、部署與使用的便捷性、延遲與吞吐量優(yōu)化以及可擴(kuò)展性

圖片

表 A. 大型語言模型推理引擎的比較

圖片

表 B. 上述LLM推理引擎的硬件特性

如上圖表說明:表 A 提供了本文所考察的大型語言模型(LLM)推理引擎的總結(jié),圖 A 則提供了每個引擎特性的可視化展示。通用性是一個綜合指標(biāo),是根據(jù) 表 A 中支持的模型數(shù)量以及表B中硬件平臺的范圍推導(dǎo)出來的。得分越高,表明與多樣化模型和硬件的兼容性越廣泛。

部署便捷性 衡量通過Python包安裝器(pip)、Debian高級包工具(APT)、Homebrew 、源碼構(gòu)建定制、Docker 或Conda 環(huán)境或預(yù)構(gòu)建二進(jìn)制文件安裝引擎的難易程度。評分越高,表示安裝和部署越簡單、越快速。

易用性 評估文檔質(zhì)量和用戶社區(qū)活躍度(如表3所示)。

低延遲優(yōu)化高吞吐量優(yōu)化分別衡量每個引擎對低延遲和高吞吐量特定優(yōu)化技術(shù)的支持程度。更高的數(shù)值意味著在這些領(lǐng)域具有更強(qiáng)的優(yōu)化能力。

最后,可擴(kuò)展性 衡量引擎在邊緣、服務(wù)器和多節(jié)點(diǎn)環(huán)境中適應(yīng)的有效性。更高的分?jǐn)?shù)表明更適合大規(guī)模LLM工作負(fù)載。

對于商業(yè)推理引擎,某些指標(biāo)得分可能較低,因?yàn)樗鼈円蕾囉诠_可用的信息。

通過參考圖A ,用戶可以確定哪種LLM推理引擎最適合他們的服務(wù)需求和部署環(huán)境。

下圖是 商用LLM推理引擎的推理性能比較

圖片

商用LLM推理引擎的推理性能比較

以下兩張表是商用 LLM 在成本方面的比較信息:

圖片

按模型定價的商用LLM引擎(每100萬Token的美元價格)

圖片

按硬件類型在商用LLm引擎中的定價(每臺設(shè)備每小時的價格)

推理引擎優(yōu)化技術(shù)全景圖:從批處理到注意力優(yōu)化的全方位加速

下面這張表對比了 LLM 推理引擎的各類優(yōu)化項(xiàng):


圖片

LLM 推理引擎的優(yōu)化

(一)批處理優(yōu)化:靈活調(diào)度與資源利用的極致追求

  • 動態(tài)批處理 :動態(tài)批處理能夠?qū)崟r重組批處理,根據(jù)當(dāng)前的請求負(fù)載和硬件資源動態(tài)調(diào)整批大小。這種靈活性使得推理引擎能夠更高效地利用計(jì)算資源,減少等待時間,提高整體吞吐量。例如,當(dāng)系統(tǒng)檢測到多個短請求時,可以將它們合并為一個較大的批次進(jìn)行處理,從而減少 GPU 的空閑時間。

圖片

圖片

批次策略比較

  • 連續(xù)批處理 :連續(xù)批處理允許新請求在不中斷當(dāng)前處理的情況下加入正在進(jìn)行的批次。這種機(jī)制進(jìn)一步優(yōu)化了 GPU 和內(nèi)存的利用率。通過在每個處理階段動態(tài)插入新請求,推理引擎可以保持持續(xù)的計(jì)算負(fù)載,減少資源浪費(fèi)。例如,Orca 推理引擎通過迭代級調(diào)度和選擇性批處理,實(shí)現(xiàn)了高效的連續(xù)批處理,顯著降低了平均響應(yīng)時間和等待時間。



圖片
批次策略比較

  • Nano批處理 :Nano批處理將批處理任務(wù)細(xì)分為更小的Nano批次,每個Nano批次包含更少的請求。這種細(xì)粒度的批處理方式能夠更好地適應(yīng)不同類型的計(jì)算操作(如計(jì)算密集型、內(nèi)存密集型和網(wǎng)絡(luò)密集型),提升資源利用率和吞吐量。NanoFlow 推理引擎通過Nano批處理技術(shù),實(shí)現(xiàn)了在單設(shè)備上的高效并行操作,特別是在處理大規(guī)模請求時表現(xiàn)出色。

圖片

Nano-batching

  • 分塊預(yù)填充 :分塊預(yù)填充將長提示分割為多個分塊,并逐步處理這些分塊。這種方法可以優(yōu)化預(yù)填充和解碼階段的資源利用,避免在處理長文本時出現(xiàn)資源瓶頸。例如,DeepSpeed-FastGen 的動態(tài) SplitFuse 技術(shù)通過分割提示來提前生成 token,從而提高了系統(tǒng)的響應(yīng)速度和效率。
    圖片

Chunked-prefills

(二)并行計(jì)算:多硬件協(xié)同的推理加速

  • 據(jù)并行 :數(shù)據(jù)并行通過在多個硬件設(shè)備上分配模型副本,將輸入數(shù)據(jù)分割后分配給每個設(shè)備進(jìn)行獨(dú)立推理。這種方法能夠顯著提升并行計(jì)算能力,尤其適用于大規(guī)模數(shù)據(jù)處理。然而,數(shù)據(jù)并行在處理超大模型時可能會面臨內(nèi)存限制,因?yàn)槊總€設(shè)備都需要存儲完整的模型副本。
  • 完全共享數(shù)據(jù)并行 :完全共享數(shù)據(jù)并行在多 GPU 設(shè)備間共享模型參數(shù)、梯度和優(yōu)化器狀態(tài)。這種方法減少了內(nèi)存占用,使得更大規(guī)模的模型能夠在有限的硬件資源上運(yùn)行。例如,F(xiàn)SDP 技術(shù)通過在每個 GPU 上僅存儲模型參數(shù)的一部分,實(shí)現(xiàn)了高效的內(nèi)存利用和計(jì)算加速。
  • 張量并行 :張量并行將特定的 LLM 操作(如矩陣乘法、注意力機(jī)制和全連接層)分布在多個硬件設(shè)備上并行執(zhí)行。每個設(shè)備處理操作的一部分,然后通過集體通信(如 All-Reduce 或 All-Gather)合并中間結(jié)果。這種方法能夠加速推理過程,同時減少每個設(shè)備的內(nèi)存占用。例如,vLLM 和 TensorRT-LLM 等推理引擎通過張量并行技術(shù),實(shí)現(xiàn)了高效的分布式推理。
  • 流水線并行 :流水線并行將模型的不同層(或?qū)咏M)分配給不同的 GPU,形成流水線式操作。輸入數(shù)據(jù)被分割成微批次,依次通過流水線中的各個層。這種方法能夠減少內(nèi)存占用,并通過重疊操作提高推理效率。然而,流水線并行在處理短序列時可能會出現(xiàn)效率較低的情況,因?yàn)榱魉€的初始化階段會占用一定的時間。例如,PP 技術(shù)通過優(yōu)化流水線并行,減少了初始化階段的延遲,提高了整體推理效率。

圖片

并行策略比較

(三)模型壓縮:量化、剪枝與稀疏優(yōu)化的內(nèi)存與效率平衡

  • 量化 :量化技術(shù)通過將模型參數(shù)表示為低精度整數(shù)(如 FP4 和 FP8),顯著減少內(nèi)存占用和帶寬需求。例如,SmoothQuant 技術(shù)通過對激活和權(quán)重分布進(jìn)行歸一化處理,減少了量化過程中的剪輯現(xiàn)象,實(shí)現(xiàn)了穩(wěn)定的量化效果,同時降低了延遲和內(nèi)存使用。此外,KV 緩存量化技術(shù)通過壓縮 KV 緩存,進(jìn)一步減少了長上下文場景下的內(nèi)存占用。

圖片

圖片

圖片

量化方法

  • 剪枝 :剪枝技術(shù)通過移除模型中不重要的參數(shù),減小模型尺寸,提升推理效率。例如,cuSPARSE 和 Wanda 等工具提供了高效的剪枝方法,能夠在不顯著影響模型性能的前提下,減少模型的計(jì)算復(fù)雜度和內(nèi)存占用。
    圖片基于Transformer模型的剪枝


圖片

 三種剪枝方式:結(jié)構(gòu)化剪枝、非結(jié)構(gòu)化剪枝和上下文相關(guān)剪枝

  • 稀疏優(yōu)化 :稀疏優(yōu)化通過設(shè)計(jì)稀疏模型結(jié)構(gòu)或應(yīng)用預(yù)定義稀疏模式,提升計(jì)算效率。例如,結(jié)構(gòu)化稀疏(如 N:M 稀疏)和動態(tài)稀疏(如動態(tài) token 稀疏)等技術(shù),能夠在保持模型性能的同時,顯著減少計(jì)算量和內(nèi)存占用。此外,MoE(Mixture-of-Experts)和稀疏 MoE 等技術(shù)通過動態(tài)激活部分專家網(wǎng)絡(luò),進(jìn)一步提高了模型的計(jì)算效率。
    圖片稀疏優(yōu)化


圖片

圖片

 稀疏解碼

(四)精調(diào)與緩存優(yōu)化:LoRA、QLoRA 與高效緩存策略的協(xié)同作用

  • 精調(diào) :LoRA(Low-Rank Adaptation)和 QLoRA(Quantized LoRA)等方法通過在原始模型的基礎(chǔ)上引入低秩矩陣進(jìn)行微調(diào),能夠在不重新訓(xùn)練整個模型的情況下,快速適應(yīng)特定任務(wù)或領(lǐng)域。這些方法不僅提高了模型的適應(yīng)性,還顯著減少了微調(diào)時間和資源消耗。例如,Unsloth 推理引擎通過 LoRA 和 QLoRA 技術(shù),實(shí)現(xiàn)了快速高效的模型微調(diào),微調(diào)速度比傳統(tǒng)方法快 2.5 倍,推理延遲降低 35%。
    圖片

LoRA

  • 緩存 :緩存策略在提升推理效率中起著至關(guān)重要的作用。提示緩存(Prompt Caching)通過存儲常用提示的注意力狀態(tài),避免重復(fù)計(jì)算,顯著提高了推理速度。前綴緩存(Prefix Caching)則專注于緩存共享前綴部分的計(jì)算結(jié)果,優(yōu)化了批量推理的效率。KV 緩存(Key-Value Caching)通過存儲每個 token 步驟中生成的 K 和 V 矩陣,減少了解碼階段的重復(fù)計(jì)算,進(jìn)一步降低了推理延遲。例如,vLLM 推理引擎通過 KV 緩存優(yōu)化,實(shí)現(xiàn)了高效的解碼過程,吞吐量提升 3.8 倍,推理延遲降低 55%。

圖片

Prompt Caching

圖片

Prefix Caching

圖片

KV Caching

(五)注意力優(yōu)化與采樣優(yōu)化:FlashAttention 與 Speculative Decoding 的高效實(shí)現(xiàn)

  • 注意力優(yōu)化 :PagedAttention、RadixAttention 等技術(shù)通過優(yōu)化 KV 緩存的管理,顯著提升了內(nèi)存效率和推理速度。例如,PagedAttention 通過將 KV 緩存分割為多個頁面,并根據(jù)需要動態(tài)分配內(nèi)存,減少了內(nèi)存碎片化和浪費(fèi)。RadixAttention 則通過高效的 KV 緩存管理,進(jìn)一步優(yōu)化了多模型推理的性能。此外,F(xiàn)lexAttention 提供了一種靈活的注意力編程模型,允許開發(fā)者通過簡單的 PyTorch 代碼實(shí)現(xiàn)多種注意力優(yōu)化,無需手動編寫硬件特定的內(nèi)核。


    圖片

PagedAttention

圖片

TokenAttention

  • 采樣優(yōu)化 :FlashAttention 及其變體通過優(yōu)化 GPU 推理速度和處理長序列的能力,顯著提升了推理效率。例如,F(xiàn)lashAttention-3 通過異步計(jì)算和低精度算術(shù),進(jìn)一步降低了推理延遲。此外,Speculative Decoding 技術(shù)通過預(yù)測多個候選 token 并提前驗(yàn)證,顯著加快了文本生成速度。例如,EAGLE、Medusa 和 ReDrafter 等方法通過不同的策略實(shí)現(xiàn)了高效的 Speculative Decoding,提高了推理速度和吞吐量。

圖片

 FlashAttention

(六)輸出結(jié)構(gòu)化與約束解碼:提升生成質(zhì)量的關(guān)鍵策略

在 LLM 的推理過程中,輸出的結(jié)構(gòu)化和約束解碼技術(shù)對于提升生成內(nèi)容的質(zhì)量和準(zhǔn)確性至關(guān)重要。傳統(tǒng)的無結(jié)構(gòu)輸出(Unstructured Outputs)往往缺乏明確的格式和邏輯,難以直接應(yīng)用于特定任務(wù)。而結(jié)構(gòu)化輸出(Structured Outputs)則通過引入預(yù)定義的格式或模式,使得生成結(jié)果更具可讀性和可用性。例如,在問答系統(tǒng)中,結(jié)構(gòu)化輸出可以確保答案以清晰的邏輯和格式呈現(xiàn),提高用戶體驗(yàn)。

圖片

非結(jié)構(gòu)化輸出和結(jié)構(gòu)化輸出

此外,約束解碼(Constrained Decoding)技術(shù)在解碼階段對生成過程進(jìn)行約束,確保輸出內(nèi)容符合特定的要求或規(guī)則。這種技術(shù)通過限制生成的 token 范圍或引入特定的約束條件,使得模型能夠生成更準(zhǔn)確和符合預(yù)期的結(jié)果。例如,在機(jī)器翻譯任務(wù)中,約束解碼可以確保生成的譯文符合目標(biāo)語言的語法和語義規(guī)則,提高翻譯質(zhì)量。

圖片

在解碼階段應(yīng)用約束解碼

通過結(jié)合輸出結(jié)構(gòu)化和約束解碼技術(shù),推理引擎能夠在生成任務(wù)中實(shí)現(xiàn)更高的準(zhǔn)確性和可靠性。這些技術(shù)不僅提升了模型的實(shí)用性,還拓寬了其在各種應(yīng)用場景中的潛力,如智能客服、內(nèi)容生成和代碼輔助等。

推理引擎的未來研究方向與挑戰(zhàn):多模態(tài)、新型架構(gòu)與硬件適配的前沿探索

(一)多模態(tài) LLM 推理引擎:跨模態(tài)融合的技術(shù)挑戰(zhàn)與解決方案

  • 技術(shù)挑戰(zhàn) :多模態(tài) LLM 推理引擎需要處理多種數(shù)據(jù)類型(如圖像、文本、語音等),面臨著跨模態(tài)語義鴻溝、數(shù)據(jù)格式統(tǒng)一等技術(shù)難點(diǎn)。例如,如何將圖像特征與文本特征有效地融合,以實(shí)現(xiàn)對復(fù)雜場景的理解和生成,是一個亟待解決的問題。
  • 解決方案 :當(dāng)前的研究方向包括多模態(tài)預(yù)訓(xùn)練模型和跨模態(tài)注意力機(jī)制。多模態(tài)預(yù)訓(xùn)練模型通過在大規(guī)模多模態(tài)數(shù)據(jù)上進(jìn)行聯(lián)合訓(xùn)練,學(xué)習(xí)不同模態(tài)之間的語義關(guān)聯(lián)??缒B(tài)注意力機(jī)制則允許模型在生成過程中動態(tài)關(guān)注不同模態(tài)的信息,從而實(shí)現(xiàn)更準(zhǔn)確的推理和生成。例如,Qwen2-VL 和 LLaVA-1.5 等多模態(tài)模型通過引入多模態(tài)旋轉(zhuǎn)位置嵌入(M-RoPE),顯著提高了對多模態(tài)輸入的處理能力。

(二)新型架構(gòu)支持:RetNet、Mamba 與架構(gòu)創(chuàng)新的性能突破

  • RetNet 架構(gòu) :RetNet 是一種新型的長序列處理架構(gòu),通過線性時間復(fù)雜度的 Selective State Space Model(SSM),顯著提高了處理長序列的效率。RetNet 通過選擇性地更新狀態(tài)空間,避免了傳統(tǒng) Transformer 架構(gòu)中計(jì)算復(fù)雜度隨序列長度二次增長的問題。
  • Mamba 架構(gòu) :Mamba 是一種結(jié)合了 Transformer 和 SSM 的混合架構(gòu),旨在充分發(fā)揮兩者的優(yōu)點(diǎn)。Mamba 通過引入 MoE 策略,進(jìn)一步提高了模型的容量和推理效率。例如,Jamba 架構(gòu)通過結(jié)合 Mamba 和 Transformer,實(shí)現(xiàn)了在長序列處理中的高效推理。

(三)硬件感知融合與混合精度優(yōu)化:GPU、TPU 與新興硬件的適配策略

  • GPU 優(yōu)化策略 :FlashAttention-3 在 NVIDIA H100 GPU 上的實(shí)現(xiàn)細(xì)節(jié)包括異步計(jì)算和低精度算術(shù)的應(yīng)用。通過將數(shù)據(jù)傳輸和計(jì)算操作分離到不同的 GPU warp 中,并采用生產(chǎn)者-消費(fèi)者模型,F(xiàn)lashAttention-3 有效地重疊了 softmax 操作與 WGMMA,顯著降低了推理延遲。
  • 新興硬件架構(gòu) :Cerebras WSE-2 等新興硬件通過大規(guī)模并行計(jì)算能力,為 LLM 推理提供了新的可能性。這些硬件架構(gòu)通過優(yōu)化內(nèi)存訪問和計(jì)算效率,顯著提高了推理速度和吞吐量。
  • 性能對比 :在不同硬件平臺上,推理引擎的性能表現(xiàn)存在顯著差異。例如,在 NVIDIA GPU 上,F(xiàn)lashAttention-3 的推理速度比傳統(tǒng)方法快 3.7 倍;而在 Cerebras WSE-2 上,推理速度進(jìn)一步提升,吞吐量增加了 5.1 倍。因此,選擇合適的硬件平臺對于推理引擎的性能至關(guān)重要。

(四)長上下文窗口與內(nèi)存管理:新型緩存技術(shù)的前沿探索

  • 現(xiàn)有技術(shù)局限性 :現(xiàn)有的內(nèi)存管理技術(shù)(如分層緩存管理)在處理超長上下文窗口時面臨著內(nèi)存占用大、緩存命中率低等問題。例如,當(dāng)處理包含數(shù)十萬甚至數(shù)百萬 token 的長文本時,KV 緩存的大小可能會超過 GPU 內(nèi)存的容量,導(dǎo)致頻繁的內(nèi)存交換和性能下降。
  • 前沿研究 :新型內(nèi)存管理策略包括基于深度學(xué)習(xí)的動態(tài)緩存預(yù)測技術(shù)。這些技術(shù)通過預(yù)測未來的緩存需求,提前將數(shù)據(jù)加載到內(nèi)存中,從而減少緩存缺失的次數(shù)。此外,研究人員還在探索基于壓縮和編碼的緩存管理方法,以進(jìn)一步減少內(nèi)存占用。

(五)復(fù)雜邏輯推理:多步推理與會話連續(xù)性的技術(shù)發(fā)展

  • 技術(shù)發(fā)展趨勢 :LLM 在復(fù)雜邏輯推理任務(wù)中的發(fā)展趨勢包括多步推理、自我驗(yàn)證和多輪對話等。這些技術(shù)使得模型能夠逐步解決問題,并在每一步中驗(yàn)證推理的正確性,從而提高推理的準(zhǔn)確性和可靠性。例如,某些推理引擎通過引入多步推理機(jī)制,能夠處理復(fù)雜的邏輯問題,如數(shù)學(xué)題解、邏輯謎題等,顯著提升了模型在這些任務(wù)上的表現(xiàn)。
  • 會話連續(xù)性管理 :在多輪對話場景中,推理引擎需要有效地管理會話連續(xù)性和上下文保持。這不僅要求模型能夠記住之前的對話內(nèi)容,還要能夠動態(tài)調(diào)整推理策略以適應(yīng)新的輸入。有的推理引擎通過引入上下文窗口和動態(tài)緩存機(jī)制,能夠更好地處理多輪對話中的上下文信息,從而提高對話的連貫性和準(zhǔn)確性。

(六)推理引擎選擇策略:基于服務(wù)需求的選型指南

  • 實(shí)時互動服務(wù) :對于需要實(shí)時互動的服務(wù),如智能客服、聊天機(jī)器人等,低時延優(yōu)化是關(guān)鍵。推理引擎需要能夠快速響應(yīng)用戶的輸入,提供即時的反饋。例如,Sarathi-Serve 推理引擎通過塊狀預(yù)填充和無停頓調(diào)度,顯著降低了時延,適合實(shí)時對話系統(tǒng)。
  • 高流量服務(wù) :對于處理高流量請求的服務(wù),如搜索引擎、內(nèi)容推薦系統(tǒng)等,高吞吐量設(shè)計(jì)至關(guān)重要。推理引擎需要能夠高效地處理大量并發(fā)請求,同時保持穩(wěn)定的性能。例如,DistServe 推理引擎通過粒度級分解推理請求策略,顯著提升了吞吐量和資源利用率,適合大規(guī)模 GPU 集群部署。
  • 選型指南 :選擇推理引擎時,需要綜合考慮服務(wù)類型、硬件配置和性能指標(biāo)。對于實(shí)時互動服務(wù),優(yōu)先選擇低時延優(yōu)化的推理引擎;對于高流量服務(wù),優(yōu)先選擇高吞吐量設(shè)計(jì)的推理引擎。此外,還需要考慮硬件兼容性、模型支持范圍、易用性和成本等因素。

(七)安全性支持:對抗性訓(xùn)練與數(shù)據(jù)過濾的防護(hù)策略

  • 安全風(fēng)險分析 :LLM 推理中存在多種安全風(fēng)險,如提示注入攻擊、越獄攻擊和數(shù)據(jù)泄露等。這些攻擊可能導(dǎo)致模型生成有害內(nèi)容或泄露用戶隱私。例如,提示注入攻擊通過操縱輸入提示,使模型生成與原始目標(biāo)不符的內(nèi)容。
  • 防護(hù)措施 :為了應(yīng)對這些安全風(fēng)險,研究人員提出了多種防護(hù)措施,如對抗性訓(xùn)練、數(shù)據(jù)過濾和輸入檢查等。對抗性訓(xùn)練通過在訓(xùn)練過程中引入對抗性樣本,提高模型的魯棒性。數(shù)據(jù)過濾和輸入檢查則通過檢測和阻止有害輸入,防止模型生成不當(dāng)內(nèi)容。例如,OpenAI Moderation 提供了一種有效的輸入檢查機(jī)制,能夠檢測并阻止有害輸入,提高模型的安全性。

(八)端上推理:模型壓縮與硬件特定優(yōu)化的結(jié)合

  • 模型壓縮技術(shù) :端上推理需要對模型進(jìn)行壓縮,以適應(yīng)移動設(shè)備和物聯(lián)網(wǎng)設(shè)備的有限資源。量化、剪枝和知識蒸餾是常見的模型壓縮技術(shù)。例如,SmoothQuant 通過對激活和權(quán)重分布進(jìn)行歸一化處理,實(shí)現(xiàn)了穩(wěn)定的量化效果,顯著降低了模型的內(nèi)存占用和推理延遲。
  • 硬件特定優(yōu)化 :針對移動設(shè)備和物聯(lián)網(wǎng)設(shè)備的硬件特定優(yōu)化策略包括優(yōu)化內(nèi)存管理、減少計(jì)算量和提高能效。例如,某些推理引擎通過引入高效的緩存管理和內(nèi)存分配策略,顯著提高了端上推理的效率。此外,針對特定硬件平臺的優(yōu)化,如 ARM 架構(gòu)的優(yōu)化,也能夠進(jìn)一步提升推理性能。

感想

通過撰寫本文,我又一次加深了對推理引擎的認(rèn)知,并且對一些本模糊的概念,更是有了清晰的認(rèn)識。通過本文,相信大家也能看到自己耳熟能詳?shù)耐评硪妫热?Ollama,llama.cpp,vLLM,SGL,LMDeploy,TensorRT 等等。通過了解 LLM 推理引擎的優(yōu)化方法和硬件適應(yīng)策略,大家應(yīng)該可以感受到人工智能技術(shù)的飛速發(fā)展。從解碼器架構(gòu)到注意力機(jī)制,從批處理優(yōu)化到并行計(jì)算,每一個技術(shù)細(xì)節(jié)都蘊(yùn)含著巨大的潛力和創(chuàng)新,也凝結(jié)著人類的工程只會。LLM 推理引擎不僅改變了我們處理語言的方式,還為未來的智能應(yīng)用提供了無限可能。

想想我剛接觸人工智能領(lǐng)域,初次接觸開源模型,初次用開源推理引擎 Serve 一個模型,并向模型問候“你好,你是誰”,自己推理的模型第一次蹦出回復(fù)文本的一瞬,那種興奮感,至今歷歷在目。而在這一波以transformer 模型為代表的人工智能浪潮中,推理引擎的迭代、性能的優(yōu)化,歷經(jīng)兩年也已經(jīng)有了質(zhì)變,僅僅從推理的吞吐量級來看,就早已翻了兩翻以上。這是最波瀾壯闊的人類躍遷的時代,很慶幸我身處其中。LLM 推理引擎的優(yōu)化是一個復(fù)雜且富有挑戰(zhàn)性的領(lǐng)域。通過不斷探索和創(chuàng)新,我們可以期待未來在人工智能領(lǐng)域取得更多突破。

責(zé)任編輯:龐桂玉 來源: 覺察流
相關(guān)推薦

2025-04-24 10:26:40

2024-02-26 07:43:10

大語言模型LLM推理框架

2024-01-15 08:17:00

模型技術(shù)

2025-06-23 08:30:05

2025-05-29 03:00:00

混合推理模型LHRMAI

2025-05-21 13:52:39

LLM模型

2024-07-01 12:54:39

2024-12-09 13:40:26

2023-09-01 15:22:49

人工智能數(shù)據(jù)

2024-04-30 09:48:33

LLMRAG人工智能

2023-10-25 09:00:00

算法Dijkstra算法

2024-03-14 11:06:37

JavaScript引擎探索

2024-09-23 19:53:27

數(shù)據(jù)飛輪數(shù)據(jù)驅(qū)動數(shù)字化轉(zhuǎn)型

2023-05-30 14:17:00

模型推理

2022-06-07 15:33:51

Android優(yōu)化實(shí)踐

2016-12-08 10:57:08

渲染引擎前端優(yōu)化

2025-06-05 11:51:14

NVIDIAProRLLLM

2022-04-28 09:36:47

Redis內(nèi)存結(jié)構(gòu)內(nèi)存管理

2024-09-23 22:43:55

數(shù)據(jù)中臺數(shù)據(jù)飛輪數(shù)據(jù)處理

2025-03-21 13:00:54

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號