大模型的“Tomcat”:一文讀懂AI推理引擎(Inference Engine)

本文已收錄在Github,關注我,緊跟本系列專欄文章,咱們下篇再續(xù)!

  • ?? 魔都架構師 | 全網(wǎng)30W技術追隨者
  • ?? 大廠分布式系統(tǒng)/數(shù)據(jù)中臺實戰(zhàn)專家
  • ?? 主導交易系統(tǒng)百萬級流量調優(yōu) & 車聯(lián)網(wǎng)平臺架構
  • ?? AIGC應用開發(fā)先行者 | 區(qū)塊鏈落地實踐者
  • ?? 以技術驅動創(chuàng)新,我們的征途是改變世界!
  • ?? 實戰(zhàn)干貨:編程嚴選網(wǎng)

1 推理引擎是啥?

從熟悉的“服務器”說起,想象你用Java寫好了一個業(yè)務應用,如訂單處理服務,打成一個JAR或WAR包。這包能直接運行嗎?顯然不能。你需要一個“東西”來運行它:

  • Java應用,這就是JVM。JVM負責解釋執(zhí)行你的Java字節(jié)碼,管理內存,處理線程等等
  • Web應用,你可能還需一個應用服務器,如Tomcat或WebLogic。它在JVM基礎,提供HTTP服務、Servlet容器、連接池等一系列能力,讓你的Web代碼能對外提供服務

現(xiàn)在我們把主角換成大模型。AI科學家們通過海量“學習資料”(數(shù)據(jù))和復雜“學習方法”(訓練算法),最終“畢業(yè)”得到一個成果——模型文件。這個模型文件,好比打包好的order-service.jar,包含龐大網(wǎng)絡結構和數(shù)以百億計的參數(shù)(權重),記錄模型學到的所有“知識”。

這個模型文件能直接響應我們的請求,如回答“今天天氣怎么樣”嗎?同樣不能。它也需要一個“運行環(huán)境”來加載它、管理它、并高效地執(zhí)行它,最終把結果(答案)輸出給我們。

這專門用來運行LLM的“超級應用服務器”,就是——推理引擎 (Inference Engine)。

小結

把訓練好的大模型比作“應用程序包(JAR/WAR)”,推理引擎就是運行這個包的“應用服務器(Tomcat/WebLogic)+ JVM”的組合體。其核心任務,就是讓模型高效、穩(wěn)定、經(jīng)濟地對外提供服務。這過程,在AI領域叫“推理(Inference)”。

2 沒有推理引擎又如何?直接Python跑不行?

Q:我看到很多AI工程師直接用Python+PyTorch/TensorFlow就能加載模型跑,為啥非搞個這么復雜推理引擎?

A:好問題!這就像我們也能用main方法,直接new一個HttpServer啟動一個Web服務,但這能直接上生產(chǎn)?你會遇到:

  • 性能極差: 一個請求就把CPU打滿了,并發(fā)能力幾乎為零
  • 資源浪費: 內存占用巨大,無法精細化管理
  • 功能缺失: 沒有日志、沒有監(jiān)控、沒有高可用、沒有動態(tài)擴縮容

直接用Python框架(如PyTorch)運行模型,就面臨類似問題,而且在AI場景下,這些問題會被指數(shù)級放大:

2.1 “慢”得離譜(高延遲)

業(yè)務場景: 用戶在智能客服里問個問題,等了30秒才看到第一個字蹦出來。

技術原因: 大模型的計算量是天文數(shù)字。一個請求過來,逐層計算,不經(jīng)任何優(yōu)化,就像開著一輛家用小轎車去拉一整火車的貨。

2.2 “吞”得嚇人(低吞吐)

業(yè)務場景: 數(shù)據(jù)中心支撐全集團業(yè)務,現(xiàn)要上線一個基于大模型的報告自動生成功能。結果發(fā)現(xiàn),系統(tǒng)同時只能服務3、5個人,再多請求就全部卡死排隊。

技術原因: 模型會獨占一塊或多塊GPU顯卡,而GPU顯存非常寶貴且昂貴。一個請求就把顯存用完了,其他請求只能干等著。這就像一個只有一個窗口的銀行,辦完一個才能叫下一個。

2.3 “貴”得心疼(高成本)

業(yè)務場景: 為支撐業(yè)務,不得不堆砌大量頂級GPU卡(一張A100/H100幾十萬)。年終匯報時,老板一看電費和硬件采購單,臉都綠了。

技術原因: 資源利用率極低。GPU大部分時間可能在空閑等待,或者顯存被大量浪費?;舜髢r錢買來的“法拉利”,卻一直在市區(qū)里堵著車,油耗還高得驚人。

所以,直接用原生框架跑模型,只適合實驗室里做研究、發(fā)論文。一旦進入生產(chǎn),推理引擎就成了必選項。

3 推理引擎的最佳實踐

推理引擎之所以能解決上述問題,是因為它在“運行”模型這件事,做大量優(yōu)化和工程化工作。

3.1 模型“瘦身術”

就像做Java應用性能優(yōu)化時,會對代碼重構,優(yōu)化數(shù)據(jù)結構,減少不必要的對象創(chuàng)建。

3.1.1 量化 (Quantization)

原始的模型參數(shù)通常32位浮點數(shù)(FP32),精度高但占空間大,計算也慢。量化就是把這些參數(shù)“降級”成16位(FP16/BF16)甚至8位整數(shù)(INT8)。好比把一個需要用double類型存儲的數(shù)字,發(fā)現(xiàn)用float甚至int就夠,精度損失不大,但存儲空間和計算速度大大提升。

3.1.2 剪枝 (Pruning)

科學家發(fā)現(xiàn),模型里很多參數(shù)(神經(jīng)元連接)其實“冗余”,對最終結果影響不大。把這些“細枝末節(jié)”砍掉,進一步減小模型體積。

3.1.3 最佳實踐

場景:你們需要在一個邊緣設備或者性能沒那么強的服務器上部署一個模型,用于內部的文檔識別或人臉識別。

推理引擎咋做:像NVIDIA的TensorRT-LLM、開源的llama.cpp等推理引擎,都內置了強大的量化工具。你只需要把原始的FP32模型丟給它,配置好量化參數(shù)(比如INT8),它就能自動幫你生成一個“瘦身”后的模型。這個新模型體積可能只有原來的1/4,推理速度提升好幾倍,而識別準確率可能只下降了不到1%。對于很多業(yè)務場景來說,這種性價比極高。

3.2 請求“拼車”大法

批處理 (Batching)如數(shù)據(jù)庫操作,我們會把多個單條INSERT合并成一個batch insert,減少網(wǎng)絡和數(shù)據(jù)庫IO開銷。

3.2.1 理論概念

GPU是并行計算神器,它最喜歡“干大事”:一次處理一大批相似任務。若一個一個請求喂給它,就像讓一個128車道高速公路,每次只跑一輛車,巨大浪費。批處理就是把在短時間內收到的多個用戶請求,“攢”成一個大大的批次(Batch),再一次性丟給GPU去計算。

3.2.2 最佳實踐

① 挑戰(zhàn)

簡單的批處理(靜態(tài)批處理)會引入延遲,須等到湊夠一個批次或超時才處理。但用戶請求是動態(tài)到達的,有的長有的短。

② 推理引擎的進化(Continuous Batching)

假設有3個用戶同時請求。

  • 用戶A:請求生成一篇500字短文
  • 用戶B:請求生成一句10個字的詩
  • 用戶C:請求生成一份2000字的報告

傳統(tǒng)方式: 須等最長的C請求(2000字)全部生成完畢,這個批次才算結束。A和B早就生成完了,但它們的GPU資源必須被占用著,干等著,造成巨大的浪費(顯存空泡)。

最佳實踐:vLLM引擎的PagedAttention技術。近兩年最火的優(yōu)化技術了!它的思想借鑒了操作系統(tǒng)的虛擬內存分頁(Paging)。把GPU顯存劃分成一個個固定大小“塊(Block)”,一個請求來了,按需分配塊,而非一次性預分配一個巨大的連續(xù)空間。當用戶B的請求(10個字)生成完畢后,它占用的“塊”會立刻被釋放,并馬上可以分配給新的等待請求。

效果:這種“持續(xù)批處理”或“動態(tài)批處理”技術,將吞吐量提升2-4倍甚至更高!目前業(yè)界頂級的開源推理引擎,如vLLM、HuggingFace TGI (Text Generation Inference)、TensorRT-LLM都將此作為核心能力。作為架構師,在選擇推理引擎技術棧時,支持Continuous Batching是關鍵考量點。

3.3 計算“流水線”

和Java多線程、微服務拆分異曲同工。一個大任務,一個人干不過來,就拆成小任務,多個人/多個服務一起干。

張量并行

TP,Tensor Parallelism。

一個模型的某層(如一個巨大的矩陣乘法)計算量太大,一張GPU卡都扛不住。就把這大矩陣“切”成幾塊,分給多張卡,每張卡算自己那一小塊,最后再把結果合并。好比用Fork/Join框架處理一個大集合。

流水線并行

PP,Pipeline Parallelism。

把模型不同層(Layer)放到不同GPU。如一個模型有80層,1號GPU負責1-20層,2號GPU負責21-40層... 數(shù)據(jù)像在流水線一樣,流過一張張GPU,每張GPU只做自己那部分工作。這完全就是微服務架構的思想,每個GPU就是一個“微服務”。

最佳實踐

場景

部署一個像Llama3-70B(700億參數(shù))巨型模型,單張GPU卡裝不下。

推理引擎咋做?

DeepSpeed Inference、TensorRT-LLM這類引擎,提供成熟分布式推理能力。無需手動實現(xiàn)復雜的卡間通信(All-Reduce、All-Gather等),只需在配置文件中聲明:“我要用4張卡跑這個模型,使用2路張量并行和2路流水線并行”。推理引擎會自動幫你完成模型的切分、部署和協(xié)同工作。

這就屏蔽了底層的分布式計算復雜性,讓你能像管理一個邏輯上的“大GPU”一樣,去管理一個GPU集群。你的關注點,從如何實現(xiàn)并行,變成了如何規(guī)劃并行策略以達到最佳性價比。

4 推理引擎選型

選型通??紤]穩(wěn)定性、社區(qū)活躍度、技術支持和國產(chǎn)化替代等。

4.1 NVIDIA TensorRT-LLM,重量級選手,性能標桿

NVIDIA官方出品,性能優(yōu)化到極致。深度綁定NVIDIA硬件生態(tài),能最大化榨干A100/H100等顯卡的性能。支持前面提到的所有高級優(yōu)化。

適用場景:對性能有極致要求,不差錢,且技術棧以NVIDIA為主的場景。追求業(yè)界SOTA(State-of-the-Art)性能。

類比:像是Oracle數(shù)據(jù)庫,性能強悍,但有廠商鎖定風險。

4.2 vLLM,開源新貴,吞吐量之王

憑借其創(chuàng)新的PagedAttention技術,在吞吐量方面表現(xiàn)極其出色,迅速成為開源社區(qū)的明星項目。易用性好,Python接口友好。

適用場景:高并發(fā)的在線服務場景,如智能客服、AI聊天機器人。希望快速部署,獲得極高吞吐量的首選。

類比:像是Nginx,輕量、高效,專注于解決高并發(fā)問題。

4.3 Hugging Face TGI(Text Generation Inference)社區(qū)寵兒,生態(tài)完善

來自最大的AI開源社區(qū)Hugging Face,對Hugging Face生態(tài)中的海量模型支持最好。功能全面,工程化成熟度高,易于部署和監(jiān)控。

適用場景:需要快速驗證和部署多種不同類型的開源大模型。企業(yè)內部的AI中臺、模型即服務(MaaS)平臺的理想底座。

類比:像是Spring Boot,開箱即用,生態(tài)整合能力強,能快速構建應用。

4.4 國產(chǎn)推理引擎

如TNN, MindSpore Lite等。

特點: 國內廠商(如騰訊、華為)主導,更側重于國產(chǎn)芯片(如昇騰、寒武紀)的適配和優(yōu)化,在信創(chuàng)和國產(chǎn)化替代方面有天然優(yōu)勢。

適用場景: 國企中對軟硬件自主可控有強要求的項目。

類比: 像是TongWeb、Kingdee,在特定政策和生態(tài)環(huán)境下是必然選擇。

4.5 建議

  • 初次接觸和探索的項目,強烈推薦 vLLMHugging Face TGI 入手。都提供Docker鏡像,方便在現(xiàn)有數(shù)據(jù)中心K8s集群拉起一個服務??梢韵癫渴鹨粋€普通的Java微服務一樣,通過RESTful API或gRPC來調用它,無縫集成到現(xiàn)有的Java技術棧中
  • 核心業(yè)務和性能要求極高的場景,可深入研究 TensorRT-LLM,它能帶來極致的性能回報
  • 務必關注信創(chuàng)和國產(chǎn)化要求,提前了解和測試國產(chǎn)推理框架與硬件結合方案

5 總結

跳出繁雜技術細節(jié),站在架構師高度審視:

  • 它是一種資源虛擬化和池化技術: 它將昂貴、稀缺的GPU計算資源,通過批處理、并行計算等技術,池化成一個可以被多個業(yè)務方高效共享的服務。這與我們用K8s管理CPU和內存資源,用數(shù)據(jù)庫連接池管理數(shù)據(jù)庫連接,在思想上是完全一致的。
  • 它是一個標準的“中間件”: 它解決了大模型這個“特殊應用”在生產(chǎn)環(huán)境運行時的通用問題(性能、并發(fā)、穩(wěn)定性),將AI研究人員和我們業(yè)務開發(fā)人員解耦。研究員專注于模型算法,我們專注于業(yè)務邏輯和系統(tǒng)集成,大家各司其職。
  • 它是未來AI應用的核心基礎設施: 就像JVM之于Java,K8s之于云原生,推理引擎將成為企業(yè)“AI中臺”或“MaaS平臺”不可或缺的基石。

雖無需直接寫CUDA,不直接研究Attention機制,但理解推理引擎的原理、價值和選型策略,將是我們在AI時代保持核心競爭力的關鍵。它能幫助我們更好地規(guī)劃企業(yè)級的AI基礎設施,設計出更健壯、更高效、更具擴展性的AI賦能業(yè)務系統(tǒng)。

希望本文幫你把“推理引擎”這個概念,從一個模糊的術語,變成一個你工具箱里清晰的、可以評估和使用的架構組件!

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容