首頁  >  文章  >  科技週邊  >  你的GPU能跑Llama 2等大模型嗎?用這個開源專案手測一測

你的GPU能跑Llama 2等大模型嗎?用這個開源專案手測一測

WBOY
WBOY轉載
2023-10-23 14:29:011375瀏覽

在算力為王的時代,你的 GPU 可以順暢的運行大模型(LLM)嗎?

對於這個問題,很多人都難以給出確切的回答,不知該如何計算 GPU 記憶體。因為查看 GPU 可以處理哪些 LLM 並不像查看模型大小那麼容易,在推理期間(KV 快取)模型會佔用大量內存,例如,llama-2-7b 的序列長度為 1000,需要 1GB 的額外內存。不僅如此,模型在訓練期間,KV 快取、啟動和量化都會佔用大量記憶體。

我們不禁要問,能不能事先了解上述記憶體的佔用情況。近幾日,GitHub 上新出現了一個項目,可以幫你計算在訓練或推理LLM 的過程中需要多少GPU 內存,不僅如此,借助該項目,你還能知道詳細的內存分佈情況、評估採用什麼的量化方法、處理的最大上下文長度等問題,從而幫助使用者選擇適合自己的GPU 配置。

你的GPU能跑Llama 2等大模型吗?用这个开源项目上手测一测

專案網址:https://github.com/RahulSChand/gpu_poor

不僅如此,這個項目還是可交互的,如下所示,它能計算出運行LLM 所需的GPU 內存,簡單的就像填空題一樣,用戶只需輸入一些必要的參數,最後點擊一下藍色的按鈕,答案就出來了。

你的GPU能跑Llama 2等大模型吗?用这个开源项目上手测一测

互動位址:https://rahulschand.github.io/gpu_poor/

最終的輸出形式是這樣子的:

{"Total": 4000,"KV Cache": 1000,"Model Size": 2000,"Activation Memory": 500,"Grad & Optimizer memory": 0,"cuda + other overhead":500}

至於為什麼要做這個項目,作者Rahul Shiv Chand 表示,有以下原因:

  • 在GPU 上執行LLM 時,應該採用什麼的量化方法來適應模型;
  • GPU 可以處理的最大上下文長度是多少;
  • 什麼樣的微調方法比較適合自己? Full? LoRA? 還是QLoRA?
  • 微調期間,可以使用的最大batch 是多少;
  • 到底是哪項任務在消耗GPU內存,該如何調整,從而讓LLM 適應GPU。

那麼,我們該如何使用呢?

首先是對模型名稱、ID 以及模型尺寸的處理。你可以輸入 Huggingface 上的模型 ID(例如 meta-llama/Llama-2-7b)。目前,該專案已經硬編碼並保存了 Huggingface 上下載次數最多的 top 3000 LLM 的模型配置。

如果你使用自訂模型或Hugginface ID 不可用,這時你需要上傳json 配置(參考項目範例)或僅輸入模型大小(例如llama-2-7b 為70億)就可以了。

接著是量化,目前該專案支持 bitsandbytes (bnb) int8/int4 以及 GGML(QK_8、QK_6、QK_5、QK_4、QK_2)。後者僅用於推理,而 bnb int8/int4 可用於訓練和推理。

最後是推理和訓練,在推理過程中,使用HuggingFace 實現或用vLLM、GGML 方法找到用於推理的vRAM;在訓練過程中,找到vRAM 進行全模型微調或使用LoRA(目前專案已經為LoRA 配置硬編碼r=8)、QLoRA 進行微調。

不過,專案作者表示,最終結果可能會有所不同,具體取決於使用者模型、輸入的資料、CUDA 版本以及量化工具等。實驗中,作者試著把這些因素都考慮在內,並確保最終結果在 500MB 以內。下表是作者交叉檢查了網站提供的 3b、7b 和 13b 模型佔用記憶體與作者在 RTX 4090 和 2060 GPU 上獲得的記憶體比較結果。所有數值均在 500MB 以內。

你的GPU能跑Llama 2等大模型吗?用这个开源项目上手测一测

有興趣的讀者可以親自體驗一下,假如給定的結果不準確,專案作者表示,會對專案進行及時優化,完善專案.

以上是你的GPU能跑Llama 2等大模型嗎?用這個開源專案手測一測的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除