Skip to main content
PromptQuorum
الرئيسية/LLM المحلية المتقدمة/شرح llama.cpp: المحرك الذي يشغّل Ollama (2026)
Overview & Reference

شرح llama.cpp: المحرك الذي يشغّل Ollama (2026)

·12 دقيقة قراءة·بقلم Hans Kuepper · مؤسس PromptQuorum، أداة إرسال الذكاء الاصطناعي متعددة النماذج · PromptQuorum

**llama.cpp هو برنامج مجاني ومفتوح المصدر (برخصة MIT) مكتوب بلغة C/C++ لتشغيل نماذج اللغة الكبيرة محليًا على وحدة المعالجة المركزية أو الرسوميات الخاصة بك، أنشأه Georgi Gerganov وتتولى صيانته منظمة ggml-org على GitHub.** عرّف صيغة ملف النماذج GGUF المستخدمة اليوم في منظومة الذكاء الاصطناعي المحلي بأكملها، ويدعم الضغط الكمي من 8 بت وصولًا إلى نحو 1.5 بت لكل وزن، ويتضمن خلفيات تسريع بالعتاد لـCUDA وMetal وVulkan وROCm/HIP وSYCL ووحدة المعالجة المركزية (AVX/AVX2/AVX512)، ويأتي مزودًا بخادم HTTP مدمج متوافق مع OpenAI يسمى llama-server. يستخدم Ollama برنامج llama.cpp كمحرك استدلال على معظم المنصات، مضيفًا فوقه سجل نماذج وواجهة سطر أوامر ونظام تعبئة Modelfile — لذا فإن اختيار llama.cpp مباشرة يعني استبدال سهولة الأمر الواحد في Ollama بتحكم مباشر في خيارات البناء والضغط الكمي وإعدادات الخادم.

llama.cpp هو محرك استدلال مجاني مكتوب بلغة C/C++ ومرخّص بموجب رخصة MIT، أنشأه Georgi Gerganov وتتولى صيانته منظمة ggml-org على GitHub، وهو مصمم لتشغيل نماذج اللغة الكبيرة محليًا على وحدات المعالجة المركزية والرسوميات بأقل قدر من الاعتماديات. عرّف صيغة النماذج GGUF المستخدمة في منظومة الذكاء الاصطناعي المحلي بأكملها، ويأتي مزودًا بخادم مدمج متوافق مع OpenAI يسمى llama-server، وهو محرك الاستدلال الذي تعتمد عليه أدوات عديدة أخرى للذكاء الاصطناعي المحلي، من بينها Ollama على معظم المنصات.

شرح llama.cpp: المحرك الذي يشغّل Ollama (2026)

النقاط الرئيسية

  • مجاني ومفتوح المصدر برخصة MIT، تتولى صيانته ggml-org على GitHub
  • مكتوب بلغة C/C++، ومبني على مكتبة المصفوفات ggml
  • عرّف صيغة ملف النماذج GGUF (.gguf) المستخدمة في منظومة الذكاء الاصطناعي المحلي بأكملها
  • خلفيات العتاد: CUDA وMetal وVulkan وROCm/HIP وSYCL ووحدة المعالجة المركزية (AVX/AVX2/AVX512)
  • دعم الضغط الكمي من 8 بت وصولًا إلى نحو 1.5 بت لكل وزن
  • يأتي مزودًا بـllama-server، خادم HTTP مدمج متوافق مع OpenAI مع واجهة ويب
  • يستخدم Ollama برنامج llama.cpp كمحرك استدلال على معظم المنصات، ويضيف سجل نماذج وواجهة سطر أوامر
  • لا يوجد مثبّت رسومي — يُستخدم عبر سطر الأوامر أو واجهة الويب المدمجة أو ربط اللغات البرمجية

📍 في جملة واحدة

llama.cpp محرك استدلال مجاني بلغة C/C++ مرخّص بموجب MIT أنشأه Georgi Gerganov، يشغّل النماذج اللغوية محليًا على وحدة المعالجة المركزية أو الرسوميات، وعرّف صيغة النماذج GGUF، ويُستخدم كخلفية استدلال تعتمد عليها أدوات عديدة للذكاء الاصطناعي المحلي، من بينها Ollama على معظم المنصات.

💬 بعبارات بسيطة

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

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

ما هو llama.cpp؟

llama.cpp محرك استدلال مجاني ومرخّص بموجب MIT، مكتوب بلغة C/C++، يشغّل نماذج اللغة الكبيرة محليًا بأقل قدر من الاعتماديات الخارجية. أنشأه Georgi Gerganov عام 2023 كنقل كامل من الصفر بلغة C/C++ لكود استدلال LLaMA الخاص بشركة Meta، مصمم للعمل على عتاد استهلاكي عادي — بما في ذلك الأجهزة التي تعتمد على وحدة المعالجة المركزية فقط — بدلاً من اشتراط وحدة رسوميات لمراكز البيانات. يتولى صيانة المشروع اليوم منظمة ggml-org على GitHub، بمساهمات من مجتمع كبير مفتوح المصدر، وقد توسّع ليدعم نماذج الرؤية واللغة إلى جانب النماذج النصية فقط.

  • أنشأه Georgi Gerganov، وتتولى صيانته اليوم منظمة ggml-org
  • مكتوب بلغة C/C++، ومبني على ggml، مكتبة مصفوفات يصونها الفريق نفسه
  • مرخّص بموجب MIT: الكود المصدري متاح للجمهور للاستخدام والتعديل وإعادة التوزيع وفق شروط الرخصة
  • يعمل على العتاد المعتمد على وحدة المعالجة المركزية فقط وعلى وحدات الرسوميات على حد سواء، بخلاف المحركات التي تشترط وحدة رسوميات متوافقة مع CUDA
  • عرّف صيغة GGUF، وهي صيغة ملف واحد تخزّن أوزان النموذج وبيانات الضغط الكمي والبيانات الوصفية معًا
  • أحد أكثر مشاريع استدلال النماذج اللغوية المفتوحة المصدر إشارة إليه، بأكثر من 100 ألف نجمة على GitHub

ما هو تسريع العتاد الذي يدعمه llama.cpp؟

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

CUDA

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

Metal

التفاصيل:
لأجهزة Mac ذات Apple Silicon (M1 وما بعده). يستخدم واجهة Metal من Apple لتشغيل الاستدلال على أنوية الرسوميات في شرائح سلسلة M.

Vulkan

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

ROCm / HIP

التفاصيل:
لوحدات رسوميات AMD، عبر حزمة الحوسبة ROCm من AMD، كبديل عن الاعتماد الحصري على CUDA.

SYCL

التفاصيل:
لوحدات رسوميات Intel، بما في ذلك الرسوميات المدمجة في بعض معالجات Intel، عبر تطبيق oneAPI SYCL من Intel.

وحدة المعالجة المركزية (AVX / AVX2 / AVX512)

التفاصيل:
تنفيذ محسّن يعتمد على وحدة المعالجة المركزية فقط باستخدام تعليمات متجهية على معالجات x86 الحديثة — المسار الاحتياطي الذي يتيح تشغيل llama.cpp دون أي وحدة رسوميات على الإطلاق.

يوثّق المشروع أيضًا خلفيات إضافية وتجريبية (منها BLAS وCANN وWebGPU) في وثائق البناء الخاصة به على GitHub؛ يركّز هذا القسم على الخلفيات التي يختار بينها معظم مستخدمي النماذج اللغوية المحلية فعليًا.

ما هو GGUF، وأي صيغة ضغط كمي يجب اختيارها؟

GGUF هي صيغة ملف النماذج التي عرّفها llama.cpp لتخزين أوزان النموذج المضغوطة كميًا مع البيانات الوصفية اللازمة لتشغيله (المُجزّئ اللغوي، البنية، طول السياق)، لتحل محل صيغة GGML السابقة للمشروع. يقلّل الضغط الكمي من استهلاك ذاكرة النموذج بتخزين أوزانه بدقة رقمية أقل من صيغة التدريب الأصلية، مقابل بعض جودة المخرجات مقابل استهلاك أقل لذاكرة الرسوميات/الذاكرة العشوائية واستدلال أسرع.

Q8_0

التفاصيل:
ضغط كمي بـ8 بت، الأقرب إلى النموذج الأصلي غير المضغوط بين صيغ llama.cpp الشائعة، وبأكبر حجم ملف في المجموعة.

Q5_K_M

التفاصيل:
صيغة "K-quant" بـ5 بت توزّع الدقة بشكل غير متساوٍ بين طبقات النموذج، وتُفضّل الجودة على أصغر حجم ملف ممكن.

Q4_K_M

التفاصيل:
صيغة K-quant بـ4 بت تُستخدم عادة كنقطة توازن بين حجم الملف وجودة المخرجات — توصية افتراضية شائعة عند محدودية ذاكرة الرسوميات.

أقل من 4 بت (Q3 وQ2 وصيغ نحو 1.5 بت)

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

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

ماذا يقدّم llama-server؟

llama-server هو الملف التنفيذي لخادم HTTP المرفق مع llama.cpp. يوفّر ملف تنفيذي واحد الواجهة البرمجية الأصلية الخاصة بـllama.cpp، وواجهة برمجية متوافقة مع OpenAI، وطبقة توافق مع واجهة Ollama البرمجية، وواجهة دردشة مدمجة عبر المتصفح، وكل ذلك مبني على النموذج المحمّل نفسه والذاكرة المؤقتة نفسها.

  • نقاط نهاية متوافقة مع OpenAI ضمن /v1، بحيث يمكن للأدوات المبنية أصلًا لواجهة OpenAI البرمجية أن تشير غالبًا إلى نسخة محلية من llama-server بمجرد تغيير عنوان URL الأساسي
  • واجهة ويب مدمجة يقدّمها الملف التنفيذي مباشرة، قابلة للاستخدام دون تثبيت واجهة أمامية منفصلة
  • طبقة توافق مع واجهة Ollama البرمجية، تتيح لبعض أدوات العملاء الموجهة لـOllama الاتصال بـllama-server بدلاً من ذلك
  • نقاط نهاية للفحص الداخلي مثل /props و/slots لمعاينة حالة الخادم والطلبات
  • دعم عدة "فتحات" طلبات متزامنة على نموذج محمّل واحد، بدلاً من معالجة طلب واحد في كل مرة

كيف تبني وتشغّل llama.cpp؟

عادة ما يُبنى llama.cpp من الكود المصدري باستخدام CMake، وإن كان المشروع ينشر أيضًا ملفات تنفيذية جاهزة لعدة منصات على صفحة الإصدارات على GitHub إذا أردت تفادي التصريف بنفسك.

  1. 1
    ثبّت سلسلة أدوات ++C وCMake الخاصة بنظام تشغيلك إذا لم تكونا مثبّتتين بالفعل.
  2. 2
    استنسخ المستودع: git clone https://github.com/ggml-org/llama.cpp.
  3. 3
    اضبط عملية البناء وفق خلفية العتاد لديك — مثلاً بتفعيل دعم CUDA أو Metal أو Vulkan كخيار في CMake، أو الإبقاء على وحدة المعالجة المركزية فقط.
  4. 4
    ابنِ المشروع باستخدام CMake: cmake -B build ثم cmake --build build --config Release.
  5. 5
    نزّل نموذجًا بصيغة GGUF، مثلًا من Hugging Face، واختر صيغة ضغط كمي تناسب ذاكرة الرسوميات أو الذاكرة العشوائية المتوفرة لديك.
  6. 6
    شغّل النموذج من سطر الأوامر باستخدام الملف التنفيذي llama-cli للدردشة المباشرة في الطرفية، أو شغّل llama-server لإتاحة واجهة برمجية عبر HTTP متوافقة مع OpenAI وواجهة ويب.
  7. 7
    عند استخدام llama-server، اتصل به من متصفح على عنوانه المحلي، أو وجّه أي عميل متوافق مع واجهة OpenAI البرمجية إلى نقطة نهايته /v1.

هل يجب أن أبني llama.cpp من الكود المصدري؟

لا — ينشر المشروع أيضًا ملفات تنفيذية جاهزة على صفحة الإصدارات على GitHub لعدة منصات، غير أن البناء من الكود المصدري يتيح لك تفعيل خلفية العتاد المناسبة تحديدًا (CUDA وMetal وVulkan وما شابه) لجهازك.

من أين أحصل على نماذج GGUF لتشغيلها؟

تُنشر نماذج كثيرة بصيغة GGUF على Hugging Face ومواقع مشاركة النماذج الأخرى، عادة بعدة صيغ ضغط كمي لكل نموذج، حتى تتمكن من اختيار ما يناسب الذاكرة المتوفرة لديك.

ما علاقة llama.cpp بـOllama؟

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

  • llama.cpp هو محرك الاستدلال منخفض المستوى؛ وOllama طبقة تعبئة تضيف سجل نماذج وتنزيلات بأمر واحد وواجهة سطر أوامر أبسط ونظام إعداد Modelfile خاصًا بها
  • يمنح اختيار llama.cpp مباشرة تحكمًا في خيارات البناء الدقيقة وصيغة الضغط الكمي وإعدادات الخادم التي لا تكشفها واجهة Ollama المبسّطة
  • يستبدل اختيار Ollama هذا التحكم بمسار أسرع للوصول إلى نموذج قيد التشغيل، مقابل بعض المرونة في كيفية إعداد المحرك الأساسي
  • يمكن لكليهما توفير واجهة برمجية متوافقة مع OpenAI — llama.cpp عبر llama-server، وOllama عبر طبقته البرمجية الخاصة

لمن يناسب استخدام llama.cpp مباشرة؟

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

llama.cpp مقابل Ollama مقابل LM Studio مقابل vLLM

تقع هذه الأدوات الأربع في نقاط مختلفة على طيف التحكم مقابل الراحة، واثنتان منها (Ollama، وجزء من المنظومة المحيطة بـLM Studio على Apple Silicon) مبنيتان بدورهما على محركات استدلال بدلاً من كونهما بديلين مبنيين من الصفر.

llama.cpp

الواجهة والإعداد:
سطر أوامر، وواجهة ويب مدمجة، وواجهة برمجية متوافقة مع OpenAI عبر llama-server. البناء من الكود المصدري باستخدام CMake أو استخدام ملف تنفيذي جاهز؛ تختار صيغة الضغط الكمي بنفسك.
الأنسب لـ:
أقصى قدر من التحكم، والنشر المضمّن/الطرفي، وخطوط معالجة مخصصة مبنية مباشرة على المحرك.

Ollama

الواجهة والإعداد:
سطر أوامر وواجهة REST البرمجية، يُوصف عادة بأنه يعمل على معظم المنصات باستخدام llama.cpp كخلفية. أمر واحد يثبّته؛ أمر واحد يجلب نموذجًا ويشغّله.
الأنسب لـ:
أسرع طريق لنموذج محلي يعمل دون خطوة بناء، لمن لا يحتاج إلى إعداد على مستوى المحرك.

LM Studio

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

vLLM

الواجهة والإعداد:
خادم Python بواجهة برمجية متوافقة مع OpenAI، يُثبّت عبر pip في بيئة Python/CUDA. يستخدم محرك خدمة PagedAttention الخاص به بدلاً من GGUF أو llama.cpp.
الأنسب لـ:
خدمة وحدات رسوميات عالية الإنتاجية ومتعددة المستخدمين في بيئة الإنتاج، وليس الدردشة المحلية لمستخدم واحد.

لم يُجرِ هذا المقال اختبار أداء مستقلًا للسرعة أو جودة المخرجات بين هذه الأدوات الأربع، ولا يزعم أن إحداها أفضل تقنيًا — تقتصر المقارنة أعلاه على حقائق موثّقة تتعلق بالبنية والإعداد ونموذج الوصول. للاطلاع على أرقام الإنتاجية حسب العتاد، راجع مقارنة llama.cpp مقابل Ollama مقابل vLLM المخصصة ودليل خوادم الاستدلال المؤسسية الذي يتناول vLLM بتفصيل أكبر.

ما الذي لا يغطيه هذا المقال؟

هذا مقال توضيحي مبني على الوثائق العامة ومستودع llama.cpp، وليس تقرير اختبار أداء عملي.

  • لا توجد أرقام رموز في الثانية أو زمن استجابة مُقاسة بشكل مستقل — تعتمد الإنتاجية بشدة على عتادك ونموذجك وصيغة الضغط الكمي وخيارات البناء الخاصة بك
  • لا توجد نسب فقدان جودة مُتحقق منها بشكل مستقل لصيغ ضغط كمي محددة — تتفاوت حسب بنية النموذج والمهمة
  • لا تدقيق أمني سطرًا بسطر لكود llama.cpp — فهو مفتوح المصدر ومرخّص بموجب MIT، لذا فإن الكود نفسه متاح للمراجعة
  • لا تغطية لكل خلفية أو خيار بناء يدعمه llama.cpp — يركّز هذا المقال على الخلفيات والصيغ التي يختار بينها معظم مستخدمي النماذج اللغوية المحلية
  • لا تغطية لاتفاقيات الدعم التجاري، بما أن llama.cpp مشروع مفتوح المصدر مجتمعي وليس منتجًا لمورّد بعقد دعم

أخطاء شائعة عند تجربة llama.cpp

ينشأ معظم الاحتكاك مع llama.cpp من التعامل معه كتطبيق للمستهلك بدلاً من محرك يجب بناؤه بنفسك.

الأسئلة الشائعة

ما هو llama.cpp؟

llama.cpp محرك استدلال مجاني بلغة C/C++ مرخّص بموجب MIT أنشأه Georgi Gerganov، يشغّل نماذج اللغة الكبيرة محليًا على وحدة المعالجة المركزية أو الرسوميات. تتولى صيانته منظمة ggml-org على GitHub.

هل llama.cpp مجاني؟

نعم. llama.cpp برنامج مجاني ومفتوح المصدر صادر بموجب رخصة MIT، دون الحاجة إلى اشتراك أو حساب.

ما هو GGUF؟

GGUF هي صيغة ملف النماذج التي عرّفها llama.cpp لتخزين أوزان النموذج المضغوطة كميًا مع البيانات الوصفية اللازمة لتشغيله، مثل المُجزّئ اللغوي وتفاصيل البنية. تُستخدم في جزء كبير من منظومة الذكاء الاصطناعي المحلي، وليس فقط من قِبل llama.cpp نفسه.

هل يستخدم Ollama برنامج llama.cpp؟

تصفه مقالات تقنية مجتمعية وطرف ثالث عادة بأن Ollama يستخدم llama.cpp كمحرك استدلال على معظم المنصات، مضيفًا فوقه سجل نماذج وواجهة سطر أوامر ونظام Modelfile خاصًا به. لا يوثّق Ollama نفسه هذا الاعتماد بالتفصيل.

ما العتاد الذي يدعمه llama.cpp؟

يدعم llama.cpp التشغيل على وحدة المعالجة المركزية فقط (مع تحسينات AVX/AVX2/AVX512)، إضافة إلى التسريع بوحدة الرسوميات عبر CUDA (لـNVIDIA) وMetal (لـApple Silicon) وVulkan وROCm/HIP (لـAMD) وSYCL (لـIntel).

ما صيغ الضغط الكمي التي يدعمها llama.cpp؟

يدعم llama.cpp الضغط الكمي من صيغ 8 بت مثل Q8_0 وصولًا إلى صيغ نحو 1.5 بت، مع صيغ وسيطة شائعة الاستخدام مثل Q5_K_M وQ4_K_M توازن بين حجم الملف وجودة المخرجات.

هل أحتاج إلى معرفة ++C لاستخدام llama.cpp؟

لا — تشغيل النماذج عبر الملفين التنفيذيين llama-cli أو llama-server لا يتطلب كتابة كود. بناء المشروع من الكود المصدري يتطلب سلسلة أدوات ++C وCMake، لكن لا يتطلب كتابة ++C بنفسك، إلا إذا أردت تعديل المحرك نفسه.

هل لدى llama.cpp واجهة مستخدم رسومية؟

يتضمن llama-server واجهة ويب مدمجة عبر المتصفح، لكن لا يوجد مثبّت رسومي منفصل أو تطبيق سطح مكتب مماثل لـLM Studio. يمكن لعدة تطبيقات طرف ثالث، منها واجهات أمامية متوافقة مع Ollama ومتوافقة مع واجهة OpenAI البرمجية، الاتصال بـllama-server بدلاً من ذلك.

هل llama.cpp أفضل من Ollama؟

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

هل يمكن أن يعمل llama.cpp دون وحدة رسوميات؟

نعم. صُمم llama.cpp للعمل على عتاد يعتمد على وحدة المعالجة المركزية فقط باستخدام تعليمات متجهية (AVX/AVX2/AVX512)، إضافة إلى دعم التسريع بوحدة الرسوميات عند توفرها.

المصادر

← العودة إلى LLM المحلية المتقدمة