【大模型深度學習】如何估算大模型需要的顯存

一、模型參數量

參數量的單位
參數量指的是模型中所有權重和偏置的數量總和。在大模型中,參數量的單位通常以“百萬”(M)或“億”(B,也常說十億)來表示。

百萬(M):表示一百萬個參數。例如,如果一個模型有110M個參數,那么它實際上有110,000,000(即1.1億)個參數。
億(B):表示十億個參數。例如,GPT-3模型有175B個參數,即175,000,000,000(即1750億)個參數。

二、內存數據量的單位


在大數據和機器學習的語境下,數據量通常指的是用于訓練或測試模型的數據的大小。數據量的單位可以是字節(Byte)、千字節(KB)、兆字節(MB)、吉字節(GB)等。

字節(Byte):是數據存儲的基本單位。一個字節由8個比特(bit)組成。
千字節(KB):等于1024個字節。
兆字節(MB):等于1024個千字節,也常用于表示文件或數據的大小。
吉字節(GB):等于1024個兆字節,是較大的數據存儲單位。
在大模型中,由于模型參數通常是以浮點數(如float32)存儲的,因此可以通過模型參數量來計算模型所需的存儲空間大小。例如,如果一個模型有1.1億個參數,并且每個參數用float32表示(即每個參數占4個字節),那么該模型所需的存儲空間大約為44MB(1.1億×4字節/1024/1024)。

bit(比特):bit是二進制數字中的位,是信息量的最小單位。在二進制數系統中,每個0或1就是一個bit。bit是計算機內部數據存儲和傳輸的基本單位。在數據傳輸過程中,通常以bit為單位來表示數據的傳輸速率或帶寬。

字節(Byte)定義:字節是計算機信息技術用于計量存儲容量的一種單位,也表示一些計算機編程語言中的數據類型和語言字符。字節通常由8個bit組成。字節是計算機中數據處理的基本單位。在存儲數據時,通常以字節為單位來表示數據的大小或容量。

bit和字節的關系:1字節(Byte)等于8比特(bit)。在計算機科學中,經常需要將數據的大小從字節轉換為比特,或者從比特轉換為字節。例如,在數據傳輸過程中,如果知道數據的傳輸速率是以比特每秒(bps)為單位的,那么可以通過除以8來將其轉換為字節每秒(Bps)的單位。

三、模型參數精度

單精度浮點數 (32位) - float32:

含義:單精度浮點數用于表示實數,具有較高的精度,適用于大多數深度學習應用。
字節數:4字節(32位)
半精度浮點數 (16位) - float16:

含義:半精度浮點數用于表示實數,但相對于單精度浮點數,它的位數較少,因此精度稍低。然而,它可以在某些情況下顯著減少內存占用并加速計算。
字節數:2字節(16位)
雙精度浮點數 (64位) - float64:

含義:雙精度浮點數提供更高的精度,適用于需要更高數值精度的應用,但會占用更多的內存。
字節數:8字節(64位)
整數 (通常為32位或64位) - int32, int64:

含義:整數用于表示離散的數值,可以是有符號或無符號的。在某些情況下,例如分類問題中的標簽,可以使用整數數據類型來表示類別。
字節數:通常為4字節(32位)或8字節(64位)

int4 (4位整數):

含義:int4使用4位二進制來表示整數。在量化過程中,浮點數參數將被映射到一個有限的范圍內的整數,然后使用4位來存儲這些整數。
字節數:由于一個字節是8位,具體占用位數而非字節數,通常使用位操作存儲。
int8 (8位整數):

含義:int8使用8位二進制來表示整數。在量化過程中,浮點數參數將被映射到一個有限的范圍內的整數,然后使用8位來存儲這些整數。
字節數:1字節(8位)

量化:在量化過程中,模型參數的值被量化為最接近的可表示整數,這可能會導致一些信息損失。因此,在使用量化技術時,需要平衡壓縮效果和模型性能之間的權衡,并根據具體任務的需求來選擇合適的量化精度。

1B int8的存儲需要1GB的顯存?

?

四、訓練顯存

模型參數

梯度

存儲梯度所需的內存等于參數本身所需的內存。由于每個參數都有相應的梯度,因此它們的內存要求相同。

梯度內存 = 參數內存

優化器

優化器狀態是某些優化算法(如 Adam、RMSprop)維護的附加變量,用于提高訓練效率。這些狀態有助于根據過去的梯度更新模型參數。

不同的優化器維護不同類型的狀態。例如:

SGD(隨機梯度下降):沒有附加狀態;僅使用梯度來更新參數。
Adam:為每個參數維護兩個狀態:一階矩(梯度平均值)和二階矩(梯度平方平均值)。這有助于動態調整每個參數的學習率。對于具有 100 萬個參數的模型,Adam 需要為每個參數維護 2 個附加值(一階矩和二階矩),從而產生 200 萬個附加狀態。
優化器狀態的內存 = 參數數量 x 精度大小 x 優化器乘數

激活

激活指的是什么

前向傳遞過程中計算得到的,并在后向傳遞過程中需要用到的所有張量。激活值大小與批次大小和序列長度有關。

輸入數據和標簽:

訓練模型需要將輸入數據和相應的標簽加載到顯存中。這些數據的大小取決于每個批次的樣本數量以及每個樣本的維度。

中間計算:

在前向傳播和反向傳播過程中,可能需要存儲一些中間計算結果,例如激活函數的輸出、損失值等。

臨時緩沖區:

在計算過程中,可能需要一些臨時緩沖區來存儲臨時數據,例如中間梯度計算結果等。減少中間變量也可以節省顯存,這就體現出函數式編程語言的優勢了。

沒有固定的公式來計算激活的 GPU 內存。

以llama int 8 7B為例:

  • 數據類型:Int8

  • 模型參數: 7B * 1 bytes = 7GB

  • 梯度:同上7GB

  • 優化器參數: AdamW 2倍模型參數 7GB * 2 = 14GB

  • LLaMA的架構(hidden_size= 4096, intermediate_size(前饋網絡神經元的個數)=11008, num_hidden_lavers= 32, context.length = 2048),所以每個樣本大小:(4096 + 11008) * 2048 * 32 * 1byte = 990MB

  • A100 (80GB RAM)大概可以在int8精度下BatchSize設置為50

  • 綜上總現存大小:7GB + 7GB + 14GB + 990M * 50/1024?~= 77GB

五、推理顯存?

  1. 模型加載:?計算模型中所有參數的大小,包括權重和偏差。

  2. 確定輸入數據尺寸:?根據模型結構和輸入數據大小,計算推理過程中每個中間計算結果的大小。

  3. 選擇批次大小:?考慮批處理大小和數據類型對顯存的影響。

大概是1.2倍的模型參數權重。

六、顯卡以及zero優化顯存

大模型在訓練或者微調時需要的顯卡個數其實與選擇的分布式訓練方法和微調方法有關。

比如大概120GB的內存如果單卡訓練需要兩張A100的顯卡。

如果我們采用多卡訓練同時運用zero的思想。那么顯存變化情況可以參考下圖:

如果采用數據并行。模型并行:如果模型被均勻分割,那么可能需要與模型層數成比例的顯卡數量。

參考說明

開源大模型訓練及推理所需顯卡成本必讀:也看大模型參數與顯卡大小的大致映射策略_大模型 6b 13b是指什么-CSDN博客

大模型訓練時的激活值顯存占用 - 知乎

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

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

相關文章

BUUCTF流量分析題

文章目錄 前言wireshark被嗅探的流量被偷走的文件easycap數據包中的線索秘密文件[安洵杯 2019]Attack (難,沒寫)被劫持的神秘禮物大流量分析(一)大流量分析(二)大流量分析(三)模板模板 前言 CT…

adb檢測不到原來的設備List of devices attached解決辦法

進設備管理器-通用串行總線設備 卸載無法檢測到的設備驅動 重新拔插數據線

mapbox基礎,加載柵格圖片到地圖

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??raster 柵格圖層 api二、??使用本地載…

復活之我會二分

文章目錄 整數二分模板模板1:滿足條件的第一個數模板2:滿足條件的最后一個數 浮點數二分模板一、Building an Aquarium思路分析具體代碼 二、Tracking Segments思路分析具體代碼 三、Wooden Toy Festival思路分析具體代碼 四、路標設置思路分析具體代碼 …

每日c/c++題 備戰藍橋杯(握手問題)

試題 A: 握手問題 題解 題目描述 小藍組織了一場算法交流會議,共有50人參加。按照慣例,每個人都要與除自己外的其他所有人握手一次。但有7個人彼此之間沒有握手(這7人與其他43人正常握手)。求實際發生的握手總次數。 解題思路 …

mysql8.0.29 win64下載

mysql win64安裝包 mysql win64安裝包下載 mysql win64安裝包下載 通過網盤分享的文件:mysql 鏈接: https://pan.baidu.com/s/1sEOl-wSVtOG5gfIRdt5MXw?pwdgi7i 提取碼: gi7i

browser-use開源程序使 AI 代理可以訪問網站,自動完成特定的指定任務,告訴您的計算機該做什么,它就會完成它。

一、軟件介紹 文末提供程序和源碼下載 browser-use開源程序使 AI 代理可以訪問網站,自動完成特定的指定任務,瀏覽器使用是將AI代理與瀏覽器連接的最簡單方法。告訴您的計算機該做什么,它就會完成它。 二、快速開始 使用 pip (Py…

CAD格式轉換器:Acme CAD Converter

Acme CAD Converter 是一款專業的多功能 CAD 文件管理工具,支持 ?DWG/DXF/DWF 文件查看、批量格式轉換及版本降級?,適用于工程設計、圖紙歸檔等場景?。軟件兼容 AutoCAD R2.5 至 2023 版本文件?,可輸出為 PDF、JPEG、TIFF、SVG 等 20 格式…

vmware虛擬機上Ubuntu或者其他系統無法聯網的解決方法

一、檢查虛擬機是否開啟了網絡服務 打開方式:控制面板->-管理工具--->服務 查找 VMware DHCP Service 和VMware NAT Service ,確保這兩個服務已經啟動。如下圖,沒有啟動就點擊啟動。 二、設置網絡類型 我們一般使用前兩種多一些&…

數據結構與算法:基礎與進階

🌟 各位看官好,我是maomi_9526! 🌍 種一棵樹最好是十年前,其次是現在! 🚀 今天來學習C語言的相關知識。 👍 如果覺得這篇文章有幫助,歡迎您一鍵三連,分享給更…

使用分布式鎖和樂觀鎖解決超賣問題

在電商、秒殺等高并發場景中,“超賣”問題指庫存被過量扣減,導致實際庫存不足。以下是使用 分布式鎖 和 樂觀鎖 解決超賣問題的原理與實現方案: 一、超賣問題的核心原因 多個并發請求同時讀取庫存余量,并在本地計算后發起寫操作&…

盛水最多的容器

本題有兩種解法,一種是暴力解法,直接暴力枚舉出所有的體積比較出最大的即可,但是時間復雜度達到n方。超出了限制,另一種解法就是利用單調性解法,我們著重介紹一下單調性解法。 單調性解法: 體積vh*w&…

操作系統概述(3)

批處理系統 1.單道批處理系統 單道批處理系統是成批地處理作用,并且始終只有一道作業在內存中的系統。優點:提高系統資源的利用率和系統吞吐量。缺點:系統中的資源得不到充分利用。 2.多道批處理系統 引入多道程序設計技術,是…

數字身份DID協議:如何用Solidity編寫去中心化身份合約

本文提出基于以太坊的自主主權身份(SSI)實現方案,通過擴展ERC-734/ERC-735標準構建鏈上身份核心合約,支持可驗證聲明、多密鑰輪換、屬性隱私保護等特性。設計的三層架構體系將身份控制邏輯與數據存儲分離,在測試網環境…

【目標檢測】【深度學習】【Pytorch版本】YOLOV2模型算法詳解

【目標檢測】【深度學習】【Pytorch版本】YOLOV2模型算法詳解 文章目錄 【目標檢測】【深度學習】【Pytorch版本】YOLOV2模型算法詳解前言YOLOV2的模型結構YOLOV2模型的基本執行流程YOLOV2模型的網絡參數YOLOV2模型的訓練方式 YOLOV2的核心思想前向傳播階段反向傳播階段 總結 前…

第421場周賽:數組的最大因子得分、

Q1、數組的最大因子得分 1、題目描述 給你一個整數數組 nums。 因子得分 定義為數組所有元素的最小公倍數(LCM)與最大公約數(GCD)的 乘積。 在 最多 移除一個元素的情況下,返回 nums 的 最大因子得分。 注意&…

機器學習(神經網絡基礎篇)——個人理解篇5(梯度下降中遇到的問題)

在神經網絡訓練中,計算參數的梯度是關鍵步驟。numerical_gradient 方法旨在通過數值微分(中心差分法)計算損失函數對網絡參數的梯度。然而,該方法的實現存在一個關鍵問題,導致梯度計算錯誤。 1、錯誤代碼示例&#xf…

40常用控件_WindowFrame的影響

window frame 的影響 如果 widget 作為一個窗口(帶有標題欄,最小化,最大化,關閉按鈕),那么在計算尺寸和坐標的 時候就有兩種算法.包含 window frame 和 不包含 window frame. 其中x(),y0,frameGeometry(), pos(),move() 都是按照包含 window frame 的方式來計算 的. 其中 geome…

Nginx搭建API網關服務教程-系統架構優化 API統一管理

超實用!用Nginx搭建API網關服務,讓你的系統架構更穩更強大!🚀 親們,今天來給大家種草一個超級實用的API網關搭建方案啦!👀 在如今的Web系統架構中,一個穩定、高性能、可擴展的API網…

USB設備老是提示有問題,如何解決

問題描述:有一臺usb設備一旦不小心碰了下,后面就在右下角提示“無法識別的USB設備”“跟這臺計算機連接的前一個USB設備0工作不正常,WIndows無法識別它”。我這個是明確知道那個設備,如果不知道也可以同樣解決。 解決方法&#xf…