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

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

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

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

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

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

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

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

> [!NOTE]
> لا يتحمل باقة CPU Basic أي تكلفة بالساعة، لكن إنشاء مساحة جديدة تعمل على وحدة معالجة (Gradio أو Docker) يتطلب اشتراكًا مدفوعًا. أما المساحات الثابتة فهي مجانية للجميع. راجع [نظرة عامة على المساحات](./spaces-overview#hardware-resources) للاطلاع على التفاصيل.

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

| **الأجهزة**           | **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             |
| ~~Nvidia H100~~ *(أُزيل في ديسمبر 2025)* | | | | | |
| ~~8x Nvidia H100~~ *(أُزيل في ديسمبر 2025)* | | | | | |
| 4x Nvidia A100         | 48 وحدة معالجة مركزية       | 568 جيجابايت       | 320 جيجابايت          | 4000 جيجابايت    | $10.00    |         
| 8x Nvidia A100         | 96 vCPU       | 1136 جيجابايت      | 640 جيجابايت          | 8000 جيجابايت    | $20.00    | 

## تهيئة العتاد برمجياً

يمكنك تكوين عتاد مساحة العمل الخاصة بك برمجياً باستخدام `huggingface_hub`. وهذا يتيح مجموعة واسعة من حالات الاستخدام التي تتطلب تخصيص وحدات معالجة الرسومات ديناميكياً. راجع [هذا الدليل](https://huggingface.co/docs/huggingface_hub/main/en/guides/manage_spaces) لمزيد من التفاصيل.

## المتطلبات الخاصة بالإطار[[frameworks]]

يجب أن تعمل معظم المساحات (Spaces) بشكل مباشر بعد ترقية وحدة معالجة الرسوميات (GPU)، لكن في بعض الأحيان ستحتاج إلى تثبيت إصدارات CUDA من أطر العمل (frameworks) الخاصة بتعلم الآلة التي تستخدمها. يرجى اتباع هذا الدليل للتأكد من أن مساحتك تستفيد من العتاد المحسّن.

### PyTorch

ستحتاج إلى تثبيت إصدار من PyTorch متوافق مع برامج تشغيل CUDA المدمجة. يجب أن يعمل إضافة السطرين التاليين إلى ملف `requirements.txt` الخاص بك:

```
--extra-index-url https://download.pytorch.org/whl/cu113
torch
```

يمكنك التحقق من نجاح التثبيت عن طريق تشغيل الكود التالي في `app.py` والتحقق من المخرجات في سجلات مساحة العمل الخاصة بك:

```Python
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 مباشرةً، فقد تحتاج إلى نقل نماذجك وبياناتك إلى وحدة معالجة الرسوميات للتأكد من أن الحسابات تتم على المعالج التسريعي (Accelerator) وليس على وحدة المعالجة المركزية (CPU). يمكنك استخدام صياغة `.to()` في PyTorch، على سبيل المثال:

```Python
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
```

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

```Python
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` للتحقق من ذلك في سجلات مساحتك.

```Python
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
```

## الفوترة

تعتمد الفوترة على Spaces على استخدام العتاد وتُحسب بالدقيقة: يتم احتساب رسوم عن كل دقيقة يعمل فيها المساحة على العتاد المطلوب، بغض النظر عما إذا كان المساحة مستخدماً أم لا.

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

إذا بدأ مساحة قيد التشغيل في التعطل، فسيتم تعليقها تلقائيًا وستتوقف عملية الفوترة.

تُعلَّق المساحات (Spaces) التي تعمل على أجهزة مجانية تلقائيًا إذا لم تُستخدم لفترة طويلة (مثل يومين). أما المساحات المُحدَّثة فتعمل بشكل غير محدود افتراضيًا، حتى في حال عدم وجود استخدام. يمكنك تغيير هذا السلوك عن طريق [ضبط "وقت السكون" مخصص](#sleep-time) في إعدادات المساحة. ولإيقاف الفوترة على مساحتك، يمكنك تغيير العتاد (Hardware) إلى وحدة المعالجة المركزية الأساسية (CPU basic)، أو [إيقافها مؤقتًا](#pause).

يمكن العثور على معلومات إضافية حول الفوترة في [القسم الخاص على مستوى Hub](./billing).

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

هل لديك مساحة رائعة لكنك بحاجة إلى مساعدة في تغطية تكاليف ترقية أجهزة GPU؟ نحن نحب مساعدة أصحاب المساحات المبتكرة، لذا لا تتردد في التقديم على منحة GPU المجتمعية لترى ما إذا كانت مساحتك ستُقبل! يمكنك العثور على هذا النموذج في إعدادات مستودع العتاد الخاص بمساحتك في الزاوية السفلية اليسرى تحت "إعدادات وقت السكون":

![Community GPU Grant](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/ask-for-community-grant.png)

## تعيين وقت نوم مخصص[[sleep-time]]

إذا كان مساحتك تعمل على العتاد الافتراضي `cpu-basic`، فستدخل في وضع السكون إذا لم تُستخدم لفترة زمنية محددة (حاليًا، 48 ساعة). أي شخص يزور مساحتك سيعيد تشغيلها تلقائيًا.

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

بشكل افتراضي، لن يدخل أي مساحة مُحدَّثة في وضع السكون أبدًا. ومع ذلك، يمكنك استخدام هذا الإعداد لجعل مساحتك المُحدَّثة خاملة (مرحلة `stopped`) عندما لا تُستخدم 😴. لن يتم احتساب أي رسوم عليك مقابل الأجهزة المُحدَّثة أثناء نومها. ستُستيقظ المساحة أو تُعاد تشغيلها بمجرد استضافتها لزائر جديد.

سيصبح الواجهة التالية متاحة في إعدادات العتاد الخاصة بمساحاتك:

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

## نسخ

يمكنك توسيع مساحة Space أفقيًا عن طريق طلب عدة نسخ. يوزّع هذا الحركة عبر عدة نسخ من مساحتك لتحسين التوفر ومعدل المعالجة. يمكنك تحديد عدد النسخ عبر واجهة برمجة التطبيقات:

```
POST https://huggingface.co/api/spaces/{namespace}/{repo}/replicas
Content-Type: application/json

{
  "replicas": 2
}
```

> [!NOTE]
> لا تتوفر النسخ المكررة إلا للأجهزة المصعّدة (مدفوعة الأجر). يتم فوترة كل نسخة مكررة بشكل مستقل.

## بث السجلات والأحداث والمقاييس[[streaming]]

يمكنك بثّ السجلات في الوقت الفعلي، وأحداث الحالة، والمقاييس من مساحتك عبر SSE (الأحداث التي يرسلها الخادم):

- **سجلات البناء أو التشغيل**: `GET /api/spaces/{namespace}/{repo}/logs/{build|run}`
- **أحداث الحالة**: `GET /api/spaces/{namespace}/{repo}/events`
- **المقاييس**: `GET /api/spaces/{namespace}/{repo}/metrics`

تتطلب هذه نقاط النهاية المصادقة وتعيد البيانات باستخدام [بروتوكول SSE](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events).

يقبل نقطة النهاية الخاصة بالسجلات معامل استعلام اختياري `tail` (عدد صحيح غير سالب) لتقييد الاستجابة على آخر N أسطر من السجلات:

```
GET /api/spaces/{namespace}/{repo}/logs/{build|run}?tail=100
```

## إيقاف مساحة مؤقتاً[[pause]]

يمكنك `pause` مساحة من إعدادات المستودع. تعني مساحة "متوقفة" أن المساحة موقوفة مؤقتًا ولن تستخدم الموارد حتى يتم إعادة تشغيلها يدويًا. يمكن لأي شخص لديه صلاحية الكتابة في المساحة إيقافها مؤقتًا أو إعادة تشغيلها. لا يتم احتساب رسوم عن الوقت المتوقف.

