Hub documentation

مساحات ZeroGPU: تخصيص ديناميكي للوحدات المعالجة الرسومية للمساحات

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

مساحات ZeroGPU: تخصيص ديناميكي للوحدات المعالجة الرسومية للمساحات

ZeroGPU schema

ZeroGPU هي بنية تحتية مشتركة تُحسّن استخدام وحدات معالجة الرسومات (GPU) لنماذج الذكاء الاصطناعي والعروض التوضيحية على Hugging Face Spaces. فهي توزّع وحدات NVIDIA RTX Pro 6000 Blackwell وتحرّرها ديناميكيًا حسب الحاجة، وتوفر:

  1. الوصول المجاني إلى وحدات معالجة الرسوميات: يتيح استخدام وحدات معالجة الرسوميات بتكلفة فعالة للمساحات.
  2. دعم وحدات معالجة الرسومات المتعددة: يتيح للمساحات الاستفادة من وحدات معالجة رسومات متعددة بشكل متزامن في تطبيق واحد.

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

استخدام واستضافة مساحات ZeroGPU

  • Using existing ZeroGPU Spaces
    • مساحات ZeroGPU متاحة للاستخدام مجانًا لجميع المستخدمين. (قم بزيارة القائمة المختارة).
    • يحصل مستخدمو PRO على حصة استخدام يومية أكبر بثمانية أضعاف، وأعلى أولوية في طوابير وحدات معالجة الرسوميات (GPU)، ويمكنهم تجاوز حصتهم اليومية باستخدام الرصيد المدفوع مسبقًا عند استخدام أي من مساحات ZeroGPU.
  • Hosting your own ZeroGPU Spaces
    • الحسابات الشخصية المجانية: يمكن للحسابات السليمة (بريد إلكتروني مُتحقَّق منه، وحساب أقدم من 30 يوماً) استضافة ما يصل إلى مساحتين ZeroGPU مجاناً.
    • حسابات PRO: اشترك في PRO لاستضافة ما يصل إلى 10 مساحات ZeroGPU تحت حسابك.
    • المنظمات: اشترك في خطة فريق أو مؤسسة لتفعيل مساحات ZeroGPU لجميع أعضاء المنظمة.

المواصفات التقنية

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

حجم وحدة معالجة الرسومياتالأجهزة الداعمةVramتكلفة الحصة
large (الافتراضي)نصف بطاقة NVIDIA RTX Pro 6000 Blackwell48GB1×
xlargeNVIDIA RTX Pro 6000 Blackwell الكاملة96GB2×

راجع اختيار حجم وحدة معالجة الرسوميات لمعرفة كيفية استخدام الأحجام

التوافق

تم تصميم مساحات ZeroGPU لتكون متوافقة مع معظم مساحات GPU المبنية على PyTorch. على الرغم من أن التوافق يُعزَّز للمكتبات عالية المستوى من Hugging Face مثل transformers وdiffusers، إلا أنه ينبغي للمستخدمين الانتباه إلى ما يلي:

  • حاليًا، مساحات ZeroGPU متوافقة حصريًا مع Gradio SDK.
  • قد تكون توافقية مساحات ZeroGPU محدودة مقارنةً بمساحات GPU القياسية.
  • قد تنشأ مشاكل غير متوقعة في بعض السيناريوهات.

الإصدارات المدعومة

  • Gradio: 4+

  • PyTorch: يتم دعم جميع الإصدارات تقريبًا من 2.8.0 إلى latest

    راجع القائمة الكاملة
    • 2.8.0
    • 2.9.1
    • 2.10.0
    • 2.11.0
    • 2.12.1
    • 2.13.0
  • بايثون:

    • 3.12.12
    • 3.10.13

البدء باستخدام ZeroGPU

لاستخدام ZeroGPU في مساحتك، اتبع الخطوات التالية:

  1. تأكد من اختيار عتاد ZeroGPU في إعدادات مساحتك.
  2. استورد وحدة spaces.
  3. زُيِّن الدوال المعتمدة على وحدة معالجة الرسوميات (GPU) بـ @spaces.GPU.

تتيح عملية الزخرفة هذه للمساحة طلب وحدة معالجة رسومية عند استدعاء الدالة وإفراج عنها عند الانتهاء.

صُمِّم مُزيِّن @spaces.GPU ليكون خاليًا من التأثيرات في البيئات غير ZeroGPU، مما يضمن التوافق عبر مختلف الإعدادات.

مثال على الاستخدام

import spaces
from diffusers import DiffusionPipeline

pipe = DiffusionPipeline.from_pretrained(...)
pipe.to('cuda')

@spaces.GPU
def generate(prompt):
    return pipe(prompt).images

gr.Interface(
    fn=generate,
    inputs=gr.Text(),
    outputs=gr.Gallery(),
).launch()

تحميل النموذج

على الرغم من أن بطاقة GPU حقيقية متاحة فقط داخل دوال @spaces.GPU، يجب وضع النماذج على cuda على مستوى الوحدة الجذرية (كما هو موضح في المثال أعلاه).

يُنصح بعدم تحميل النماذج بشكل كسول أو نقلها إلى CUDA داخل @spaces.GPU، لأن ذلك أقل كفاءة بشكل كبير (حيث يتم تحسين عمليات نقل CUDA للمواضع التي تتم أثناء بدء التشغيل).

يعمل تحميل النماذج على cuda على مستوى الوحدة لأن وضع محاكاة CUDA الخاص بـ PyTorch يكون مفعلاً خارج دوال @spaces.GPU، مما يسمح بتنفيذ عمليات CUDA دون الحاجة إلى وحدة معالجة رسومات حقيقية. أما داخل @spaces.GPU، فيُستخدم CUDA الفعلي.

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

الحجم الافتراضي المستخدم بواسطة @spaces.GPU هو large (نصف بطاقة NVIDIA RTX Pro 6000 Blackwell).

يمكنك طلب بطاقة NVIDIA RTX Pro 6000 Blackwell كاملة بشكل صريح عن طريق تحديد size="xlarge":

@spaces.GPU(size="xlarge")
def generate(prompt):
    return pipe(prompt).images
  • يستهلك xlarge حصة يومية أكبر بـ مرتين من large (على سبيل المثال، مدة مهمة فعالة تبلغ 45 ثانية تستهلك 90 ثانية من الحصة)
  • xlarge تعني عادةً احتمالًا أعلى للانتظار في الطابور وأوقات انتظار أطول
  • استخدم xlarge فقط عندما يستفيد حمل العمل حقاً من الحوسبة أو الذاكرة الإضافية

إدارة المدة

بالنسبة إلى الدوال التي يُتوقَّع أن تتجاوز مدة التشغيل الافتراضية البالغة 60 ثانية على وحدة معالجة الرسوميات، يمكنك تحديد مدة مخصصة:

@spaces.GPU(duration=120)
def generate(prompt):
   return pipe(prompt).images

يحدد هذا الحد الأقصى لوقت تشغيل الدالة عند 120 ثانية. تحديد مدد أقصر للدوال الأسرع سيعزز أولوية الطابور لضيوف المساحة.

المدة الديناميكية

يدعم @spaces.GPU أيضًا مددًا زمنية ديناميكية.

بدلاً من تمرير مدة زمنية مباشرة، ما عليك سوى تمرير دالة قابلة للاستدعاء تستقبل نفس المدخلات الخاصة بالدالة المُزيَّنة وتعيد قيمة المدة الزمنية:

def get_duration(prompt, steps):
    step_duration = 3.75
    return steps * step_duration

@spaces.GPU(duration=get_duration)
def generate(prompt, steps):
   return pipe(prompt, num_inference_steps=steps).images

التجميع

لا يدعم ZeroGPU ميزة torch.compile، لكن يمكنك استخدام تجميع PyTorch المسبق (يتطلب torch 2.8+)

اطّلع على هذا المنشور في المدونة للحصول على دليل كامل حول الترجمة المسبقة على ZeroGPU.

مستويات الاستخدام

خضوع استخدام وحدة معالجة الرسوميات (GPU) لحصص يومية، حسب فئة الحساب:

نوع الحسابالحصة اليومية المضمنة من وحدات معالجة الرسوماتأولوية الطابور
غير مصادقدقيقتانمنخفض
حساب مجاني5 دقائقمتوسط
حساب PRO40 دقيقة (قابلة للتمديد)الأعلى
عضو في تنظيم الفريق40 دقيقة (قابلة للتمديد)الأعلى
عضو في منظمة المؤسسات60 دقيقة (قابلة للتمديد)الأعلى

تُعاد تعيين الحصة اليومية المضمنة بعد 24 ساعة بالضبط من أول استخدام لك للوحدة المعالجة الرسومية (GPU).

يؤثر الرصيد المتبقي بشكل مباشر على الأولوية في طوابير ZeroGPU.

توسيع الحصة باستخدام الرصيد

يمكن للمستخدمين من فئات PRO وTeam وEnterprise مواصلة استخدام مساحات ZeroGPU بعد تجاوز الحصة اليومية المضمنة لديهم، وذلك عبر استهلاك الرصيد المسبق الدفع بمعدل 1 دولار لكل 10 دقائق من وقت المعالج الرسومي. بمجرد استنفاد حصتك اليومية، يتم احتساب أي استخدام إضافي للمعالج الرسومي تلقائيًا على رصيدك.

يمكنك إضافة أرصدة من إعدادات الفوترة.

قيود الاستضافة

  • حسابات شخصية مجانية: حد أقصى 2 مساحة ZeroGPU، للحسابات السليمة (بريد إلكتروني موثّق، وحساب أقدم من 30 يوماً).
  • الحسابات الشخصية (مشتركو PRO): الحد الأقصى 10 مساحات ZeroGPU.
  • حسابات المؤسسات (فريق ومؤسسات): الحد الأقصى 50 مساحة ZeroGPU.

بفضل الاستفادة من ZeroGPU، يمكن للمطورين إنشاء مساحات (Spaces) أكثر كفاءة وقابلية للتوسع، مما يُعظّم استغلال وحدات معالجة الرسوميات (GPU) مع تقليل التكاليف إلى أدنى حد.

التوصيات

إذا كان عرضك التجريبي يستخدم نموذجًا كبيرًا، فننصحك باستخدام تحسينات مثل التجميع المسبق (ahead-of-time compilation) و flash-attention 3. يمكنك معرفة كيفية الاستفادة من هذه التحسينات مع ZeroGPU في هذا المنشور. ستساعدك هذه التحسينات على تعظيم مزايا ساعات ZeroGPU وتوفير تجربة مستخدم أفضل.

ملاحظات

يمكنك مشاركة ملاحظاتك حول Spaces ZeroGPU مباشرةً على HF Hub: https://huggingface.co/spaces/zero-gpu-explorers/README/discussions

Update on GitHub