大語言模型推理系統綜述

摘要
近年來,隨著 ChatGPT 等服務推動大語言模型(LLM)的快速普及,一批專門面向 LLM 推理的系統相繼涌現,如 vLLM、SGLang、Mooncake 和?DeepFlow。這些系統設計工作的核心動因是 LLM 請求處理過程中所特有的自回歸特性,該特性促使研究者提出多種新技術,以在應對高吞吐量與高并發負載的同時,兼顧推理性能與結果質量。盡管相關技術在文獻中已有廣泛討論,但尚未在完整推理系統的框架下進行系統性分析,現有系統之間也缺乏深入的對比與評估。

本綜述系統梳理了上述技術,內容涵蓋從請求處理所涉及的算子與算法出發,逐步延伸至模型優化與執行相關技術(包括算子內核設計、批處理機制與調度策略),最后探討內存管理方面的方法,例如分頁內存、淘汰與卸載策略、量化和緩存持久化。通過上述分析,我們指出這些技術在本質上依賴于負載預測、自適應機制與成本優化,以克服自回歸生成所帶來的挑戰,并實現系統設計目標。隨后,我們進一步探討了如何將這些技術組合構建單副本與多副本推理系統,其中包括資源解耦型推理系統(disaggregated inference systems),它們可實現更靈活的資源分配,以及可部署于共享硬件基礎設施上的無服務器系統(serverless systems)。最后,我們討論了該領域仍然面臨的若干關鍵挑戰。

1 引言
自從序列生成任務從循環神經網絡(RNN)轉向 Transformer 架構以來 [97],大語言模型(LLM)的質量已顯著提升,使其能夠勝任各類任務,包括通用交互式問答 [9]、文檔摘要與分類 [96]、語言翻譯 [27]、代碼生成 [16]、數據整理 [72] 以及非結構化數據分析 [100]。這一技術突破推動了 LLM 在工業界和消費市場的指數級增長,ChatGPT、Gemini、Claude、Grok、Kimi 和 DeepSeek 等服務的迅速普及也對高性能模型服務系統提出了更高要求。

為了滿足這一需求,研究者開發了專門的 LLM 推理系統,用于管理模型執行的各個方面。這不僅包括基本的 LLM 推理流程,還涵蓋系統層面的負載均衡、任務批處理、調度策略以及內存管理等,借鑒了早期高吞吐量、高速數據處理系統的設計經驗。然而,由于基于 Transformer 的 LLM 推理具有自回歸生成這一獨特特性,導致上述各方面均需采用新技術進行改造。

與傳統數據處理系統通過單次執行一系列算子完成請求處理不同,LLM 推理通常需要多輪執行,次數與輸出長度成正比。每個請求的輸入形式都是文本字符串,輸出長度則以非確定性的方式依賴于文本內容。由于用戶可以輸入任意內容,幾乎無法定義“典型”的輸出長度,因此請求處理成本(尤其是內存成本)在不同請求之間可能出現極大差異,即使它們的輸入表面上相似1。

這種輸出的根本非確定性為 LLM 推理系統帶來了三大關鍵挑戰:(1)盡管近期取得了顯著進展,但模型輸出的質量(即輸出是否滿足請求表達的任務目標)仍無法保證,因為其生成過程基于隨機采樣而非確定性數據構建;(2)執行輪數的不確定性使得每個請求的最終內存使用量難以預估,給多請求并發處理帶來分配難題;(3)同樣地,請求處理所需時間也不可預知,因此在設計批處理與調度策略時,必須考慮如何避免“拖后腿請求”(straggler)與“隊頭阻塞”(head-of-line blocking)等問題。

為應對上述挑戰,LLM 推理系統采用了一系列貫穿前端與運行時的技術策略,如圖 1 所示。為了提升推理質量,系統支持包括 beam search、思維樹(Tree-of-Thoughts)、思維圖(Graph-of-Thoughts)與自一致性(self-consistency)等多種序列生成方法(圖 1(c)),還結合多種提示工程技巧。同時,前端設計也趨于多樣化,以簡化用戶交互流程(圖 1(a)),支持如自動提示優化與受控輸出生成(圖 1(b))等功能,從而減輕提示設計與流程協調的負擔。

為了適應動態內存需求,推理系統使用基于頁的塊式內存分配策略,輔以緩存持久化與量化技術,以降低整體內存消耗(圖 1(g))。而面對動態請求生命周期,系統依賴基于負載預測機制的動態任務調度、動態批處理與靈活負載均衡策略(圖 1(d, e)),并通過專用算子與高效內核實現來降低總體推理成本(圖 1(f, h))。

本綜述將在一個完整推理系統的框架下系統性地討論這些技術。在第 2 節中,我們介紹實現高質量 LLM 推理所需的基本算子與序列生成算法;第 3 節聚焦批處理與調度技術,以及面向專用硬件的高效內核設計;第 4 節則討論內存管理策略,包括頁式內存、支持請求搶占與長上下文的淘汰與卸載機制、量化方法,以及緩存持久化與重建技術。隨后在第 5 節,我們探討如何將上述技術整合,構建當前主流的 LLM 推理系統,包括部署單個模型副本的系統與支持多副本請求調度的系統,后者特別適用于構建具備資源解耦能力的系統架構,可更靈活地進行硬件資源分配。

相關綜述工作
雖然已有一些綜述涵蓋文中提及的部分技術,但多數研究是在缺乏完整系統框架的前提下對這些技術進行孤立討論。例如,[47, 54, 116, 139] 涉及稀疏注意力、專家混合(MoE)、解碼策略、KV 緩存管理和量化技術等,但均未將其置于系統整體架構中加以討論。[55] 從 KV 緩存管理的角度對若干技術進行了分類總結。[15] 等則主要關注模型架構方面,如模型剪枝、知識蒸餾與量化等優化技術。[48] 更專注于提升推理質量的方法。因此,本文的獨特貢獻在于將這些技術系統化地整合進完整推理系統設計中,并探討它們在實際部署中的協同作用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87144.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87144.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87144.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用Firecrawl輕松獲取網站數據,提升AI應用的效率!

🔥 Firecrawl:助力AI應用的強大工具! 在數字化信息爆炸的時代,如何高效地從海量網頁中提取有用數據變得尤其重要。Firecrawl的問世,為我們揭開了一種便捷的方法來應對這一挑戰。它不僅能夠將整個網站的數據轉化為適用…

【王陽明代數講義】谷歌編程智能體Gemini CLI 使用指南、架構詳解與核心框架分析

Gemini CLI 使用指南、架構詳解與核心框架分析 Gemini CLI 使用指南、架構詳解與核心框架分析Gemini CLI 使用指南Gemini CLI 架構詳解Gemini CLI 核心框架總結 Gemini CLI 使用指南、架構詳解與核心框架分析 Gemini CLI 使用指南 1. 安裝與配置 環境要求: Node.…

camera調試:安卓添加xml注冊

對接安卓的平臺時,需要注冊對應的camera設備,供安卓標準api進行操作,rk的平臺需要在HAL層配置camera3_profiles.xml文件,適配驅動的信息,進行注冊camera設備。該xml對應的內容很多,很多CTS測試問題都是該文…

使用 Ansys Discovery 為初學者準備幾何結構

介紹 設計幾何體通常會包含一些特征,使其無法直接導入我們的仿真工具,例如 Ansys Mechanical、LS-DYNA、Fluent 等。有些干擾或錯位雖然適合制造,但在我們的仿真工具中卻會造成問題。有時,一些小特征(例如孔或圓角&am…

推客系統全棧開發指南:從架構設計到商業化落地

一、推客系統概述 推客系統(TuiKe System)是一種結合社交網絡與內容分發的創新型平臺,旨在通過用戶間的相互推薦機制實現內容的高效傳播。這類系統通常包含用戶關系管理、內容發布、智能推薦、數據分析等核心模塊,廣泛應用于電商…

大數據開發實戰:如何做企業級的數據服務產品

1.背景 數據服務通常以解決方案的形式進行組織,面向一個應用場景的所有數據需求或數據內容可以通過一個解決方案進行封裝,統一對外服務。一個數據需求或數據接口以一個數據服務實例的形式存在于解決方案之下。 下游消費方可以通過統一API進行數據消費&…

基于IndexTTS的零樣本語音合成

IndexTTS 項目采用模塊化設計,將 BPE 文本編碼、GPT 單元預測、dVAE 語音特征抽取和 BigVGAN 音頻生成串聯為完整的語音合成流程。系統通過統一的配置文件和模型目錄規范,實現高效的文本到語音轉換,支持命令行與 Web 界面雙模式操作&#xff…

基于go-zero的短鏈生成系統

go-zero框架 gozero(又稱go-zero)是一款由知名開發者kevwan設計的Golang微服務框架,專注于高性能、低延遲和易用性。其核心目標是簡化分布式系統的開發,提供開箱即用的工具鏈,涵蓋API網關、RPC服務、緩存管理、數據庫…

Linux-修改線上MariaDB服務端口號

準備工作(很重要!!!): 提前做好Linux服務器快照 提前做好數據庫數據備份 1. 修改配置文件 首先,我們需要找到MariaDB的配置文件。通常情況下,這個文件位于以下位置:…

Spring Cloud 微服務(負載均衡策略深度解析)

📌 摘要 在微服務架構中,負載均衡是實現高可用、高性能服務調用的關鍵機制之一。Spring Cloud 提供了基于客戶端的負載均衡組件 Ribbon,結合 Feign 和 OpenFeign,實現了服務間的智能路由與流量分配。 本文將深入講解 Spring Clo…

HTML/CSS基礎

1.html:超文本標記語言。它是一種標識性的語言,非編程語言,不能使用邏輯運算。通過標簽將網絡上的文本格式進行統一,使用分散網絡資源鏈接為一個邏輯整體,屬于標記語言。 超文本:就是指頁面內可以包含圖片&#xff0…

C# 事件驅動編程的核心:深度解析發布者_訂閱者模式

適用場景:GUI交互、消息隊列、微服務通信等需要解耦事件生產與消費的系統 🧩 模式核心組件解析 發布者(Publisher) 作用:定義事件并管理訂閱者列表關鍵行為: 提供和-運算符注冊/注銷訂閱者通過Invoke()方…

華為云Flexus+DeepSeek征文 | 從零開始搭建Dify-LLM應用開發平臺:華為云全流程單機部署實戰教程

華為云FlexusDeepSeek征文 | 從零開始搭建Dify-LLM應用開發平臺:華為云全流程單機部署實戰教程 前言一、華為云Dify-LLM平臺介紹1. Dify-LLM解決方案簡介2. Dify-LLM解決方案地址3. Dify-LLM單機架構介紹4. 預估成本說明 二、華為云Maas平臺介紹1. 華為云ModelArts …

oracle集合三嵌套表(Nested Table)學習

嵌套表 嵌套表(Nested Table)是Oracle中的一種集合數據類型,它允許在表中存儲多值屬性,類似于在表中嵌套另一個表。 嵌套表具有以下特點: 是Oracle對象關系特性的一部分 可以看作是一維數組,沒有最大元素數量限制 存儲在單獨…

Python學習之——單例模式

Python學習之——單例模式 參考1 利用__metaclass__實現單例super的用法class Singleton(type)元類 2 重載__new__方法實現單例模式3 利用裝飾器實現單例考慮一個類如果繼承一個單例類的問題 參考 python之metaclasssingleton(一) python之metaclasssin…

【Linux】U-boot常用命令總結

U-Boot 是嵌入式系統中常用的引導加載程序(bootloader),它提供了一套命令行接口,用于調試、加載操作系統鏡像以及進行硬件測試等操作。 1、變量操作命令 這些命令用于管理 U-Boot 的環境變量。 命令功能說明setenv name value設…

【Linux】不小心又創建了一個root權限賬戶,怎么將它刪除?!

一.前言 今天在學習linux提權的時候,把新建的一個普通賬戶權限提升成了root, 當我練習完提權,想要把這個賬戶刪掉的時候。 發現… 好家伙,這個根本刪不掉 隨后試了各種各樣的方法,都不行,后來突然想到是否…

數據結構:數組(Array)

目錄 什么是數組(Array)? 🔍為什么數組的下標要從 0 開始? 一、內存地址與偏移量的關系:從 0 開始是最自然的映射 二、指針的起點就是第 0 個元素的地址 三、歷史原因:BCPL → B → C → …

視頻內存太大怎么壓縮變小一點?視頻壓縮的常用方法

視頻傳生活或者工作中很常見,如發送視頻郵件、在線視頻播放、視頻上傳下載等。未壓縮的大內存視頻文件傳輸時,不僅會消耗大量的網絡帶寬資源,還會使傳輸時間大幅增加。在網速有限的情況下,發送一個幾 GB 的未壓縮視頻可能需要數小…

性能測試包括哪些方面?要掌握哪些知識

性能測試是軟件測試中的一個重要方面,它主要關注軟件在不同條件下的穩定性、可靠性和性能表現。性能測試包括多個方面,需要掌握的知識也相對廣泛。以下是對性能測試包括的方面以及需要掌握的知識分析: 一、性能測試包括的方面 響應時間&…