自動調優 vLLM 服務器參數(實戰指南)

1. 操作步驟

  • 該腳本能夠自動搜索最優的vLLM服務器參數組合(包括max-num-seqs和max-num-batched-tokens),在滿足端到端延遲和前綴緩存命中率等要求的同時,實現吞吐量最大化。

1.1 前提條件

  1. 克隆 vLLM 并切到目標分支
    git clone https://github.com/vllm-project/vllm.git
    cd vllm
    # git checkout <your-branch>
    
  2. 安裝運行環境
    如果使用 TPU,請激活對應 conda 環境并安裝匹配版本的 torchtorch_xla
  3. 模型準備
    若使用自定義模型,確保配置文件放置正確且可訪問。

1.2 配置(腳本頂部必須設置)

變量說明示例
BASEvLLM 倉庫所在目錄的絕對路徑"$HOME"
MODELHugging Face 模型名稱"meta-llama/Llama-3.1-8B-Instruct"
SYSTEM硬件類型:TPUGPU"TPU"
TPTensor-parallelism 大小1
DOWNLOAD_DIR模型權重下載/緩存目錄""(默認路徑)
INPUT_LEN請求輸入長度4000
OUTPUT_LEN請求輸出長度16
MAX_MODEL_LEN模型最大長度4096
MIN_CACHE_HIT_PCT前綴緩存命中率要求,0–100;設為 0 禁用60
MAX_LATENCY_ALLOWED_MS允許的 P99 端到端延遲(ms);設極大值可忽略500
NUM_SEQS_LIST待測 max-num-seqs 列表"128 256"
NUM_BATCHED_TOKENS_LIST待測 max-num-batched-tokens 列表"1024 2048 4096"

短上下文場景可適當增大 max-num-seqs 值。

1.3 運行步驟

  1. 配置:按上表在腳本頂部修改變量。
  2. 執行
    cd <腳本所在目錄>
    bash auto_tune.sh
    

注意:執行路徑中不能包含字符串 vllm,否則 pkill -f vllm 會誤殺腳本自身。


2. 要點提煉

2.1 核心目標

  • 自動遍歷 max-num-seqsmax-num-batched-tokens 組合。
  • 在滿足延遲或緩存命中率約束的前提下,找到最大吞吐

2.2 典型場景

目標關鍵配置示例
僅最大化吞吐MAX_LATENCY_ALLOWED_MS=1e11, MIN_CACHE_HIT_PCT=0
吞吐 + 延遲約束MAX_LATENCY_ALLOWED_MS=500
吞吐 + 延遲 + 前綴緩存MAX_LATENCY_ALLOWED_MS=500, MIN_CACHE_HIT_PCT=60

2.3 輸出結果

  • 位于 $BASE/auto-benchmark/YYYY_MM_DD_HH_MM/
    • vllm_log_*.txt:各參數組合的 vLLM 日志
    • bm_log_*.txt:對應 benchmark 日志
    • result.txt:最優參數及吞吐匯總
    • profile/:最佳運行的一次 profiler trace(TPU 為 .xplane.pb,GPU 為 .json

3. 如何調優 vLLM 運行參數(實戰指南)

3.1 調優流程(腳本內部邏輯)

  1. 確定最大 GPU 內存利用率
    從 0.98 開始遞減,防止 OOM。
  2. 雙重循環遍歷
    遍歷所有 (max-num-seqs, max-num-batched-tokens) 組合。
  3. 延遲感知吞吐搜索
    • 先以無限請求速率跑一輪;若 P99 延遲滿足,則記錄吞吐。
    • 若延遲超限,則逐步降低請求速率,找到滿足延遲的最高吞吐
  4. 記錄最優值
    每次更新吞吐更高的有效組合。
  5. 保存性能畫像
    對最佳組合保存 profiler trace,便于 TensorBoard 等工具深度分析。

3.2 手動微調建議

  • 長輸入 / 長輸出場景
    • 適當降低 max-num-seqs,提高 max-num-batched-tokens,減少 padding 浪費。
  • 短輸入 / 短輸出場景
    • 提高 max-num-seqs,降低 max-num-batched-tokens,充分利用并發。
  • 顯存緊張
    • 降低 gpu-memory-utilizationmax-model-len
  • 延遲敏感
    • MAX_LATENCY_ALLOWED_MS 范圍內,優先選擇吞吐最高的組合,若仍超限,則降低 max-num-seqsmax-num-batched-tokens
  • 前綴緩存優化
    • 若業務有大量共享前綴,可設置 MIN_CACHE_HIT_PCT>0,腳本會過濾掉命中率不達標的結果。

腳本已自動化上述過程;如想手動實驗,可直接用 vllm serve 啟動并配合 vllm bench serve 進行基準測試。

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

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

相關文章

【騰訊云】EdgeOne免費版實現網站加速與安全防護

作為一名個人站長&#xff0c;我深知在有限的預算下如何為網站提供穩定、快速的服務是關鍵。騰訊云推出了 EdgeOne免費版 https://edgeone.ai/zh/redemption已經有一段時間。結合我的實際體驗&#xff0c;我想從國內備案域名的角度&#xff0c;分享一下如何利用這個工具提升網站…

修改gitlab默認的語言

文章目錄網上的方法1. 采用數據庫觸發器的方法2. 登錄pg庫2.1 查看表2.2 創建function2.3 創建觸發器2.4 修改歷史數據網上的方法 網上修改/opt/gitlab/embedded/service/gitlab-rails/config/application.rb的方法&#xff0c;我試了&#xff0c;沒生效&#xff0c;沒進一步研…

ndk { setAbiFilters([‘armeabi-v7a‘, “arm64-v8a“]) }

deepseek回答&#xff1a; 好的&#xff0c;我現在需要解釋build.gradle中這段ndk配置代碼的含義。首先&#xff0c;用戶提供的代碼片段是&#xff1a; ndk { setAbiFilters([‘armeabi-v7a’, “arm64-v8a”]) } 我的第一步是理解每個部分的作用。ndk塊在Android構建文件中用于…

k8s 1.30 通過helm部署ingress-controller-4.12.1

一、基本概念k8s集群中&#xff0c;ingress作為集群內服務對外暴漏的訪問接入點&#xff0c;幾乎承載著集群內服務訪問的所有流量。ingress是k8s中的一個資源對象&#xff0c;用來管理集群外部訪問集群內部服務的方式。可以通過ingress資源來配置不同的轉發規則&#xff0c;從而…

Gitee:本土開發者生態的崛起與數字化轉型新引擎

Gitee&#xff1a;本土開發者生態的崛起與數字化轉型新引擎 在數字化轉型浪潮席卷全球的當下&#xff0c;代碼托管平臺已從單純的代碼存儲工具演變為企業技術創新的基礎設施。作為中國領先的一站式DevOps平臺&#xff0c;Gitee以其本地化優勢和創新功能矩陣&#xff0c;正重新定…

Servlet HTTP 狀態碼詳解

Servlet HTTP 狀態碼詳解 引言 在Web開發中,HTTP狀態碼是服務器響應客戶端請求時返回的狀態信息。這些狀態碼有助于開發者了解請求處理的結果,并針對不同的狀態碼進行相應的處理。Servlet作為Java Web開發的重要技術之一,理解HTTP狀態碼對于開發高質量的Web應用至關重要。…

ubuntu qt環境下出現No suitable kits found解決方案

1. 清理 Qt Creator 緩存Qt Creator 會緩存項目配置、索引等數據&#xff0c;可能導致某些異常。清理方法&#xff1a;(1) 刪除 Qt Creator 配置目錄bashrm -rf ~/.config/QtProject/&#xff08;Ubuntu/Linux&#xff09; 或 Windows&#xff1a;cmdrmdir /s /q "%APPDAT…

【保姆級喂飯教程】Python依賴管理工具大全:Virtualenv、venv、Pipenv、Poetry、pdm、Rye、UV、Conda、Pixi等

目錄前言1前言2一、包管理工具1. pip&#xff08;Python官方&#xff0c;2008&#xff09;二、虛擬環境工具1. virtualenv&#xff08;Ian Bicking&#xff0c;2007&#xff09;2. venv&#xff08;Python3.3&#xff0c;2012&#xff09;三、版本管理工具1. pyenv&#xff08;…

Linux進程概念(五)進程地址空間

地址空間排布這段空間中自上而下&#xff0c;地址是增長的&#xff0c;棧是向地址減小方向增長&#xff0c;里面存放函數中的臨時變量&#xff0c;而堆是向地址增長方向增長&#xff0c;malloc開辟的地址空間存放在堆區&#xff0c;堆棧之間的共享區域&#xff0c;主要用來加載…

Go語言實戰案例-判斷二叉樹是否對稱

給定一棵二叉樹&#xff0c;判斷這棵樹是否是對稱的。對稱的含義是&#xff1a;這棵樹的左子樹和右子樹在結構上是鏡像對稱的&#xff0c;且對應節點的值相等。示例 1&#xff1a;1/ \2 2/ \ / \ 3 4 4 3輸出&#xff1a;true示例 2&#xff1a;1/ \2 2\ \3 3輸出&a…

【機器學習深度學習】為什么需要分布式訓練?

目錄 前言 一、模型規模爆炸&#xff1a;單卡GPU已難以承載 1.1 問題描述 1.2 面臨挑戰 1.3 解決方案&#xff1a;模型并行 (Model Parallelism) 1.4 類比理解&#xff1a;模型并行 1.5 模型并行的關鍵點 1.6 模型并行&#xff08;Model Parallelism&#xff09;的流程…

二十八、【Linux系統域名解析】DNS安裝、子域授權、緩存DNS、分離解析、多域名解析

DNS服務深度解析&#xff1a;緩存、分離與多域名管理一、DNS服務架構全景DNS核心組件關系DNS服務器類型對比二、基礎DNS服務配置1. Bind9核心配置文件2. 區域文件結構解析區域文件記錄類型表三、子域授權與分層解析子域授權原理子域配置流程1. 父域配置2. 子域配置遞歸與迭代查…

【LeetCode】前綴表相關算法

目錄1、介紹2、核心概念【1】前綴和后綴【2】最長公共前后綴&#xff08;LPS&#xff09;3、相關算法題【1】找出字符串中第一個匹配項的下標【2】重復的子字符串1、介紹 前綴表是一種在字符串匹配算法&#xff08;特別是KMP算法&#xff09;中使用的數據結構&#xff0c;用于…

(六) Spring AI 1.0版本 + 千問大模型+RAG

上篇文章我們大概講了一下向量模型的知識&#xff0c;本篇文章&#xff0c;我們將會通過RAG實戰的形式&#xff0c;來感受一下RAG。 項目準備 pom.xml 這里我們需要引入向量庫和pdf相關的包<dependency><groupId>org.springframework.ai</groupId><artifa…

Spring Boot與Mybatis-Plus集成SQLServer的完整指南

本文還有配套的精品資源&#xff0c;點擊獲取 簡介&#xff1a;本項目旨在演示如何將SQLServer與Spring Boot以及Mybatis-Plus框架進行整合&#xff0c;打造一個高效穩定的后端服務。詳細介紹涉及了數據庫連接、實體類定義、Mapper接口創建、Service層業務邏輯編寫、Control…

【工作筆記】判斷一條方法需不需要事務/AOP

① 看注解方法/類上有 Transactional → 需要事務&#xff0c;必須走代理方法/類上有自定義 AOP 注解&#xff08;如 Log、Retry、Cacheable 等&#xff09;→ 需要代理什么都沒有 → 幾乎肯定不需要示例需求Transactional public void generateDailyTask(...)? 需要事務publi…

Unity 的UI動畫調節

在游戲開發中&#xff0c;精美的UI動畫能極大提升用戶體驗。Unity提供了強大的動畫系統&#xff0c;讓開發者可以輕松創建流暢的界面動效。本文將介紹UI動畫的核心概念、制作流程和實用技巧。一、核心動畫組件Animation窗口 - 可視化創建關鍵幀動畫Animator組件 - 控制動畫狀態…

26考研11408數據結構

數據結構 1.緒論1.1.1數據結構的基本概念 數據數據元素&#xff1a;數據的基本單位&#xff0c;一個數據元素由多個數據項組成&#xff0c;數據項是組成數據元素不可分割的最小單位數據對象&#xff1a;具有相同性質的數據元素的集合&#xff0c;是數據的一個子集數據類型&…

Solar月賽(應急響應)——攻擊者使用什么漏洞獲取了服務器的配置文件?

某某文化有限公司的運維小王剛剛搭建服務器發現cpu莫名的異常的升高請你幫助小王排查一下服務器。 文章目錄事件介紹事件1&#xff1a;幫助小王找到是什么漏洞?事件2&#xff1a;系統每天晚上系統都會卡卡的幫小明找到問題出在了那&#xff1f;事件3&#xff1a;惡意域名是什么…

高頻面試題

1.HashMap的底層原理JDK1.7版本之前&#xff0c;HashMap的底層數據結構是數組鏈表&#xff0c;HashMap通過哈希算法會將元素的key映射待數組的的槽位(Bucket)。如果多個鍵映射到同一個槽位&#xff0c;就會以鏈表的形式存儲在同一個槽位上。但是鏈表的查詢的復雜度O(n),所有沖突…