تشغيل نموذج Hugging Face محلياً: ابدأ بـpipeline في أسطر قليلة

أبسط مسار لتشغيل نموذج من Hugging Face Hub محلياً هو تثبيت Transformers، وإنشاء pipeline بالمهمة ومعرّف النموذج، ثم تمرير المدخل إليها. تُحمّل الملفات اللازمة إلى الجهاز في التشغيل الأول، ويبدأ الاستدلال على CPU افتراضياً ما لم تحدد جهازاً آخر.
يمكن تنفيذ ذلك في أسطر قليلة، لكن نجاح التحميل لا يعني أن النموذج مناسب لمهمتك أو لغتك أو ذاكرتك. تعرض واجهة Pipeline في Transformers مهام متعددة، وتسمح باستبدال النموذج عبر معامل model وتشغيله على أول GPU من نوع CUDA عبر device=0 بدلاً من CPU الافتراضي.
اختر النموذج قبل تنزيل الأوزان
ابدأ بالناتج المطلوب: استخدم text-classification لتصنيف النص، وtext-generation للتوليد، وautomatic-speech-recognition لتحويل الكلام إلى نص. يجب أن تتوافق المهمة التي تمررها إلى pipeline مع البنية التي يدعمها النموذج؛ وجود المستودع على Hub لا يجعله صالحاً لكل مهمة.
افتح بطاقة النموذج وراجع اللغة والمهمة والمكتبة المدعومة والترخيص وتعليمات الاستخدام. للمحتوى العربي، لا يكفي أن يكون النموذج متعدد اللغات: تحقق من إدراج العربية في الاستخدام المقصود، ومن ملاءمته للفصحى أو اللهجات التي ستعالجها. انتبه أيضاً إلى النماذج المقيدة التي تتطلب قبول شروطها وتسجيل الدخول قبل تنزيل ملفاتها.
راجع قائمة الملفات وأحجام أجزاء الأوزان، لكن لا تساوِ بين حجمها على القرص والذاكرة المطلوبة أثناء الاستدلال. تتأثر RAM أو VRAM بدقة الأوزان وطول المدخل وحجم الدفعة والبيانات المؤقتة؛ لذلك اترك هامشاً ولا تختر نموذجاً يطابق السعة الاسمية للجهاز تقريباً.
قدّر الذاكرة قبل تنزيل النموذج كاملاً

ثبّت Accelerate ثم نفّذ accelerate estimate-memory MODEL_ID لتقدير ذاكرة تحميل نموذج متوافق. توضح أداة تقدير الذاكرة في Accelerate أنها تنزّل ملف الإعداد وتبني النموذج على جهاز meta بدلاً من تنزيل الأوزان الكاملة، وتعرض تقديرات float32 وfloat16 وint8 وint4.
هذه الأرقام تقدّر تحميل الأوزان وليست ضماناً لنجاح الاستدلال. يحتاج التنفيذ إلى ذاكرة إضافية للمدخلات والمخرجات والعمليات المؤقتة، وقد يرتفع الاستهلاك مع السياق الطويل أو التوليد أو الدفعات. إذا اقترب تقدير التحميل من الذاكرة المتاحة، فاختر نموذجاً أصغر أو نسخة مكممة يدعمها مسار التشغيل.
متى يكون التطبيق المحلي أقصر من Python؟
إذا كان هدفك محادثة نموذج أو تجربة مخرجاته يدوياً، فقد يكون التطبيق المحلي أسهل من كتابة الشيفرة. وفق إعداد التطبيقات المحلية في Hub، يمكنك تفعيل التطبيقات، وفتح صفحة نموذج مدعوم، ثم اختيار تطبيق متوافق من قائمة Use this model وتشغيل الأمر المقترح؛ وتشمل الخيارات المعروضة llama.cpp وOllama وJan وLM Studio.
هذا المسار مناسب للاستكشاف السريع، لكنه ليس بديلاً كاملاً عن pipeline. استخدم Python عندما تريد إدخال النموذج في برنامج، أو تمرير مجموعة مدخلات، أو ضبط معاملات المهمة، أو معالجة النتيجة آلياً. وفي الحالتين يبقى التوافق مرتبطاً بصيغة الأوزان ودعم التطبيق أو المكتبة والذاكرة المتاحة.
ثبّت Transformers وشغّل ثلاثة أسطر

أنشئ بيئة افتراضية حتى لا تتعارض حزم المشروع، ثم ثبّت Transformers مع PyTorch بالأمر pip install "transformers[torch]". أضف Accelerate إذا أردت تقدير الذاكرة أو استخدام device_map. أما تشغيل CUDA فيتطلب تثبيت PyTorch المناسب لبيئة NVIDIA وتعريفاتها؛ تثبيت Transformers وحده لا يهيئ GPU.
المثال التالي تعليمي ويستخدم نموذج تصنيف مشاعر إنجليزياً وارداً في أمثلة Transformers. يتكون الاستدلال نفسه من ثلاثة أسطر:
from transformers import pipeline
classifier = pipeline(task="text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
print(classifier("This local setup works."))
في التشغيل الأول تُجلب ملفات الإعداد والمجزئ والأوزان، ثم يمكن إعادة استخدام النسخة المحلية. نجاح المثال يؤكد عمل مسار التحميل والاستدلال، لكنه لا يثبت جودة النموذج للعربية لأنه مصمم لنصوص إنجليزية. استبدل معرّف model بنموذج عربي أو متعدد اللغات بعد التأكد من توافقه مع text-classification.
اختر CPU أو GPU بوضوح

اترك device غير محدد أو استخدم device=-1 للتشغيل على CPU. هذا أبسط خيار لفحص الشيفرة وتشغيل النماذج الصغيرة عندما لا تكون الاستجابة السريعة شرطاً، كما يجنبك الاعتماد على CUDA وذاكرة VRAM.
لاستخدام أول GPU من نوع CUDA، أضف device=0 إلى استدعاء pipeline. افحص قبل ذلك أن PyTorch يتعرف إلى البطاقة عبر torch.cuda.is_available()؛ إذا كانت النتيجة False فلن يكفي تغيير معامل device، بل يجب إصلاح تثبيت PyTorch أو تعريفات الجهاز.
مع النماذج الأكبر، يتيح device_map="auto" لـAccelerate توزيع الأوزان على الأجهزة المتاحة، ولا ينبغي جمعه مع device في الاستدعاء نفسه. وإذا نفدت الذاكرة، فقلل حجم النموذج أو طول المدخل أو حجم الدفعة، أو استخدم دقة أخف مدعومة. لا تفترض أن GPU أسرع لكل مدخل صغير؛ قارن زمن التنفيذ على نموذجك وعتادك.
افصل التنزيل الأول عن التشغيل المحلي
تشغيل الاستدلال على جهازك لا يعني أن البداية بلا اتصال: عند تمرير معرّف نموذج من Hub يحتاج التشغيل الأول إلى جلب ملفاته، وبعدها تُستخدم النسخة المحفوظة محلياً ما دامت الملفات المطلوبة موجودة. للبيئات المعزولة، نزّل النموذج مسبقاً واستخدم مساره المحلي، أو فعّل HF_HUB_OFFLINE=1 بعد التأكد من اكتمال الذاكرة المؤقتة.
عند فشل التشغيل، حدد المرحلة أولاً. مشكلة الوصول تختلف عن عدم توافق المهمة، وكلاهما يختلف عن نفاد RAM أو VRAM. ابدأ بنموذج صغير على CPU لإثبات عمل pipeline، ثم غيّر النموذج أو الجهاز خطوة واحدة في كل مرة حتى تعرف أي تغيير تسبب في الخطأ.
اقرأ أيضًا:
اشترك في نشرتنا الإخبارية
احصل على أحدث أخبار الويب 3 والذكاء الاصطناعي والعملات المشفرة مباشرة في بريدك.