مقالات معمّقة حول التكنولوجيا التي تشكّل المستقبل.

تشغيل نماذج اللغة الكبيرة على عتادك الخاص

التكاليف الحقيقية والمفاضلات ومتطلبات العتاد لتشغيل نماذج بحجم 70B+ محليًا بدلًا من واجهات API السحابية.

برج حاسوب ضخم متوهج يهيمن على مكتب منزلي دافئ

العام الماضي أنفقت 4,200 دولار على بناء جهاز استدلال محلي قادر على تشغيل نموذج بحجم 70 مليار معامل بسرعة معقولة. نظر إليّ زميل في العمل إلى الإعداد وسألني السؤال البديهي: «لماذا لا تستخدم الـAPI فقط؟ هذا يعادل نحو ثماني سنوات من أرصدة الـAPI.» لم يكن مخطئًا في الحساب، لكنه كان مخطئًا في تقدير الصورة الكاملة.

كان تشغيل نماذج اللغة الكبيرة محليًا حكرًا على مختبرات الأبحاث التي تمتلك مجموعات من وحدات GPU مثبتة في خزائن الخوادم. لكن الأمور تغيرت بسرعة. فقد قرّبت أجهزة الاستهلاك الشائعة وتقنيات التكميم (Quantization) ومحركات الاستدلال المحسّنة نماذج 70B+ من متناول الهواة المتحمسين والفرق الصغيرة. وتذهب أجهزة مثل Tinybox أبعد من ذلك، فهي عتاد مصمم خصيصًا لتشغيل نماذج بـ120 مليار معامل بشكل غير متصل بالإنترنت، دون الحاجة إلى السحابة.

لكن «الممكن» و«العملي» أمران مختلفان. دعنا نتحدث عمّا يتطلبه الأمر فعليًا لتشغيل النماذج الكبيرة محليًا، ومتى يكون ذلك منطقيًا، ومتى يكون من الأفضل أن تدفع مقابل واجهة API.

لماذا نشغّل النماذج محليًا أصلًا؟

نموذج الـAPI، أي إرسال بياناتك إلى مزود سحابي واستلام النتائج، يعمل بكفاءة في معظم حالات الاستخدام. فهو أبسط، وأرخص لكل استعلام عند الأحجام المنخفضة، ويمنحك دائمًا الوصول إلى أحدث النماذج. فلماذا يتكبد أحد عناء الاستدلال المحلي؟

  • الخصوصية والامتثال. بعض البيانات لا يمكن أن تغادر شبكتك. السجلات الطبية والوثائق القانونية والشيفرة المصدرية الخاصة والبيانات المالية، والقطاعات المنظمة غالبًا لديها متطلبات صارمة بشأن مكان تخزين البيانات. إرسال سجلات المرضى إلى نقطة نهاية API، حتى لو كانت مشفرة، قد ينتهك HIPAA. الاستدلال المحلي يُبقي كل شيء داخل منشأتك.
  • زمن الاستجابة. استدعاءات الـAPI تتضمن جولات ذهاب وإياب على الشبكة، وربما أوقات انتظار في الطوابير وحدودًا للمعدل. أما الاستدلال المحلي فلا يحمل أي تأخير شبكي ولا تنتظر في طابور أبدًا. في التطبيقات التفاعلية، مثل مساعدي البرمجة الفوريين والترجمة على الجهاز وواجهات الصوت، الفرق بين 50 ملي ثانية و500 ملي ثانية هو الفرق بين «سريع الاستجابة» و«بطيء».
  • التكلفة عند التوسع. تسعير الـAPI يُحسب لكل توكن. عند الأحجام المنخفضة يكون المبلغ ضئيلًا، أما عند الأحجام الكبيرة فتتراكم التكلفة بقسوة. الفريق الذي يقوم بمراجعة شيفرة مكثفة أو تحليل وثائق أو معالجة دفعات قد يستنزف آلاف الدولارات شهريًا في تكاليف الـAPI. عتاد محلي له تكلفة ثابتة، وبمجرد دفعها يصبح الاستدلال عمليًا مجانيًا.
  • التوفر. خدمات الـAPI السحابية تتعطل، وتُفرض حدود على المعدل، وتتغير الأسعار دون إشعار، وتُهمل النماذج وتُوقف. إذا كان منتجك يعتمد على واجهة API لطرف ثالث، فأنت رهن قرارات عمله التجارية. الاستدلال المحلي يعني أن قدراتك لا تتبخر لأن خادمًا لدى شخص آخر يمر بيوم سيئ.
  • حرية التجريب. لدى مزودي الـAPI سياسات استخدام، وهم من يقرر ما يمكنك فعله وما لا يمكنك فعله بالنموذج. النماذج المحلية لا تخضع لمثل هذه القيود، فيمكنك ضبطها دقيقًا وتعديلها واستخدامها لأي غرض، وتشغيلها بالعدد الذي تريده.

واقع العتاد

القيد الجوهري في استدلال نماذج اللغة هو الذاكرة لا الحوسبة. يجب أن تتسع معاملات النموذج في الذاكرة (ذاكرة الـVRAM للكرت أو ذاكرة الـRAM للنظام) قبل أن تتمكن من فعل أي شيء بها. نموذج 70B بدقة النقطة العائمة 16-bit يحتاج تقريبًا إلى 140 جيجابايت من الذاكرة. وهذا أكثر مما تقدمه أي وحدة GPU استهلاكية منفردة.

هنا يغيّر التكميم اللعبة. بتخفيض دقة أوزان النموذج من 16-bit إلى 8-bit أو 4-bit أو حتى 2-bit، يمكنك خفض متطلبات الذاكرة بشكل كبير:

Memory requirements for a 70B parameter model:
FP16 (full precision):  ~140 GB  → requires multiple A100s
INT8 (8-bit quant):     ~70 GB   → requires 2x RTX 4090 (48GB total)
Q4_K_M (4-bit quant):   ~40 GB   → fits on 2x RTX 3090 or 1x A6000
Q2_K (2-bit quant):     ~25 GB   → fits on 1x RTX 4090 (24GB)
For a 120B parameter model:
FP16:                   ~240 GB  → enterprise GPU territory
INT8:                   ~120 GB  → 5x RTX 4090 or purpose-built device
Q4_K_M:                 ~70 GB   → 3x RTX 4090
Q2_K:                   ~40 GB   → 2x RTX 4090

التكميم 4-bit (Q4_K_M في نظام llama.cpp) هو النقطة المثالية حاليًا. تدهور الجودة قابل للقياس لكنه مقبول غالبًا للاستخدام العملي، فمعظم الناس لا يستطيعون تمييز مخرجات Q4 عن الدقة الكاملة في اختبارات عمياء. أما التكميم 2-bit فيؤثر بوضوح على الجودة، خاصة في المهام التي تتطلب استدلالًا، لكنه ما زال يعمل للتطبيقات الأبسط مثل تصنيف النصوص أو التلخيص.

بناء أجهزة الاستهلاك

إن كنت تبني جهاز استدلال محليًا بنفسك، فأمامك ثلاثة مسارات أساسية، لكل منها نسبة سعر إلى أداء مختلفة.

مسار وحدة GPU واحدة

بطاقة RTX 4090 واحدة (24 جيجابايت VRAM، نحو 1,600 دولار) تستطيع تشغيل نماذج مكمّمة 4-bit تصل إلى نحو 30 مليار معامل براحة، أو نماذج 70B بتكميم 2-bit عدواني. أما بالنسبة لنماذج 7B–13B، فهي فائضة عن الحاجة؛ إذ ستحصل على أكثر من 40 توكن في الثانية، وهي أسرع من قدرة معظم الناس على القراءة. هذا أسهل مسار: اشترِ بطاقة الرسوميات، ثبّت llama.cpp أو Ollama، وابدأ.

مسار وحدات GPU متعددة

تتيح لك وحدتان أو أكثر تقسيم النموذج على عدة أجهزة (التوازي على مستوى الموتر Tensor Parallelism). بطاقتا RTX 3090 (48 جيجابايت VRAM إجمالًا، نحو 2,200 دولار مستعملتين) تستطيعان تشغيل نماذج 70B مكمّمة 4-bit بسهولة. لكن المشكلة أن تحتاج إلى لوحة أم بعدد كافٍ من مسارات PCIe ومساحة مادية لعدة بطاقات كاملة الحجم. التهوية تصبح مصدر قلق حقيقي، فبطاقتان بقدرة 350 واط داخل هيكل واحد تولدان حرارة كبيرة.

مسار الذاكرة الموحدة

تقدم حواسيب Mac المزودة برقائق Apple Silicon ذات الذاكرة الموحدة الكبيرة خيارًا قابلًا للحياة بشكل مفاجئ. فجهاز M2 Ultra بذاكرة موحدة 192 جيجابايت يستطيع استيعاب نموذج 70B بدقة كاملة داخل الذاكرة بالكامل. سرعة الاستدلال أبطأ من وحدات GPU المخصصة، ربما بين 10 و15 توكن في الثانية لنموذج 70B، لكن البساطة لا تُضاهى. لا مشاكل في التعريفات، ولا إعداد لعدة وحدات، ولا إدارة حرارية. مجرد جهاز Mac Studio على مكتبك يشغّل نموذج 70B.

تحقق شرائح سلسلة M ذلك عبر بنية الذاكرة الموحدة: تتشارك وحدة المعالجة المركزية ووحدة الرسوميات المجموعة نفسها من الذاكرة، فلا يوجد عنق زجاجة ناتج عن نسخ البيانات بين ذاكرة الـRAM للمعالج وذاكرة الـVRAM للكرت. عرض النطاق الترددي للذاكرة أقل من إعداد وحدة GPU مخصصة، ولهذا يكون الاستدلال أبطأ، لكن امتلاك 192 جيجابايت من الذاكرة القابلة للعنونة في جهاز يستهلك 60 واط أمر مبهر فعلًا.

أجهزة الاستدلال المصممة خصيصًا

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

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

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

حزمة البرمجيات

العتاد نصف القصة فقط. تطورت حزمة برمجيات الاستدلال بسرعة، واختيار البرنامج المناسب قد يضاعف إنتاجيتك على العتاد نفسه.

  • llama.cpp — السكين السويسرية للاستدلال المحلي. مكتوب بلغتي C/C++، ويعمل على كل شيء من Raspberry Pi إلى خوادم متعددة الـGPU. يدعم عشرات معماريات النماذج وصيغ التكميم. ليس دائمًا الأسرع، لكنه الأكثر قابلية للنقل والأكثر صيانة وتحديثًا.
  • vLLM — محسّن للإنتاجية على وحدات NVIDIA. يستخدم PagedAttention لإدارة ذاكرة GPU بكفاءة، وهو ما يحسّن الاستدلال المجمّع بشكل كبير. إذا كنت تخدم عدة مستخدمين من جهاز واحد، فغالبًا يكون vLLM الخيار الأفضل.
  • Ollama — نهج «Docker للنماذج اللغوية». يغلّف llama.cpp في واجهة سهلة الاستخدام مع سجل للنماذج. نفّذ ollama run llama3:70b وسيقوم بتنزيل النموذج وضبط التكميم وبدء الخدمة. ممتاز للبداية، لكنه أقل قابلية للتخصيص من llama.cpp الخام.
  • MLX — إطار عمل تعلم الآلة من Apple، ومحسّن لرقائق Apple Silicon. إذا كنت تستخدم جهاز Mac بمعالج من سلسلة M، فإن MLX يعطي عادةً أداءً أفضل من llama.cpp بفضل استغلاله أكثر فعالية لبنية الذاكرة الموحدة.
# Getting started with Ollama (the easiest path)
# Install: https://ollama.ai
# Run a 7B model (downloads automatically, ~4GB)
$ ollama run mistral
# Run a 70B model (needs ~40GB RAM/VRAM)
$ ollama run llama3:70b-instruct-q4_K_M
# Serve as an API endpoint (OpenAI-compatible)
$ ollama serve
$ curl http://localhost:11434/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "mistral",
"messages": [{"role": "user", "content": "Explain TCP handshakes"}]
}'

التكلفة الصادقة للمقارنة

لنُجرِ الحساب الذي يهم فعلًا. لنفترض أنك تشغّل نموذج 70B وتعالج نحو مليون توكن يوميًا (ما يعادل تقريبًا تحليل 50 إلى 100 وثيقة أو التعامل مع بضع مئات من محادثات الدردشة).

Cloud API (approximate pricing for 70B-class model):
Input:  $0.50 per million tokens
Output: $1.50 per million tokens
Daily cost: ~$2.00
Monthly cost: ~$60
Yearly cost: ~$720
Local inference (2x RTX 4090 build):
Hardware: $4,200 (one-time)
Electricity: ~$30/month (assuming 700W, 8h/day, $0.15/kWh)
Break-even: ~5.5 years
Local inference (Mac Studio M2 Ultra 192GB):
Hardware: $5,800 (one-time)
Electricity: ~$3/month (60W)
Break-even: ~8 years

عند مليون توكن يوميًا، تكون خدمة الـAPI السحابية أرخص لسنوات. لكن هذا الحساب يتغير جذريًا إذا ارتفع الحجم. عند 10 ملايين توكن يوميًا تكلّف واجهة API نحو 7,200 دولار سنويًا، ويتعادل العتاد المحلي في نحو 7 أشهر. وعند 50 مليون توكن يوميًا، يسدد الاستدلال المحلي تكلفته خلال أسابيع.

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

ما الذي يضيع في التكميم

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

في اختباراتي، تقترب النماذج المكمّمة 4-bit كثيرًا من أداء الدقة الكاملة في: توليد النصوص، والتلخيص، والأسئلة والأجوبة البسيطة، والترجمة، وتوليد الشيفرة للأنماط الشائعة. أما التدهور فيظهر في: الاستدلال متعدد الخطوات المعقد، والحسابات الرياضية، والمهام التي تتطلب استرجاعًا دقيقًا لبيانات التدريب، واتباع التعليمات الدقيقة.

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

اتخاذ القرار

بعد عام من تشغيل النماذج محليًا، هذا هو إطاري لاختيار بين الاستدلال المحلي والسحابي:

استخدم واجهات API السحابية عندما: تحتاج إلى أفضل جودة نموذج على الإطلاق، وحجمك منخفض إلى متوسط، ولا تملك خبرة في العتاد، أو تحتاج إلى تبديل النماذج باستمرار، أو لا يكون زمن الاستجابة حرجًا (فبضع مئات من الملي ثانية مقبولة).

شغّل محليًا عندما: لا يمكن لبياناتك مغادرة شبكتك، وتحتاج إلى زمن استجابة ثابت أقل من 100 ملي ثانية، وحجم توكناتك كبير بما يكفي لتبرير تكلفة العتاد، أو تريد التجريب بحرية دون تكلفة لكل استعلام، أو تحتاج إلى توفر للاستدلال مستقل عن أعطال الأطراف الثالثة.

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