Hub documentation

استخدام مساحات GPU

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

استخدام مساحات GPU

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

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

بمجرد أن يبدأ تشغيل مساحة عملك على وحدة معالجة رسومية، يمكنك معرفة العتاد الذي يعمل عليه مباشرةً من خلال هذا الشارة:

مواصفات العتاد

في الجداول التالية، يمكنك الاطلاع على مواصفات خيارات الترقية المختلفة.

وحدة المعالجة المركزية

الأجهزةCPUالذاكرةذاكرة وحدة معالجة الرسومياتالقرصالسعر بالساعة
أساسيات المعالج2 وحدة معالجة مركزية16 GB-50 جيجابايتمجاني!
ترقية وحدة المعالجة المركزية8 vCPU32 GB-50 جيجابايت$0.03

لا يتحمل باقة CPU Basic أي تكلفة بالساعة، لكن إنشاء مساحة جديدة تعمل على وحدة معالجة (Gradio أو Docker) يتطلب اشتراكًا مدفوعًا. أما المساحات الثابتة فهي مجانية للجميع. راجع نظرة عامة على المساحات للاطلاع على التفاصيل.

وحدة معالجة الرسوميات

الأجهزةCPUالذاكرةذاكرة وحدة معالجة الرسومياتالقرصالسعر بالساعة
Nvidia T4 - صغير4 vCPU15 جيجابايت16 GB50 جيجابايت$0.40
Nvidia T4 - متوسط8 vCPU30 جيجابايت16 GB100 جيجابايت$0.60
1x Nvidia L48 vCPU30 جيجابايت24 جيجابايت400 جيجابايت$0.80
4x Nvidia L448 وحدة معالجة مركزية186 جيجابايت96 GB3200 جيجابايت$3.80
1x Nvidia L40S8 vCPU62 جيجابايت48 GB380 جيجابايت$1.80
4x Nvidia L40S48 وحدة معالجة مركزية382 جيجابايت192 GB3200 جيجابايت$8.30
8x Nvidia L40S192 وحدة معالجة مركزية1534 GB384 GB6500 جيجابايت$23.50
1x Nvidia RTX PRO 600023 وحدة معالجة مركزية افتراضية256 GB96 GB475 جيجابايت$2.75
2x Nvidia RTX PRO 600046 وحدة معالجة مركزية افتراضية512 جيجابايت192 GB950 غيغابايت$5.50
4x Nvidia RTX PRO 600092 وحدة معالجة مركزية1024 جيجابايت384 GB1900 جيجابايت$11.00
8x Nvidia RTX PRO 6000184 وحدة معالجة مركزية افتراضية2048 جيجابايت768 GB3800 جيجابايت$22.00
Nvidia A10G - صغير4 vCPU15 جيجابايت24 جيجابايت110 جيجابايت$1.00
Nvidia A10G - كبير12 وحدة معالجة مركزية46 جيجابايت24 جيجابايت200 جيجابايت$1.50
2x Nvidia A10G - كبير24 وحدة معالجة مركزية92 جيجابايت48 GB1000 جيجابايت$3.00
4x Nvidia A10G - كبير48 وحدة معالجة مركزية184 جيجابايت96 GB2000 جيجابايت$5.00
Nvidia A100 - كبير12 وحدة معالجة مركزية142 جيجابايت80 جيجابايت1000 جيجابايت$2.50
Nvidia H100 (أُزيل في ديسمبر 2025)
8x Nvidia H100 (أُزيل في ديسمبر 2025)
4x Nvidia A10048 وحدة معالجة مركزية568 جيجابايت320 جيجابايت4000 جيجابايت$10.00
8x Nvidia A10096 vCPU1136 جيجابايت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 T4

TensorFlow

يجب أن يتعرف التثبيت الافتراضي لـ 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 المجتمعية لترى ما إذا كانت مساحتك ستُقبل! يمكنك العثور على هذا النموذج في إعدادات مستودع العتاد الخاص بمساحتك في الزاوية السفلية اليسرى تحت “إعدادات وقت السكون”:

Community GPU Grant

تعيين وقت نوم مخصص

إذا كان مساحتك تعمل على العتاد الافتراضي 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 مساحة من إعدادات المستودع. تعني مساحة “متوقفة” أن المساحة موقوفة مؤقتًا ولن تستخدم الموارد حتى يتم إعادة تشغيلها يدويًا. يمكن لأي شخص لديه صلاحية الكتابة في المساحة إيقافها مؤقتًا أو إعادة تشغيلها. لا يتم احتساب رسوم عن الوقت المتوقف.

Update on GitHub