第 10 章 — LLM 引擎層

發佈於: 2026-05-02 最後更新於: 2026-07-08 版本: 1
第 10 章 — LLM 引擎層

第 10 章 — LLM 引擎層

LLM Primer VI:擴展 AI 系統》章節走讀的第十篇。這一章替引擎與平台之間的界線命名,並走過 2026 年主宰那一層的五個引擎。


這一章為什麼存在

第 1 到 9 章走過了單一次前向傳遞會觸及的機械:自回歸迴圈、KV 快取、GPU 底層、把它縮小的量化、把它閒置時間藏起來的批次處理、以及打破它循序依賴的推測解碼。這些沒有任何一項是 pip install 就能忘掉的函式庫。有人把它們拼進一個單節點執行期裡,那個執行期包住一顆模型、擁有 KV 快取、把請求排進一個連續批次、對外提供推論 API。那個執行期就是引擎。第 10 章替引擎層的職責命名、把它跟平台層(第 11 章)區分開來,並走過在同一份工作上做出不同機械取捨的五個引擎 — vLLM、TensorRT-LLM、SGLang、TGI、Ollama。

一句話總結:一個引擎在一個行程裡用一或幾顆 GPU 跑一顆模型;它不做認證、不做負載平衡、不做多模型串接、不做自動擴縮 — 那些是平台的事,引擎靠把它狹窄的職責做好而勝出。

10.1 vLLM 是 Python 原生的預設

大多數生產團隊第一個伸手該拿的引擎是 vLLM,因為在初學者不知道該怎麼想的每一個維度上,它都做出了對的預設決定,而且是用 Python 做的。PagedAttention 讓碎裂化從 60 到 80% 掉到個位數,大約在同一顆 GPU 上讓可達批次翻一倍。連續批次自然地疊上去,chunked prefill 把 prefill 與 decode 工作混在同一次迭代裡,兩者之間的界線不再是死時間。從 block table 的設計裡自然衍生出免費的 copy-on-write 前綴共享。介面真的是幾行程式碼就能做到離線批次或 OpenAI 相容的 HTTP,而且每個新的模型架構因為社群夠廣,都很快就會落地。當運維者沒有特別理由挑別的東西時,這就是可以拿來標準化的引擎。

10.2 TensorRT-LLM 用建置管線買吞吐量

TensorRT-LLM 的訴求很狹窄。如果機群清一色 NVIDIA、每個百分點的每美元吞吐量都算、而且團隊願意付一份工程稅去替每個硬體世代編譯模型專屬的 engine 檔案,TRT-LLM 在同一顆硬體上比 vLLM 多榨 15 到 35% 的吞吐量。機制在 kernel 層級:把 transformer 圖降到 NVIDIA 專用 IR、融合相鄰 kernel(把 layernorm + matmul + activation 融進一次啟動)、從一組預先調校過的 kernel 庫裡替每個形狀挑最佳、產生一份序列化 engine、在 Triton Inference Server 底下跑。融合很重要,因為 kernel 啟動開銷每次 5 到 10 μs,天真的 70B 前向傳遞每個 token 就會派出好幾千個。稅則是建置管線本身 — 每個模型、每個 GPU、每個批次區間都要編譯,大多數團隊低估了這個維運成本。SGLang 是另一種特化:RadixAttention 把引擎看過的每一段前綴 KV 存進 radix tree,所以兩個共用 k 個 token 前綴的請求會在跨批次與跨時間之間精確共用那 k 個 token 的 KV。在有長共用系統提示詞、短變體後綴的代理式工作量上,SGLang 比 vLLM 的吞吐量高 2 到 6 倍,而且它的結構化輸出 DSL 在 logit 層強制執行 JSON schema,輸出必然通過驗證。

10.3 決策樹走的是工作量形狀,不是頭條吞吐量

五個引擎在一棵小決策樹上分出去。開發者筆電或帶著混合加速器的邊緣 → Ollama。生產 GPU 機群、清一色 NVIDIA、高 QPS、吞吐量的 ROI 抵得住建置管線 → TensorRT-LLM。混合硬體或頻繁換模型,工作量以前綴為主的結構化樣式為多數(代理、工具呼叫、長共用提示詞)→ SGLang。混合硬體、一般聊天工作量、深度整合 Hugging Face → TGI。其他都是 → vLLM。這個決定不是永久的:引擎在 API 邊界上可以互換 — 都講 OpenAI 風格的 HTTP — 所以平台層的路由器可以隨著模型、工作量、或區域轉移流量,不用改客戶端程式碼。許多生產堆疊同時跑兩三個引擎。小心頭條跑分:「Llama-2-7B 在批次 1 的 tokens per second」回答的是任何生產工作量都不會問的問題。用你自己的模型、自己的提示詞分布、自己的並行輪廓來跑 — 花半天,省好幾個月。

值得記住:引擎層的邊界是「一顆模型、一個行程、一或幾顆 GPU」。當需求成長到「兩個引擎在一台負載平衡器後面」、「多模型管線」、「配額系統」、「自動擴縮」的時候,引擎就已經用光答案了,平台接手。

第 10 章鋪陳出來的東西

這一章描述的每個引擎都停在同一條邊界上。它懂 kernel、KV 區塊、連續批次;它不懂副本、租戶、串接、認證。第 11 章走過處理這些關心的平台層 — Ray Serve、KServe、BentoML、Triton Inference Server — 並顯示這項選擇更多不是關於功能,而是關於哪一種維運模式對得上團隊既有的基礎設施與能力。


下一篇 — 第 11 章:平台與編排層Ray Serve、KServe、BentoML、Triton — 站在引擎之上的四個平台,以維運文化契合度來挑。

想看完整的全貌?書中章節包含可執行的 vLLM 離線與伺服呼叫、trtllm-build 管線、SGLang RadixAttention 說明、TGI 的 Docker 啟動與 Ollama 的單一二進位故事,以及文章摘要過的決策框架細節。在 Amazon 查看 LLM Primer VI →

下田 昌平
下田 昌平
RECEIPTROLLER 的 CTO 與創辦人。專注於數據、驅動創新、始終保持好奇心。