【自然語言處理與大模型】如何知道自己部署的模型的最大并行訪問數呢?

? ? ? ? 當你自己在服務器上部署好一個模型后,使用場景會有兩種。第一種就是你自己去玩,結合自有的數據做RAG等等,這種情況下一般是不會考慮并發的問題。第二種是將部署好的服務給到別人來使用,這時候就必須知道我的服務到底支持多大的訪問數量,是否要做分布式部署。本文先不擴展分布式部署,字數有限這部分內容另外些一篇文章。

一、預估模型推理時顯存占用的計算公式

模型參數 * 每個參數所占字節 =?權重所需顯存

① 已知條件:模型參數數量為70億(7B)個參數。每個參數使用 16位浮點數 表示,即每個參數占用 2字節(Bytes)。

② 計算過程:
總存儲需求? ?= 參數數量 × 每個參數占用的字節數
?????????????????????=?7 \times 10^9 \, \text{parameters} \times 2 \, \text{Bytes/parameter}
?????????????????????=?14 \times 10^9 \, \text{Bytes}

轉換為GB(1GB=1024^3 \, \text{Bytes})即:??Memory = \frac{14 \times 10^9}{1024^3} \approx 14 \, \text{GB}


③ 結論為:模型權重的大小約為 14GB。因此,為了加載這個模型,顯存容量需要大于14GB,否則會因為顯存不足而無法運行。

④ 重要說明:實際應用中,除了模型權重本身,還需要額外的顯存來存儲以下內容。

  1. 優化器狀態:如果使用優化器(如 Adam),它會存儲額外的狀態信息(如動量、方差等),通常會使顯存需求翻倍或更多。
  2. 激活值和中間結果:在訓練或推理過程中,模型會生成大量的中間數據,這些也需要占用顯存。
  3. 批量數據(重點關注):輸入數據和對應的標簽也會占用一部分顯存。

????????加載一個7B模型大概需要14G的顯存容量,但這僅僅只是加載到顯存上而已,都還沒開始推理呢。一旦模型開始推理,就會額外占用更多的顯存。好在現有的大模型推理框架可以幫助我們優化顯存。

二、計算剩余顯存量支持的最大并行訪問數

????????vLLM 和 LMDeploy 這樣的大模型推理框架時,采用了許多優化技術(具體哪些優化技術我自己也還在學習中,文末附上知乎大佬的文章鏈接供大家一同學習),有效的減少顯存占用和提高推理效率。這意味著對于優化器狀態和激活值的顯存需求可能已經得到了有效的管理或減輕,使得這些因素在估算顯存需求時變得不那么關鍵然而,用戶輸入(例如批量數據、請求數據)依舊是影響最大并行訪問數的重要因素。

????????假設你的服務器還剩余XGB的顯存,你可以根據每個請求需要的顯存量來估算最大并行訪問數。這里有一個簡化的計算方法:

① 先估算單個請求所需的顯存量

????????包括處理用戶輸入所需的顯存以及運行模型時生成的任何臨時數據。如果這個數值不是直接給出的,你可能需要通過實驗或查看文檔來獲得一個近似值。一般在你所下載的模型中有個config文件,里面的max_length就是的了。設這個數值為YMB(注意單位轉換,因為通常這里的數值會比較小,用MB更直觀)。

千問2.5文檔中說明了Y = 8MB

② 再計算最大并行訪問數

????????將剩余的顯存量從GB轉換成MB(X \times 1024 MB ),然后除以單個請求所需的顯存量Y MB:

\text{Accesses} = \frac{X \times 1024}{Y}

千問2.5-7B和24G顯存舉個例子具體舉例(X=2GBY=8M):?

\text{Accesses} = \frac{2 \times 1024}{8} = 256

在給定的條件下,服務器最多可以支持 256個并行訪問。?

【注】除了顯存,還需要考慮 CPU、網絡帶寬、磁盤 I/O 等其他硬件資源是否能夠支持如此高的并發。還有就是請求大小不是一成不變的,單個請求的顯存需求 Y 會隨輸入數據的變化而波動。

????????公式是理論上的最大值。實際應用中,為了保證系統的穩定性和響應速度,你需要做一些測試,然后做具體調整,比如預留 20% 的顯存作為緩沖。不過這種方法,也足夠讓你可以預估出在當前硬件條件下,你的服務能夠同時處理的最大請求數量,從而更好地規劃資源和服務能力。?

?

?推薦SayHelloCode大佬寫的有關vLLM推理優化原理的博客:vLLM(一)PagedAttention 算法

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

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

相關文章

[FPGA基礎] UART篇

Xilinx FPGA UART 硬件接口使用指南 1. 引言 UART (通用異步收發器) 是一種廣泛使用的串行通信接口,因其簡單、可靠和易于實現而成為 Xilinx FPGA 設計中的常見硬件接口。UART 用于在 FPGA 與外部設備(如 PC、微控制器、傳感器等)之間進行數…

【Netty4核心原理】【全系列文章目錄】

文章目錄 一、前言二、目錄 一、前言 本系列雖說本意是作為 《Netty4 核心原理》一書的讀書筆記,但在實際閱讀記錄過程中加入了大量個人閱讀的理解和內容,因此對書中內容存在大量刪改。 本系列內容基于 Netty 4.1.73.Final 版本,如下&#xf…

用 PyTorch 和numpy分別實現簡單的 CNN 二分類器

作業用到的知識: 1.Pytorch: 1. nn.Conv2d(二維卷積層) 作用: 對輸入的多通道二位數據(如圖像)進行特征提取,通過滑動卷積核計算局部區域的加權和,生成新的特征圖。 關鍵參數&a…

使用n8n構建自動化工作流:從數據庫查詢到郵件通知的使用指南

n8n是一款強大的開源工作流自動化工具,可以幫助你將各種服務和應用程序連接起來,創建復雜的自動化流程。下面我將詳細介紹一個實用的n8n用例:從MySQL數據庫查詢數據并發送郵件通知,包括使用場景、搭建步驟和節點部署方法。 使用場…

Vscode已經打開的python項目,如何使用已經建立的虛擬環境

在 VS Code 中使用已創建的 Conda/Mamba 虛擬環境 pe100,只需以下幾步: 步驟 1:確保虛擬環境已存在 在終端運行以下命令,檢查 pe100 環境是否已正確創建: conda activate pe100 python --version # 應顯示 Python 3…

Volatility工具學習

背景 VMware虛擬機系統hang死,手動重啟無法觸發系統panic,從而不能觸發kdump產生vmcore文件進行原因分析;此種情況下需要手動生成虛擬機內存快照,進而利用Volatility工具分析系統hang死的具體原因。 配置 使用VMware創建虛擬機…

學習筆記(C++篇)--- Day 4

目錄 1.賦值運算符重載 1.1 運算符重載 1.2 賦值運算符重載 1.3 日期類實現 1.賦值運算符重載 1.1 運算符重載 ①當運算符被用于類類型的對象時,C語言允許我們通過通過運算符重載的形式指定新的含義。C規定類類型對象使用運算符時,必須轉換成調用對…

Docker 快速入門教程

1. Docker 基本概念 鏡像(Image): 只讀模板,包含創建容器的指令 容器(Container): 鏡像的運行實例 Dockerfile: 用于構建鏡像的文本文件 倉庫(Repository): 存放鏡像的地方(如Docker Hub) 2. 安裝Docker 根據你的操作系統選擇安裝方式:…

vue項目中使用tinymce富文本編輯器

vue使用tinymce 文章目錄 vue使用tinymcetinymce富文本編輯器在這里插入圖片描述 一、本文要實現二、使用步驟1.安裝tinymce2.tinymce組件新建3. 在store添加商品詳情的狀態管理4. tinymce組件的引入 tinymce富文本編輯器 提示:以下是本篇文章正文內容,下…

簡單適配torch_npu不支持的ATen算子

簡單適配torch_npu不支持的ATen算子 一、背景說明1.1 PyTorch擴展機制1.2 核心概念二、實現步驟詳解2.1 實現前向、反向傳播算子2.2 編譯生成動態庫2.3 測試驗證程序三、關鍵點解析3.1 設計注意事項3.2 性能優化方向四、驗證結果一、背景說明 1.1 PyTorch擴展機制 PrivateUse1…

同樣的html標記,不同語言的文本,顯示的字體和粗細會不一樣嗎

同樣的 HTML 標記,在不同語言的文本下,顯示出來的字體和粗細確實可能會不一樣,原因如下: 🌍 不同語言默認字體不同 瀏覽器字體回退機制 CSS 里寫的字體如果當前系統不支持,就會回退到下一個,比如…

基于 Spring Boot 瑞吉外賣系統開發(六)

基于 Spring Boot 瑞吉外賣系統開發(六) 菜品列表 在系統管理端首頁,單擊左側菜單欄中的“菜品管理”,會在右側打開菜品管理頁面。 請求URL/dish/page,請求方法GET,請求參數page,pageSize。 該菜品列表…

計算機視覺與深度學習 | TensorFlow基本概念與應用場景:MNIST 手寫數字識別(附代碼)

TensorFlow 基本概念 TensorFlow 是一個開源的機器學習框架,由 Google 開發,核心概念包括: 張量(Tensor):多維數組,是數據的基本單位。計算圖(Graph):早期版本中用于描述數據流和計算過程,2.x 默認啟用即時執行(Eager Execution),兼顧靈活性和性能。層(Layers)…

vue+django+LSTM微博輿情分析系統 | 深度學習 | 食品安全分析

文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站,有好處! 編號: D031 LSTM 架構:vuedjangoLSTMMySQL 功能: 微博信息爬取、情感分析、基于負面消極內容輿情分析…

RHCE第三次作業 搭建dns的正向解析服務器

server為服務器 client為客戶端 設置主配置文件 在server下: [rootServer ~]#vim /etc/named.conf #進入到配置頁面,并修改 設置區域文件 [rootServer ~]# vim /etc/named.rfc1912.zones 設置域名解析文件 [rootServer named]# cd /var/named…

Windows 同步技術-一次性初始化

組件通常設計為在首次調用時執行初始化任務,而不是加載它們時。 一次性初始化函數可確保此初始化僅發生一次,即使多個線程可能嘗試初始化也是如此。 Windows Server 2003 和 Windows XP: 應用程序必須使用 互鎖函數 或其他同步機制提供自己的…

OpenCV 中的角點檢測方法詳解

文章目錄 引言1. Harris角點檢測原理1.1 什么是角點?1.2 Harris算法的核心思想1.3 角點、邊緣和平坦區域的區分 2. OpenCV實現Harris角點檢測3. 總結 引言 在計算機視覺和圖像處理中,特征點檢測(Feature Detection)是一個關鍵任務…

全面介紹AVFilter 的添加和使用

author: hjjdebug date: 2025年 04月 22日 星期二 13:48:19 CST description: 全面介紹AVFilter 的添加和使用 文章目錄 1.兩個重要的編碼思想1. 寫代碼不再是我們調用別人,而是別人調用我們!2. 面向對象的編程方法. 2. AVFilter 開發流程2.1 編寫AVFilter 文件2.1.…

生物計算安全攻防戰:從DNA存儲破譯到碳基芯片防御體系重構

隨著碳基生物芯片突破馮諾依曼架構限制,DNA數據存儲密度達到1EB/克量級,合成生物學與信息技術的融合正引發新一輪安全革命。本文深入解析碳基芯片逆向工程路徑,揭示酶驅動DNA數據解碼的技術突破,預警合成生物回路潛在的數據泄露風…

Spring Boot 集成 Ollama API 使用總結

Spring Boot 中集成 Ollama API 的完整指南&#xff0c;涵蓋基礎配置、API 調用、性能優化及常見問題解決。 一、環境準備 1. 依賴配置 在 pom.xml 中添加必要的依賴&#xff1a; <!-- Spring Web (用于 REST 請求) --> <dependency><groupId>org.springf…