Accelerate documentation

مقدّر ذاكرة النموذج

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

مقدّر ذاكرة النموذج

من أصعب الجوانب عند استكشاف النماذج المحتملة للاستخدام على جهازك هو معرفة حجم النموذج الذي يمكن أن يتسع في الذاكرة مع جهازك الحالي (مثل تحميل النموذج على CUDA أو XPU).

لمساعدتكم في التخفيف من هذه المشكلة، يوفر Accelerate واجهة سطر أوامر عبر accelerate estimate-memory. سيُساعدكم هذا الشرح في استخدام هذه الأداة خطوة بخطوة، وما الذي يمكن توقعه، وفي النهاية سيُحيلكم إلى العرض التفاعلي المستضاف على Hub والذي يتيح لكم حتى نشر تلك النتائج مباشرةً على مستودع النموذج!

حاليًا، ندعم البحث عن نماذج يمكن استخدامها في timm وtransformers.

ستقوم هذه الواجهة البرمجية بتحميل النموذج في الذاكرة على جهاز meta، لذا نحن لا نقوم فعليًا بتنزيل الأوزان الكاملة للنموذج وتحميلها في الذاكرة، ولا نحتاج إلى ذلك. ونتيجةً لذلك، من الممكن تمامًا قياس نماذج تحتوي على 8 مليارات من المعاملات (أو أكثر)، دون الحاجة إلى القلق بشأن ما إذا كان المعالج المركزي (CPU) لديك قادر على التعامل معها!

تطبيقات Gradio

فيما يلي بعض عروض gradio المتعلقة بما تم وصفه أعلاه. العرض الأول هو مساحة تقدير الذاكرة الرسمية من Hugging Face، والتي تستخدم Accelerate مباشرةً:

قام أحد أعضاء المجتمع بأخذ الفكرة وتوسيعها أكثر، مما يتيح لك تصفية النماذج مباشرةً والاطلاع على ما إذا كان بإمكانك تشغيل نموذج LLM معين في ظل قيود GPU وإعدادات LoRA. للتجربة، راجع هنا لمزيد من التفاصيل.

الأمر

عند استخدام accelerate estimate-memory، تحتاج إلى تمرير اسم النموذج الذي تريد استخدامه، وإطار العمل الذي يستخدمه ذلك النموذج (في حال تعذر العثور عليه تلقائيًا)، وأنواع البيانات التي تريد تحميل النموذج بها.

على سبيل المثال، فيما يلي كيفية حساب بصمة الذاكرة لـbert-base-cased:

accelerate estimate-memory bert-base-cased

سيؤدي هذا إلى تنزيل config.json الخاص بـ bert-based-cased، وتحميل النموذج على جهاز meta، والإبلاغ عن مقدار المساحة التي سيستهلكها:

استهلاك الذاكرة لتحميل bert-base-cased:

dtypeأكبر طبقةالحجم الكليالتدريب باستخدام Adam
float3284.95 م.ب418.18 م.ب1.61 GB
float1642.47 ميغابايت206.59 م.ب826.36 م.ب
int821.24 ميغابايت103.29 ميغابايت413.18 م.ب
int410.62 ميغابايت51.65 ميغابايت206.59 م.ب

بشكل افتراضي، ستُرجع جميع أنواع البيانات المدعومة (من int4 إلى float32)، ولكن إذا كنت مهتمًا بأنواع محددة، فيمكن تصفية هذه الأنواع.

مكتبات محددة

إذا تعذّر تحديد مكتبة المصدر تلقائيًا (كما هو الحال مع bert-base-cased)، يمكن تمرير اسم المكتبة.

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

استهلاك الذاكرة عند تحميل HuggingFaceM4/idefics-80b-instruct:

dtypeأكبر طبقةالحجم الكليالتدريب باستخدام Adam
float323.02 غيغابايت297.12 GB1.16 تيرابايت
float161.51 جيجابايت148.56 GB594.24 GB
int8772.52 م.ب74.28 GB297.12 GB
int4386.26 م.ب37.14 GB148.56 GB
accelerate estimate-memory timm/resnet50.a1_in1k --library_name timm

استهلاك الذاكرة لتحميل timm/resnet50.a1_in1k:

dtypeأكبر طبقةالحجم الكليالتدريب باستخدام Adam
float329.0 ميغابايت97.7 ميغابايت390.78 ميجابايت
float164.5 ميغابايت48.85 ميغابايت195.39 م.ب
int82.25 ميغابايت24.42 ميغابايت97.7 ميغابايت
int41.12 ميغابايت12.21 ميغابايت48.85 ميغابايت

أنواع بيانات محددة

كما ذُكر سابقاً، على الرغم من أننا نعيد int4 حتى float32 افتراضياً، يمكن استخدام أي نوع بيانات من float32، float16، int8، وint4.

لذلك، قم بتضمينها بعد تحديد --dtypes:

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

استهلاك الذاكرة لتحميل bert-base-cased:

dtypeأكبر طبقةالحجم الكليالتدريب باستخدام Adam
float3284.95 م.ب413.18 م.ب1.61 GB
float1642.47 ميغابايت206.59 م.ب826.36 م.ب

ملاحظات حول هذا الحاسب

ستخبرك هذه الآلة الحاسبة بكمية الذاكرة المطلوبة لتحميل النموذج فقط، وليس لأداء الاستدلال.

هذا الحساب دقيق ضمن هامش بضع % من القيمة الفعلية، لذا فهو يعطي صورة جيدة جداً عن مقدار الذاكرة التي سيستهلكها. فعلى سبيل المثال، تحميل bert-base-cased يستهلك فعلياً 413.68 MB عند تحميله على CUDA بدقة كاملة، بينما يقدّر الحاسب 413.18 MB.

عند تنفيذ الاستدلال، يمكن أن تتوقع إضافة ما يصل إلى 20% إضافية كما وجدته EleutherAI. سنقوم بإجراء أبحاث لإيجاد تقدير أدق لهذه القيم، وسنقوم بتحديث هذا الحاسب عند الانتهاء.

Update on GitHub