مقارنة llama.cpp وOllama تُعد مقارنة غير مألوفة، لأنهما ليسا في الواقع منافسين: فـOllama مبنية على قاعدة llama.cpp. والسؤال الصادق ليس أيُّهما أفضل، بل كم طبقة من الراحة تريدها بينك وبين محرك الاستنتاج.
Quick answer
Ollama هي عبارة عن llama.cpp مع مدير نماذج، وخدمة خلفية، وواجهة برمجة تطبيقات (API) متوافقة مع OpenAI. استخدم Ollama ما لم تكن بحاجة إلى شيءٍ عمَّدَ Ollama إخفاءه: مثل إعدادات التجميع المخصصة، أو صيغ التكمين (quantisation) المتطورة جدًّا، أو واجهات الأجهزة غير المألوفة، أو القدرة على دمج عملية الاستنتاج مباشرةً داخل ملف تنفيذي بلغة C++ أو Python. أما llama.cpp الخام فتوفر أقصى درجات التحكم وأدنى درجات الراحة، بينما توفر Ollama العكس تمامًا، مع تكلفة أداءٍ تكون عادةً ضئيلة جدًّا.
ما الذي تقوم به كل طبقة فعليًّا
| llama.cpp | Ollama | |
|---|---|---|
| ما هو هذا الشيء | محرك الاستنتاج (C/C++) | غلاف حول ذلك المحرك |
| إدارة النماذج | تقوم أنت بالبحث عن ملفات GGUF ووضعها يدويًّا | ollama pullمكتبة مُصدَّرة حسب الإصدار |
| الخادم | llama-serverيُشغَّل يدويًّا | خدمة تعمل باستمرار على المنفذ 11434 |
| التهيئة | عشرات العلمات (flags) الخاصة بسطر الأوامر، مع تحكم كامل | قيم افتراضية معقولة، وملفات النماذج (modelfiles) لإعادة تعريفها عند الحاجة |
| خيارات التجميع | تجميع البرمجية خصيصًا لجهازك المحدد | ملفات تنفيذية مُجمَّعة مسبقًا |
| منحنى التعلُّم | حاد جدًّا | دقائق |
| الأفضل لـ | الدمج في التطبيقات، والأبحاث، وضبط كل المعايير بدقة | التطبيقات، والأتمتة، والاستخدام اليومي |
متى يكون استخدام llama.cpp الخام مبرَّرًا
توجد أربع حالات تبرِّر حقًّا تجاوز الغلاف البرمجي. أولًا، دمج عملية الاستنتاج داخل ملفك التنفيذي الخاص — فـllama.cpp مكتبة، بينما Ollama خدمة يجب أن تُوزَّع جنبًا إلى جنب مع تطبيقك. ثانيًا، صيغ التكمين الجديدةالتي تظهر أولًا في المشروع الأصلي (upstream)، وقد تستغرق أسابيع حتى تظهر في المكتبة المُدارة. ثالثًا، أجهزة غير مألوفة — مثل علمات التجميع المحددة لوحدات معالجة الرسومات القديمة، أو مسرِّعات غير تقليدية، أو مجموعات التعليمات الخاصة بمعالجات CPU. رابعًا، استخلاص آخر بضعة نقاط مئوية من الأداء— إذ إن تجميع البرنامج خصيصًا لوحدة المعالجة المركزية لديك، وضبط عدد الخيوط وحجم الدفعات (batch sizes)، قد يتفوق على الملفات التنفيذية المُجمَّعة مسبقًا العامة، رغم أن المكاسب تكون عادةً في حدود نقطة مئوية واحدة أو اثنتين، وليس تحسينات جذرية.
ما تتخلى عنه
كل ما يضيفه Ollama، ستحتاج إلى إعادة بنائه بنفسك: تنزيل ملفات GGUF وتنظيمها، والحفاظ على تشغيل الخادم، وإدارة النموذج المحمل حاليًّا، وكتابة واجهة برمجة التطبيقات (API) التي تتوقعها تطبيقاتك. ولمعظم المشاريع، يتطلب ذلك أيامًا من العمل لإعادة إنشاء شيءٍ موجودٍ بالفعل ومُدارٍ جيدًا. أما دليلنا الخاص بـ دليل Ollama فيغطي ما تتضمَّنه هذه الطبقة المُيسِّرة، وكذلك قائمة النماذج يُظهر المكتبة التي كنت ستُنظِّمها يدويًّا.
Convly’s take
إذا كنت تطرح هذا السؤال أصلًا، فاستخدم Ollama. أما الأشخاص الذين يحتاجون حقًّا إلى llama.cpp الخام — مثل مساهمي محركات التنفيذ، ومطوري الاستنتاج المدمج، ومحرِّكي الأجهزة — فإنهم يعرفونه بالفعل، وهم لا يقارنون بين الأدوات؛ بل يُجرِّبون عملية التجميع. أما المسار العملي الوسطي للغالبية العظمى فهو استخدام Ollama مع ملف النموذج (modelfile): فتحصل على أطوال سياق مخصصة، وتعليمات نظام (system prompts) ومواصفات عيّنة (sampling parameters) دون الحاجة إلى امتلاك سلسلة أدوات البناء. الجأ إلى llama.cpp فقط عندما يفرض عليك متطلبٌ محدَّدٌ وواضحٌ ذلك، وليس من أجل سرعةٍ قد لا تلاحظها أصلًا.
الأسئلة الشائعة
هل يستخدم Ollama مكتبة llama.cpp؟
نعم. إن مسار الاستنتاج في Ollama مبنيٌّ على llama.cpp، ولذلك يُنفِّذ كلاهما ملفات نماذج GGUF نفسها ويُحقِّقان أداءً متشابهًا عند استخدام نفس الإعدادات.
هل تتفوَّق سرعة llama.cpp على Ollama؟
بدرجة ضئيلة جدًّا، إذا قمت بترجمته (compiling) خصيصًا لجهازك الدقيق وضبطت العلمات (flags) بدقة. أما عند التشغيل القياسي (out of the box) باستخدام نفس النموذج ونفس درجة التكميم (quantisation)، فإن الفرق ضئيلٌ جدًّا — ومعظم الفروق المُبلَّغ عنها تعود إلى اختلاف أطوال السياق أو إعدادات تفويض المعالجة إلى وحدة معالجة الرسوميات (GPU-offload)، وليس إلى الاختلاف بين المحركين.
هل يمكنني استخدام ملفات GGUF الخاصة بي المُنشأة عبر llama.cpp مع Ollama؟
نعم — فملف النموذج (modelfile) الذي يشير إلى ملف GGUF محلي يُدرجه تلقائيًّا في Ollama، وبالتالي يمكنك الاحتفاظ بالملفات التي حمَّلتها مسبقًا بدلًا من إعادة تنزيلها.
أيُّها يجب أن يتعلَّمه المبتدئ أولاً؟
Ollama. فهو يُعلِّم المفاهيم الجوهرية — كالتكثيف (quantisation)، وطول السياق (context length)، وحدود الذاكرة — دون الحاجة إلى خطوة بناء (build step). أما llama.cpp فيصبح أكثر منطقية بمجرد أن تعرف بالضبط ما الذي تريد تغييره.
انظر أيضًا Ollama مقابل LM Studio و vLLM مقابل Ollama.

