Hub documentation
استخدام مساحات GPU
استخدام مساحات GPU
يمكنك ترقية مساحة العمل الخاصة بك لاستخدام معالج GPU عبر زر الإعدادات الموجود في شريط التنقل العلوي للمساحة. بل يمكنك حتى طلب ترقية مجانية إذا كنت تبني عرضًا توضيحيًا مثيرًا للاهتمام لمشروع جانبي!

على المدى الأبعد، نودّ أيضًا أن نتيح الوصول إلى أجهزة غير مبنية على وحدات معالجة الرسوميات (GPU)، مثل HPU أو IPU أو TPU. إذا كان لديك جهاز ذكاء اصطناعي محدد ترغب في تشغيل نماذجك عليه، فيرجى إعلامنا بذلك (الموقع الإلكتروني على huggingface.co).
بمجرد أن يبدأ تشغيل مساحة عملك على وحدة معالجة رسومية، يمكنك معرفة العتاد الذي يعمل عليه مباشرةً من خلال هذا الشارة:

مواصفات العتاد
في الجداول التالية، يمكنك الاطلاع على مواصفات خيارات الترقية المختلفة.
وحدة المعالجة المركزية
| الأجهزة | CPU | الذاكرة | ذاكرة وحدة معالجة الرسوميات | القرص | السعر بالساعة |
|---|---|---|---|---|---|
| أساسيات المعالج | 2 وحدة معالجة مركزية | 16 GB | - | 50 جيجابايت | مجاني! |
| ترقية وحدة المعالجة المركزية | 8 vCPU | 32 GB | - | 50 جيجابايت | $0.03 |
لا يتحمل باقة CPU Basic أي تكلفة بالساعة، لكن إنشاء مساحة جديدة تعمل على وحدة معالجة (Gradio أو Docker) يتطلب اشتراكًا مدفوعًا. أما المساحات الثابتة فهي مجانية للجميع. راجع نظرة عامة على المساحات للاطلاع على التفاصيل.
وحدة معالجة الرسوميات
| الأجهزة | CPU | الذاكرة | ذاكرة وحدة معالجة الرسوميات | القرص | السعر بالساعة |
|---|---|---|---|---|---|
| Nvidia T4 - صغير | 4 vCPU | 15 جيجابايت | 16 GB | 50 جيجابايت | $0.40 |
| Nvidia T4 - متوسط | 8 vCPU | 30 جيجابايت | 16 GB | 100 جيجابايت | $0.60 |
| 1x Nvidia L4 | 8 vCPU | 30 جيجابايت | 24 جيجابايت | 400 جيجابايت | $0.80 |
| 4x Nvidia L4 | 48 وحدة معالجة مركزية | 186 جيجابايت | 96 GB | 3200 جيجابايت | $3.80 |
| 1x Nvidia L40S | 8 vCPU | 62 جيجابايت | 48 GB | 380 جيجابايت | $1.80 |
| 4x Nvidia L40S | 48 وحدة معالجة مركزية | 382 جيجابايت | 192 GB | 3200 جيجابايت | $8.30 |
| 8x Nvidia L40S | 192 وحدة معالجة مركزية | 1534 GB | 384 GB | 6500 جيجابايت | $23.50 |
| 1x Nvidia RTX PRO 6000 | 23 وحدة معالجة مركزية افتراضية | 256 GB | 96 GB | 475 جيجابايت | $2.75 |
| 2x Nvidia RTX PRO 6000 | 46 وحدة معالجة مركزية افتراضية | 512 جيجابايت | 192 GB | 950 غيغابايت | $5.50 |
| 4x Nvidia RTX PRO 6000 | 92 وحدة معالجة مركزية | 1024 جيجابايت | 384 GB | 1900 جيجابايت | $11.00 |
| 8x Nvidia RTX PRO 6000 | 184 وحدة معالجة مركزية افتراضية | 2048 جيجابايت | 768 GB | 3800 جيجابايت | $22.00 |
| Nvidia A10G - صغير | 4 vCPU | 15 جيجابايت | 24 جيجابايت | 110 جيجابايت | $1.00 |
| Nvidia A10G - كبير | 12 وحدة معالجة مركزية | 46 جيجابايت | 24 جيجابايت | 200 جيجابايت | $1.50 |
| 2x Nvidia A10G - كبير | 24 وحدة معالجة مركزية | 92 جيجابايت | 48 GB | 1000 جيجابايت | $3.00 |
| 4x Nvidia A10G - كبير | 48 وحدة معالجة مركزية | 184 جيجابايت | 96 GB | 2000 جيجابايت | $5.00 |
| Nvidia A100 - كبير | 12 وحدة معالجة مركزية | 142 جيجابايت | 80 جيجابايت | 1000 جيجابايت | $2.50 |
| 4x Nvidia A100 | 48 وحدة معالجة مركزية | 568 جيجابايت | 320 جيجابايت | 4000 جيجابايت | $10.00 |
| 8x Nvidia A100 | 96 vCPU | 1136 جيجابايت | 640 جيجابايت | 8000 جيجابايت | $20.00 |
تهيئة العتاد برمجياً
يمكنك تكوين عتاد مساحة العمل الخاصة بك برمجياً باستخدام huggingface_hub. وهذا يتيح مجموعة واسعة من حالات الاستخدام التي تتطلب تخصيص وحدات معالجة الرسومات ديناميكياً.
اطّلع على هذا الدليل لمزيد من التفاصيل.
المتطلبات الخاصة بالإطار
يجب أن تعمل معظم المساحات (Spaces) بشكل مباشر بعد ترقية وحدة معالجة الرسوميات (GPU)، لكن في بعض الأحيان ستحتاج إلى تثبيت إصدارات CUDA من أطر العمل (frameworks) الخاصة بتعلم الآلة التي تستخدمها. يرجى اتباع هذا الدليل للتأكد من أن مساحتك تستفيد من العتاد المحسّن.
PyTorch
ستحتاج إلى تثبيت إصدار من PyTorch متوافق مع برامج تشغيل CUDA المدمجة. يجب أن يعمل إضافة السطرين التاليين إلى ملف requirements.txt الخاص بك:
--extra-index-url https://download.pytorch.org/whl/cu113
torchيمكنك التحقق من نجاح التثبيت عن طريق تشغيل الكود التالي في app.py والتحقق من المخرجات في سجلات مساحة العمل الخاصة بك:
import torch
print(f"Is CUDA available: {torch.cuda.is_available()}")
# True
print(f"CUDA device: {torch.cuda.get_device_name(torch.cuda.current_device())}")
# Tesla T4تستخدم العديد من الإطارات البرمجية وحدة معالجة الرسوميات (GPU) تلقائيًا إذا كانت متاحة. وهذا هو الحال في خطوط الأنابيب (Pipelines) في 🤗 transformers وfastai والعديد من غيرها. في حالات أخرى، أو إذا كنت تستخدم PyTorch مباشرةً، فقد تحتاج إلى نقل نماذجك وبياناتك إلى وحدة معالجة الرسوميات (GPU) للتأكد من أن الحسابات تتم على المعالج التسريعي (accelerator) وليس على وحدة المعالجة المركزية (CPU). يمكنك استخدام صياغة .to() في PyTorch، على سبيل المثال:
model = load_pytorch_model()
model = model.to("cuda")JAX
إذا كنت تستخدم JAX، فيجب عليك تحديد الرابط الذي يحتوي على الحزم المتوافقة مع CUDA. يُرجى إضافة الأسطر التالية إلى ملف requirements.txt الخاص بك:
-f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
jax[cuda11_pip]
jaxlibبعد ذلك، يمكنك التحقق من التثبيت عن طريق طباعة المخرجات الناتجة عن الكود التالي والتحقق منها في سجلات مساحتك.
import jax
print(f"JAX devices: {jax.devices()}")
# JAX devices: [StreamExecutorGpuDevice(id=0, process_index=0)]
print(f"JAX device type: {jax.devices()[0].device_kind}")
# JAX device type: Tesla T4TensorFlow
يجب أن يتعرف التثبيت الافتراضي لـ tensorflow على جهاز CUDA. ما عليك سوى إضافة tensorflow إلى ملف requirements.txt الخاص بك واستخدام الكود التالي في app.py للتحقق من ذلك في سجلات مساحتك.
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]الفوترة
تعتمد الفوترة على Spaces على استخدام العتاد وتُحسب بالدقيقة: يتم احتساب رسوم عن كل دقيقة يعمل فيها المساحة على العتاد المطلوب، بغض النظر عما إذا كان المساحة مستخدماً أم لا.
خلال دورة حياة مساحة، يتم احتساب التكلفة فقط عندما تكون المساحة في حالة Starting أو Running. وهذا يعني أنه لا توجد أي تكلفة أثناء البناء.
إذا بدأ مساحة قيد التشغيل في التعطل، فسيتم تعليقها تلقائيًا وستتوقف عملية الفوترة.
تُعلَّق المساحات (Spaces) التي تعمل على أجهزة مجانية تلقائيًا إذا لم تُستخدم لفترة طويلة (مثل يومين). أما المساحات المُحدَّثة فتعمل بشكل غير محدود افتراضيًا، حتى في حال عدم وجود استخدام. يمكنك تغيير هذا السلوك عن طريق ضبط "وقت السكون" مخصص في إعدادات المساحة. ولإيقاف الفوترة على مساحتك، يمكنك تغيير الجهاز إلى CPU الأساسي، أو إيقافها مؤقتًا.
يمكن العثور على معلومات إضافية حول الفوترة في القسم الخاص على مستوى Hub.
منح وحدات معالجة الرسوميات للمجتمع
هل لديك مساحة رائعة لكنك بحاجة إلى مساعدة في تغطية تكاليف ترقية أجهزة GPU؟ نحن نحب مساعدة أصحاب المساحات المبتكرة، لذا لا تتردد في التقديم على منحة GPU المجتمعية لترى ما إذا كانت مساحتك ستُقبل! يمكنك العثور على هذا النموذج في إعدادات مستودع العتاد الخاص بمساحتك في الزاوية السفلية اليسرى تحت “إعدادات وقت السكون”:

تعيين وقت نوم مخصص
إذا كان مساحتك تعمل على العتاد الافتراضي cpu-basic، فستدخل في وضع السكون إذا لم تُستخدم لفترة زمنية محددة (حاليًا، 48 ساعة). أي شخص يزور مساحتك سيعيد تشغيلها تلقائيًا.
إذا كنت ترغب في أن تبقى مساحة عملك نشطة دائمًا، أو إذا كنت تريد تحديد وقت سكون مخصص، فستحتاج إلى الترقية إلى أجهزة مدفوعة.
بشكل افتراضي، لن يدخل أي Space مُحدَّث في وضع السكون أبدًا. ومع ذلك، يمكنك استخدام هذا الإعداد لجعل Space المُحدَّث الخاص بك خاملًا (مرحلة stopped) عندما لا يُستخدم 😴. لن يتم احتساب أي رسوم عليك مقابل الأجهزة المُحدَّثة أثناء نومها. سيقوم الـ Space بـ «الاستيقاظ» أو إعادة التشغيل بمجرد استضافته لزيارة جديدة.
سيصبح الواجهة التالية متاحة في إعدادات العتاد الخاصة بمساحاتك:

الخيارات المتاحة هي:

نسخ
يمكنك توسيع مساحة Space أفقيًا عن طريق طلب عدة نسخ. يوزّع هذا الحركة عبر عدة نسخ من مساحتك لتحسين التوفر ومعدل المعالجة. يمكنك تحديد عدد النسخ عبر واجهة برمجة التطبيقات:
POST https://huggingface.co/api/spaces/{namespace}/{repo}/replicas
Content-Type: application/json
{
"replicas": 2
}لا تتوفر النسخ المكررة إلا للأجهزة المصعّدة (مدفوعة الأجر). يتم فوترة كل نسخة مكررة بشكل مستقل.
بث السجلات والأحداث والمقاييس
يمكنك بثّ السجلات في الوقت الفعلي، وأحداث الحالة، والمقاييس من مساحتك عبر SSE (الأحداث التي يرسلها الخادم):
- سجلات البناء أو التشغيل:
GET /api/spaces/{namespace}/{repo}/logs/{build|run} - أحداث الحالة:
GET /api/spaces/{namespace}/{repo}/events - المقاييس:
GET /api/spaces/{namespace}/{repo}/metrics
تتطلب هذه نقاط النهاية المصادقة وتعيد البيانات باستخدام بروتوكول SSE.
يقبل نقطة النهاية الخاصة بالسجلات معامل استعلام اختياري tail (عدد صحيح غير سالب) لتقييد الاستجابة على آخر N أسطر من السجلات:
GET /api/spaces/{namespace}/{repo}/logs/{build|run}?tail=100إيقاف مساحة مؤقتاً
يمكنك pause مساحة من إعدادات المستودع. تعني مساحة “متوقفة” أن المساحة موقوفة مؤقتًا ولن تستخدم الموارد حتى يتم إعادة تشغيلها يدويًا. يمكن لأي شخص لديه صلاحية الكتابة في المساحة إيقافها مؤقتًا أو إعادة تشغيلها. لا يتم احتساب رسوم عن الوقت المتوقف.