解鎖高并發LLM推理:動態批處理、令牌流和使用vLLM的KV緩存秘密

網羅開發(小紅書、快手、視頻號同名)

??大家好,我是 展菲,目前在上市企業從事人工智能項目研發管理工作,平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術,包括iOS、前端、Harmony OS、Java、Python等方向。在移動端開發、鴻蒙開發、物聯網、嵌入式、云原生、開源等領域有深厚造詣。

圖書作者:《ESP32-C3 物聯網工程開發實戰》
圖書作者:《SwiftUI 入門,進階與實戰》
超級個體:COC上海社區主理人
特約講師:大學講師,谷歌亞馬遜分享嘉賓
科技博主:華為HDE/HDG

我的博客內容涵蓋廣泛,主要分享技術教程、Bug解決方案、開發工具使用、前沿科技資訊、產品評測與使用體驗。我特別關注云服務產品評測、AI 產品對比、開發板性能測試以及技術報告,同時也會提供產品優缺點分析、橫向對比,并分享技術沙龍與行業大會的參會體驗。我的目標是為讀者提供有深度、有實用價值的技術洞察與分析。

展菲:您的前沿技術領航員
👋 大家好,我是展菲!
📱 全網搜索“展菲”,即可縱覽我在各大平臺的知識足跡。
📣 公眾號“Swift社區”,每周定時推送干貨滿滿的技術長文,從新興框架的剖析到運維實戰的復盤,助您技術進階之路暢通無阻。
💬 微信端添加好友“fzhanfei”,與我直接交流,不管是項目瓶頸的求助,還是行業趨勢的探討,隨時暢所欲言。
📅 最新動態:2025 年 3 月 17 日
快來加入技術社區,一起挖掘技術的無限潛能,攜手邁向數字化新征程!


文章目錄

    • 摘要
    • 引言
    • 用 vLLM 搭建高效并發推理服務
      • 什么是動態批量合并?為什么它很重要?
      • Token 流式輸出:為什么不能等所有 Token 生成完再返回?
    • 實戰代碼示例:用 vLLM 搭建一個并發推理服務
      • 環境準備
      • Inference 服務代碼
      • 代碼解讀:
    • 應用場景示例 1:實時對話平臺
    • 應用場景示例 2:文檔摘要 API 服務
    • QA 問答環節
    • 總結

摘要

隨著 AI 應用從實驗室走向真實世界,服務端的高效并發推理成了一道繞不開的坎。大語言模型(LLM)計算量巨大,逐個請求處理顯然不現實。像 動態批量合并(Dynamic Batching)Token 流式輸出(ChatGPT 式響應)KV Cache 管理 這些技術,正是讓大模型推理服務化落地的關鍵。

vLLM 作為代表性的推理框架,把這些能力整合在一起,幫助開發者實現高吞吐、低延遲的并發推理。本文將結合實戰代碼,帶你搭建一個能真正并發高效響應的推理服務。

引言

大家平時用 ChatGPT,看到的效果是邊打字邊出字,像是 AI 正在“思考”。但實際上,后臺有成千上萬個用戶在同時發起請求,共享著有限的算力資源。

如果簡單粗暴地“一人一張 GPU”,不光燒錢,連資源都撐不住。這時候,就需要 動態批量合并(Dynamic Batching)KV Cache 復用(Cache Reuse) 出馬了。

vLLM 就是專門為這種高并發場景做優化的框架,它不僅能動態合批,還能在批次中靈活插入新請求、移除完成的請求,讓算力利用率拉滿。

本文將會詳細講解:

  1. 并發推理為什么離不開批量合并?
  2. Token 流式輸出對服務架構有啥挑戰?
  3. KV Cache 如何幫我們省下大把算力?
  4. vLLM + FastAPI,手把手帶你搭一個并發推理服務。

而且每個環節都會配上實戰代碼,寫出來就能跑。

用 vLLM 搭建高效并發推理服務

什么是動態批量合并?為什么它很重要?

設想下:你有 100 個用戶同時發起生成請求。如果一條條慢慢跑,不光慢,還浪費 GPU 算力。

大模型是矩陣乘法專家,最擅長一鍋端(批量處理)。但現實中用戶請求來的時間點、需求長度都不一樣,怎么湊夠一個完整 batch 呢?

動態批量合并(Dynamic Batching) 就是動態湊批次,來了就塞進 batch,保證響應及時,又能吃滿算力。

vLLM 在這個基礎上,還做了 Token Swapping 優化:一個 batch 里,誰先跑完就被踢出去,新的請求隨時能頂上,不浪費 Cache,不重新算,真正做到批次動態變化、GPU 一刻不停。

Token 流式輸出:為什么不能等所有 Token 生成完再返回?

普通推理服務通常是“結果算完再發回去”,但像 ChatGPT 這種對話類應用,必須一邊生成一邊發回去(Token Streaming),否則體驗很糟糕。

流式輸出面臨的挑戰:

  • 用戶感知的延遲必須低。
  • 服務端還要合批提高效率。
  • 每個用戶生成的 token 數量不同,流式拆分難度大。

vLLM 在引擎內部實現了 連續解碼(Continuous Decoding),在批量推理的同時,把每個用戶的 token 單獨分流回去,實現低延遲的 token 流式輸出體驗。

實戰代碼示例:用 vLLM 搭建一個并發推理服務

環境準備

pip install vllm fastapi uvicorn

Inference 服務代碼

from fastapi import FastAPI, WebSocket
from vllm import LLM, SamplingParams
import asyncioapp = FastAPI()
llm_engine = LLM(model="facebook/opt-1.3b")  # 可替換為任意支持的模型@app.websocket("/chat")
async def chat_websocket(websocket: WebSocket):await websocket.accept()user_prompt = await websocket.receive_text()sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=128)# 啟動流式生成任務async for output in llm_engine.generate(user_prompt, sampling_params, stream=True):token = output.outputs[0].textawait websocket.send_text(token)await websocket.close()

代碼解讀:

  • 用戶通過 WebSocket 連接 /chat
  • 接收到用戶 prompt 后,啟動 vLLM 的流式生成。
  • 每生成一個 token,就通過 WebSocket 立即發回給用戶。
  • 多個用戶同時訪問時,vLLM 會自動做批量合并和 KV Cache 復用。

應用場景示例 1:實時對話平臺

假設你正在做一個 Chatbot 平臺,需要同時服務成千上萬的用戶,每個響應都要求實時流式返回。

解決方案:

  • 后端用 vLLM 部署 LLM 推理服務。
  • 前端 WebSocket 接 token 流式輸出。
  • 動態批量策略根據流量自動調整 batch size。
  • KV Cache 復用減少重復計算,提升吞吐。

應用場景示例 2:文檔摘要 API 服務

一個文檔摘要 API 接口,用戶請求不穩定,高峰低谷交替,單個請求計算量較大。

解決方案:

  • vLLM 動態批量將多個文檔摘要請求合批處理。
  • 流式返回每個摘要片段,用戶邊看邊收。
  • 監控隊列延遲,根據請求密度動態調整 batch 合并策略。

QA 問答環節

Q1:vLLM 支持多大的模型?
可以支持 13B 以上的模型,但需要多卡配合,vLLM 在 KV Cache 管理上做了極致優化,可以在硬件條件允許下最大化模型載入。

Q2:KV Cache 在并發推理中有啥作用?
KV Cache 會保存模型前面 token 的注意力結果,后續生成新 token 時不用重復計算,尤其在多用戶動態合批時,Cache 復用能極大提升效率。

Q3:batch 中如果有用戶提前生成完成,其他用戶會受影響嗎?
不會。vLLM 的 Token Swapping 機制會把完成的請求踢出 batch,同時把新的請求無縫插入,batch 動態變換,后續請求不受影響。

Q4:可以自定義合批調度策略嗎?
vLLM 提供了部分批量策略參數調節,如果有更復雜的需求,也可以通過修改源碼實現自定義調度邏輯。

總結

做 LLM 服務,GPU 不是越堆越多就能解決問題。動態批量、流式返回、KV Cache 復用 是三大核心優化手段,真正讓并發推理跑得快、跑得穩。

vLLM 把這些復雜度封裝起來,讓開發者用幾行代碼就能搭出一個高效的推理服務。無論是做 Chatbot、摘要 API,還是文檔問答系統,這些優化都是必備武器。

掌握好這些技巧,才能在有限資源下跑出最好的用戶體驗。

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

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

相關文章

跨域場景下的Iframe事件監聽

背景在當前window窗口,對于一些浮窗組件,一般需要點擊當前window下的其他位置才能夠隱藏浮窗。但如果當前窗口中存在iframe區域,那么由于一些特殊的性質,無法通過常規的click點擊事件監聽iframe元素的點擊,而通過conte…

零知識證明入門應用指南:原理與Python實踐

目錄 零知識證明入門應用指南:原理與Python實踐 1. 引言:隱私計算的革命 2. 零知識證明基礎原理 2.1 數學基礎:離散對數問題 2.2 基本協議流程 2.3 核心概念 3. Schnorr協議:經典ZKP實現 3.1 協議數學描述 3.2 Python實現 4. 非交互式證明:Fiat-Shamir變換 4.1 原理 4.2 P…

PyTorch中三角函數與特殊運算詳解和實戰場景示例

在 PyTorch 中,三角函數(如 sin, cos, tan 等)和一些特殊數學運算(如雙曲函數、反三角函數、hypot, atan2, clamp, lerp, sigmoid, softplus, special 模塊等)被廣泛用于科學計算、機器學習、深度學習中的前向推理或梯…

論文閱讀: Mobile Edge Intelligence for Large LanguageModels: A Contemporary Survey

地址:Mobile Edge Intelligence for Large Language Models: A Contemporary Survey 摘要 設備端大型語言模型(LLMs)指在邊緣設備上運行 LLMs,與云端模式相比,其成本效益更高、延遲更低且更能保護隱私,因…

JavaWeb(蒼穹外賣)--學習筆記17(Websocket)

前言 本篇文章是學習B站黑馬程序員蒼穹外賣的學習筆記📑。我的學習路線是Java基礎語法-JavaWeb-做項目,管理端的功能學習完之后,就進入到了用戶端微信小程序的開發,🙌用戶下單并且支付成功后,需要第一時間通…

WebForms 簡介

WebForms 簡介 概述 WebForms 是微軟公司推出的一種用于構建動態網頁和應用程序的技術。自 2002 年推出以來,WebForms 成為 ASP.NET 技術棧中重要的組成部分。它允許開發者以類似于桌面應用程序的方式創建交互式網頁,極大地提高了 Web 開發的效率和體驗。 WebForms 的工作…

vsCode軟件中JS文件中啟用Emmet語法支持(React),外加安裝兩個常用插件

1.點擊vsCode軟件中的設置(就是那個齒輪圖標),如下圖2.在搜索框中輸入emmet,然后點擊添加項,填寫以下值:項:javascript 值:javascriptreact。如下圖3.可以安裝兩個常用插件&#xf…

【第2話:基礎知識】 自動駕駛中的世界坐標系、車輛坐標系、相機坐標系、像素坐標系概念及相互間的轉換公式推導

自動駕駛中的坐標系概念及相互間的轉換公式推導 在自動駕駛系統中,多個坐標系用于描述車輛、傳感器和環境的相對位置。這些坐標系之間的轉換是實現定位、感知和控制的關鍵。下面我將逐步解釋常見坐標系的概念,并推導相互轉換的公式。推導基于標準幾何變換…

深度拆解Dify:開源LLM開發平臺的架構密碼與技術突圍

注:此文章內容均節選自充電了么創始人,CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》(跟我一起學人工智能)【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

tomcat處理請求流程

1.瀏覽器在請求一個servlet時,會按照HTTP協議構造一個HTTP請求,通過Socket連接發送給Tomcat. 2.Tomcat通過不同的IO模型接收到Socket的字節流數據。 3.接收到數據后,按照HTTP協議解析字節流,得到HttpServletRequest對象 4.通過HttpServletRequest對象,也就是請求信息,找到該請求…

【音視頻】WebRTC 一對一通話-信令服

一、服務器配置 服務器在Ubuntu下搭建,使用C語言實現,由于需要使用WebSocket和前端通訊,同時需要解析JSON格式,因此引入了第三方庫:WebSocketpp和nlonlohmann,這兩個庫的具體配置方式可以參考我之前的博客…

Spring(以 Spring Boot 為核心)與 JDK、Maven、MyBatis-Plus、Tomcat 的版本對應關系及關鍵注意事項

以下是 Spring(以 Spring Boot 為核心)與 JDK、Maven、MyBatis-Plus、Tomcat 的版本對應關系及關鍵注意事項,基于最新技術生態整理: 一、Spring Boot 與 JDK 版本對應 Spring Boot 2.x 系列 最低要求:JDK 1.8推薦版本…

03-基于深度學習的鋼鐵缺陷檢測-yolo11-彩色版界面

目錄 項目介紹🎯 功能展示🌟 一、環境安裝🎆 環境配置說明📘 安裝指南說明🎥 環境安裝教學視頻 🌟 二、系統環境(框架/依賴庫)說明🧱 系統環境與依賴配置說明&#x1f4c…

24. 前端-js框架-Vue

文章目錄前言一、Vue介紹1. 學習導圖2. 特點3. 安裝1. 方式一:獨立版本2. 方式二:CDN方法3. 方式三:NPM方法(推薦使用)4. 搭建Vue的開發環境(大綱)5. 工程結構6. 安裝依賴資源7. 運行項目8. Vue…

Spring 的依賴注入DI是什么?

口語化答案好的,面試官,依賴注入(Dependency Injection,簡稱DI)是Spring框架實現控制反轉(IoC)的主要手段。DI的核心思想是將對象的依賴關系從對象內部抽離出來,通過外部注入的方式提…

匯川PLC通過ModbusTCP轉Profinet網關連接西門子PLC配置案例

本案例是匯川的PLC通過開疆智能研發的ModbusTCP轉Profient網關讀寫西門子1200PLC中的數據。匯川PLC作為ModbusTCP的客戶端網關作為服務器,在Profinet一側網關作為從站接收1200PLC的數據并轉成ModbusTCP協議被匯川PLC讀取。配置過程:匯川PLC配置Modbus TC…

【計組】數據的表示與運算

機器數與真值機器數真值編碼原碼特點表示范圍求真值方法反碼特點補碼特點表示范圍求真值方法移碼特點表示范圍求真值方法相互轉換原碼<->補碼補碼<->移碼原碼<->反碼反碼<->補碼移位左移右移邏輯右移算術右移符號擴展零擴展整數小數符號擴展運算器部件…

視頻水印技術中的變換域嵌入方法對比分析

1. 引言 隨著數字視頻技術的快速發展和網絡傳輸的普及,視頻內容的版權保護問題日益突出。視頻水印技術作為一種有效的版權保護手段,通過在視頻中嵌入不可見或半可見的標識信息,實現對視頻內容的所有權認證、完整性驗證和盜版追蹤。在視頻水印技術的發展歷程中,變換域水印因…

電動汽車電池管理系統設計與實現

電動汽車電池管理系統設計與實現 1. 引言 電動汽車電池管理系統(BMS)是確保電池組安全、高效運行的關鍵組件。本文將詳細介紹一個完整的BMS系統的MATLAB實現,包括狀態估計(SOC/SOH)、參數監測、電池平衡和保護功能。系統設計為模塊化結構,便于擴展和參數調整。 2. 系統架構…

JVM(Java Virtual Machine,Java 虛擬機)超詳細總結

一、JVM的基礎概念1、概述JVM是 Java 程序的運行基礎環境&#xff0c;是 Java 語言實現 “一次編寫&#xff0c;到處運行” &#xff08;"write once , run anywhere. "&#xff09;特性的關鍵組件&#xff0c;具體從以下幾個方面來理解&#xff1a;概念層面JVM 是一…