Accelerate 文件

模型記憶體估算器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

模型記憶體估算器

在探索潛在模型時,一個非常困難的方面是瞭解多大的模型才能*裝入*您當前顯示卡(例如將模型載入到 CUDA 上)的記憶體中。

為了幫助緩解這個問題,Accelerate 透過 `accelerate estimate-memory` 提供了一個 CLI 介面。本教程將引導您瞭解如何使用它,預期結果,並在最後連結到託管在 Hub 上的互動式演示,該演示甚至可以讓您將結果直接釋出在模型倉庫中!

目前我們支援搜尋可在 `timm` 和 `transformers` 中使用的模型。

此 API 會將模型載入到 `meta` 裝置上,因此我們實際上並沒有下載和載入模型的完整權重到記憶體中,也不需要這樣做。因此,測量 80 億引數(或更多)的模型是完全可以的,而不必擔心您的 CPU 是否能處理!

Gradio 演示

以下是幾個與上述內容相關的 Gradio 演示。第一個是 Hugging Face 官方的記憶體估算空間,直接使用了 Accelerate

一位社群成員採納了這個想法並對其進行了進一步擴充套件,允許您直接篩選模型,並檢視在給定的 GPU 限制和 LoRA 配置下是否能執行某個特定的 LLM。要體驗它,請參閱這裡獲取更多詳情。

命令

在使用 `accelerate estimate-memory` 時,您需要傳入要使用的模型名稱,可能還需要指定該模型使用的框架(如果無法自動找到),以及您希望模型載入時的資料型別。

例如,以下是我們如何計算 `bert-base-cased` 的記憶體佔用:

accelerate estimate-memory bert-base-cased

這將下載 `bert-based-cased` 的 `config.json` 檔案,在 `meta` 裝置上載入模型,並報告它將使用的空間大小。

載入 `bert-base-cased` 的記憶體使用情況

資料型別 最大層 總大小 使用 Adam 訓練
float32 84.95 MB 418.18 MB 1.61 GB
float16 42.47 MB 206.59 MB 826.36 MB
int8 21.24 MB 103.29 MB 413.18 MB
int4 10.62 MB 51.65 MB 206.59 MB

預設情況下,它將返回所有支援的資料型別(`int4` 到 `float32`),但如果您對特定的資料型別感興趣,可以進行篩選。

特定庫

如果無法自動確定源庫(如 `bert-base-cased` 的情況),可以傳入庫的名稱。

accelerate estimate-memory HuggingFaceM4/idefics-80b-instruct --library_name transformers

載入 `HuggingFaceM4/idefics-80b-instruct` 的記憶體使用情況

資料型別 最大層 總大小 使用 Adam 訓練
float32 3.02 GB 297.12 GB 1.16 TB
float16 1.51 GB 148.56 GB 594.24 GB
int8 772.52 MB 74.28 GB 297.12 GB
int4 386.26 MB 37.14 GB 148.56 GB
accelerate estimate-memory timm/resnet50.a1_in1k --library_name timm

載入 `timm/resnet50.a1_in1k` 的記憶體使用情況

資料型別 最大層 總大小 使用 Adam 訓練
float32 9.0 MB 97.7 MB 390.78 MB
float16 4.5 MB 48.85 MB 195.39 MB
int8 2.25 MB 24.42 MB 97.7 MB
int4 1.12 MB 12.21 MB 48.85 MB

特定資料型別

如前所述,雖然我們預設返回從 `int4` 到 `float32` 的資料型別,但可以使用 `float32`、`float16`、`int8` 和 `int4` 中的任何一種。

要這樣做,只需在指定 `--dtypes` 後傳入它們即可。

accelerate estimate-memory bert-base-cased --dtypes float32 float16

載入 `bert-base-cased` 的記憶體使用情況

資料型別 最大層 總大小 使用 Adam 訓練
float32 84.95 MB 413.18 MB 1.61 GB
float16 42.47 MB 206.59 MB 826.36 MB

使用此計算器的注意事項

此計算器會告訴您純粹載入模型所需的記憶體,而*不是*執行推理所需的記憶體。

這個計算結果與實際值的誤差在幾個百分點以內,所以它能很好地反映出實際需要多少記憶體。例如,載入 `bert-base-cased` 在 CUDA 上以全精度載入時實際需要 `413.68 MB`,而計算器估算為 `413.18 MB`。

根據 EleutherAI 的發現,在執行推理時,您可以預期會額外增加高達 20% 的記憶體。我們將進行研究以找到對這些值更準確的估算,並在完成後更新此計算器。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.