Articles in Turing Academy cover three major themes: ESG Net Zero Laboratory, AI Laboratory and Lean Management Laboratory. We will share articles on related topics from time to time. We also welcome students who are interested in the above topics to submit articles and share them with you. Insights (I want to contribute)

如何計算LLM服務所需的GPU內存?

 

 

 

作者:Karan Singh Co-Founder & CTO @ Scogo
圖靈學院編譯/科楠/2024年9月6日

 

    在人工智能快速發展的今天,大型語言模型(LLM)的應用越來越廣泛。但是,要成功部署和運行這些模型,我們需要考慮一個關鍵問題:需要多少GPU內存?本文將為您詳細解答這個問題。

 

什麼是模型服務?

 

模型服務是將訓練好的機器學習模型部署到生產環境中,以便對新數據進行預測的過程。對於大型語言模型來說,模型服務意味著讓LLM能夠根據用戶輸入回答問題、生成文本或執行其他任務。

簡而言之:

服務 = 輸入提示 -> 輸出答案

 

為什麼LLM需要GPU VRAM而不是普通RAM?

 

大型語言模型在運行時需要大量計算資源。它們需要大量內存來儲存模型參數和推理過程中的中間計算結果。系統內存(RAM)並不適合這個目的,因為它比GPU內存慢。GPU內存,也稱為VRAM(視頻內存)或GDDR(圖形DDR),專為深度學習等高性能計算任務設計。它提供了運行大型語言模型所需的速度和帶寬,使LLM能夠高效地執行複雜計算,而不會因內存和處理單元之間的數據傳輸而受到速度限制。

因此,GPU擁有的VRAM越多,它就能夠託管和服務越大的LLM。

 

如何計算LLM服務所需的GPU內存?

 

計算LLM服務所需GPU內存的常用公式如下:


所需內存 = P * Q * (1 + 開銷因子)
 

其中:


- P(參數): 模型中的參數數量。例如,GPT-3有1750億個參數,Llama-70b有700億個參數等。
- Q(精度或每個參數的大小): 用於存儲模型參數的數據類型。常見的數據類型包括:
  - FP32(32位浮點數): 每個參數4字節
  - FP16(半精度/BF16)(16位浮點數): 每個參數2字節
  - INT8(8位整數): 每個參數1字節
  - INT4(4位整數): 每個參數0.5字節
- 開銷因子: 考慮到推理過程中使用的額外內存,如存儲模型的激活值(中間結果)。典型的開銷因子為20%。

 

舉例來說,假設我們有一個名為Llama 70B的虛構LLM,它有700億個參數。如果模型以float32格式存儲,並假設20%的開銷因子,那麼內存需求可以計算如下:


所需內存 = 700億 * 4字節 * (1 + 20%) = 336GB
 

要運行這個模型,你需要兩個NVIDIA A-100 80GB內存型號的GPU。

 

如何減少LLM服務的GPU內存需求?

 

減少GPU內存需求的一種方法是量化。量化是一種通過將模型參數從較高精度格式(如float32)轉換為較低精度格式(如float16甚至更低)來減少參數精度的技術。這可以顯著減少內存使用,而不會對準確性產生重大影響。

 

在我們的Llama 70B示例中,使用float16精度而不是float32會將內存需求減半(從每個參數4字節減少到2字節)。

 

量化的利弊

 

量化技術可以通過使用更低精度的格式(如INT8、INT4)進一步減少內存佔用,但降低精度可能會影響輸出的準確性。例如,與FP16相比,INT8量化有時會導致更明顯的準確性下降。評估量化前後模型的性能至關重要。

 

總結

 

服務大型語言模型需要大量GPU內存資源。所需的內存量取決於模型的大小和複雜性、用於存儲參數的數據類型以及應用的任何優化(如量化)。通過理解影響GPU內存需求的因素,開發人員可以做出明智的決策,以最佳的性能和效率部署LLM。

 

 

原文請參考: