Accelerate documentation

Model bellek tahminleyicisi

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.15.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Model bellek tahminleyicisi

Makinenizde kullanmak için potansiyel modelleri araştırırken, mevcut cihazınızda (örneğin modeli CUDA veya XPU üzerine yüklerken) belleğe sığacak modelin ne kadar büyük olabileceğini bilmek son derece zor bir konudur.

Bu sorunu hafifletmek için Accelerate, accelerate estimate-memory üzerinden bir CLI arayüzü sunar. Bu öğretici, bu aracın nasıl kullanılacağını, neler beklemeniz gerektiğini adım adım anlatır ve sonunda Hub üzerinde barındırılan interaktif demo'ya bağlantı verir; bu demo sayesinde sonuçları doğrudan model deposuna da paylaşabilirsiniz!

Şu anda timm ve transformers içinde kullanılabilen modelleri aramayı destekliyoruz.

Bu API, modeli meta cihazına yükler; bu nedenle modelin tam ağırlıklarını gerçekten indirip belleğe yüklemiyoruz ve buna da gerek yok. Sonuç olarak, CPU'nuzun bunu kaldırıp kaldıramayacağından endişe etmeden 8 milyar parametreli (veya daha fazla) modelleri ölçebilirsiniz!

Gradio Demoları

Aşağıda, yukarıda açıklanan konuyla ilgili birkaç gradio demosu bulunmaktadır. İlk demo, Accelerate'i doğrudan kullanan resmi Hugging Face bellek tahmini alanıdır:

Bir topluluk üyesi bu fikri alarak daha da ileriye taşıdı; böylece modelleri doğrudan filtreleyebilir ve GPU kısıtlamaları ile LoRA yapılandırmaları göz önüne alındığında belirli bir LLM'i çalıştırıp çalıştıramayacağınızı görebilirsiniz. Denemek için daha fazla ayrıntı için buraya bakın.

Komut

accelerate estimate-memory kullanırken, kullanmak istediğiniz modelin adını, (otomatik olarak bulunamıyorsa) o modelin kullandığı framework'ü ve modelin hangi veri tipleriyle yükleneceğini belirtmeniz gerekir.

Örneğin, bert-base-cased için bellek ayak izini nasıl hesaplayabileceğimiz aşağıda gösterilmektedir:

accelerate estimate-memory bert-base-cased

Bu işlem, bert-based-cased için config.json dosyasını indirir, modeli meta cihazında yükler ve ne kadar alan kullanacağını raporlar:

bert-base-cased yüklemek için Bellek Kullanımı:

dtypeEn Büyük KatmanToplam BoyutAdam kullanarak eğitim
float3284,95 MB418,18 MB1,61 GB
float1642,47 MB206,59 MB826,36 MB
int821,24 MB103,29 MB413,18 MB
int410,62 MB51,65 MB206,59 MB

Varsayılan olarak desteklenen tüm dtypes'leri (int4 ile float32 arası) döndürür, ancak belirli olanlarla ilgileniyorsanız bunlar filtrelenebilir.

Belirli kütüphaneler

Kaynak kitaplığı otomatik olarak belirlenemiyorsa (bert-base-cased durumunda olduğu gibi), bir kitaplık adı geçirilebilir.

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

HuggingFaceM4/idefics-80b-instruct yüklemek için Bellek Kullanımı:

dtypeEn Büyük KatmanToplam BoyutAdam kullanarak eğitim
float323,02 GB297,12 GB1,16 TB
float161,51 GB148,56 GB594.24 GB
int8772.52 MB74,28 GB297,12 GB
int4386,26 MB37,14 GB148,56 GB
accelerate estimate-memory timm/resnet50.a1_in1k --library_name timm

timm/resnet50.a1_in1k yüklemek için Bellek Kullanımı:

dtypeEn Büyük KatmanToplam BoyutAdam kullanarak eğitim
float329,0 MB97,7 MB390,78 MB
float164,5 MB48,85 MB195,39 MB
int82,25 MB24,42 MB97,7 MB
int41,12 MB12,21 MB48,85 MB

Belirli dtypes

Daha önce belirtildiği gibi, varsayılan olarak int4 ile float32 arasında döndürme yapılırken, float32, float16, int8 ve int4 dahil olmak üzere herhangi bir dtype kullanılabilir.

Bunu yapmak için, --dtypes belirttikten sonra bunları iletin:

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

bert-base-cased yüklemek için Bellek Kullanımı:

dtypeEn Büyük KatmanToplam BoyutAdam kullanarak eğitim
float3284,95 MB413,18 MB1,61 GB
float1642,47 MB206,59 MB826,36 MB

Bu hesaplayıcıyla ilgili uyarılar

Bu hesaplayıcı, modelin yalnızca yüklenmesi için gereken bellek miktarını, çıkarım yapılması için değil, size bildirir.

Bu hesaplama, gerçek değerin birkaç %'i kadar hassasiyete sahiptir, bu nedenle ne kadar bellek gerektireceğine dair çok iyi bir fikir verir. Örneğin, bert-base-cased tam hassasiyette CUDA üzerinde yüklendiğinde gerçekten 413.68 MB yer kaplar ve hesaplayıcı 413.18 MB tahmin eder.

Çıkarım (inference) sırasında, EleutherAI'nin bulduğu gibi, ek olarak %20'ye kadar bir artış bekleyebilirsiniz. Bu değerler için daha doğru bir tahmin bulmak üzere araştırma yapacağız ve bu işlem tamamlandığında bu hesaplayıcıyı güncelleyeceğiz.

Update on GitHub