Accelerate documentation
Model bellek tahminleyicisi
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
metacihazı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ı:
| dtype | En Büyük Katman | Toplam Boyut | Adam kullanarak eğitim |
|---|---|---|---|
| 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 |
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ı:
| dtype | En Büyük Katman | Toplam Boyut | Adam kullanarak eğitim |
|---|---|---|---|
| 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 yüklemek için Bellek Kullanımı:
| dtype | En Büyük Katman | Toplam Boyut | Adam kullanarak eğitim |
|---|---|---|---|
| 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 |
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ı:
| dtype | En Büyük Katman | Toplam Boyut | Adam kullanarak eğitim |
|---|---|---|---|
| float32 | 84,95 MB | 413,18 MB | 1,61 GB |
| float16 | 42,47 MB | 206,59 MB | 826,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