llama.cpp

llama.cpp هي مكتبة برمجية مفتوحة المصدر تُجري عمليات الاستدلال على نماذج لغوية كبيرة متنوعة مثل Llama . [ 3 ] وقد طُوّرت بالاشتراك مع مشروع GGML ، وهو مكتبة موترات للأغراض العامة . [ 4 ]

تتضمن المكتبة أدوات سطر الأوامر ، [ 5 ] بالإضافة إلى خادم بواجهة ويب بسيطة . [ 6 ] [ 7 ]

يُعتبر ملف llama.cpp المعيار الفعلي باعتباره جوهر جميع أدوات الاستدلال المحلي تقريبًا، بما في ذلك Ollama و LM  Studio. [ 8 ]

خلفية

في أواخر سبتمبر 2022، بدأ جورجي جيرجانوف العمل على مكتبة GGML، وهي مكتبة مكتوبة بلغة C تُنفذ جبر الموترات . وقد طور جيرجانوف هذه المكتبة بهدف إدارة الذاكرة بكفاءة عالية ودعم تعدد الخيوط. استُلهم إنشاء GGML من عمل فابريس بيلارد على مكتبة LibNC. [ 9 ]

قبل llama.cpp، عمل جيرجانوف على مكتبة مماثلة تسمى whisper.cpp والتي نفذت Whisper ، وهو نموذج لتحويل الكلام إلى نص من OpenAI . [ 10 ]

تطوير

بدأ جورجي جيرجانوف تطوير llama.cpp في مارس 2023 كتطبيق لرمز استدلال Llama بلغة C/C++ خالصة دون أي تبعيات. وقد حسّن هذا الأداء على أجهزة الكمبيوتر التي لا تحتوي على وحدة معالجة رسومية (GPU) أو أي مكونات مخصصة أخرى، وهو ما كان أحد أهداف المشروع. [ 3 ] [ 11 ] [ 12 ] لاقى llama.cpp رواجًا بين المستخدمين الذين لا يملكون أجهزة متخصصة، حيث كان بالإمكان تشغيله على وحدة المعالجة المركزية (CPU) فقط . وبينما صُمم في البداية لوحدات المعالجة المركزية، أُضيفت لاحقًا دعم لوحدات معالجة الرسوميات (GPU) ووحدات المعالجة العصبية (NPU). [ 13 ] اعتبارًا من مايو 2026[ 14 ]

تم إطلاق تقنية FlashAttention في 30 أبريل 2024 .

في 10 أبريل 2025، تم تقديم libmtmd، مما أعاد تنشيط الدعم للنماذج متعددة الوسائط التي كانت راكدة في السابق.

في 17 ديسمبر 2025، تم تقديم التسريع الكامل على أجهزة Android و ChromeOS من خلال ربط واجهة المستخدم الرسومية الجديدة [ 15 ] ، مما يفتح تطوير التطبيقات الأصلية بما يتجاوز النهج السابق المتمثل في التجميع المتقاطع وتشغيل واجهة سطر الأوامر [ 11 ] [ 16 ] [ 17 ] في غلاف adb .

بنيان

يدعم برنامج llama.cpp العديد من الأجهزة المستهدفة، بما في ذلك x86 و ARM و Metal و BLAS و BLIS و zDNN و ZenDNN و SYCL و MUSA و CUDA و HIP و CANN و OpenCL و RPC و Vulkan (الإصدار 1.2 أو أحدث). [ 18 ] [ 19 ] [ 20 ] [ 21 ] تُشكل هذه الواجهات الخلفية مكتبة GGML للموترات، والتي يستخدمها كود llama.cpp الخاص بالنموذج في الواجهة الأمامية. [ 22 ] يستفيد llama.cpp من العديد من امتدادات وحدة المعالجة المركزية لتحسين الأداء.

يدعم ملف llama.cpp مجموعة متنوعة من الميزات التي تهدف إلى الاستدلال على الأجهزة الطرفية، مثل:

بالإضافة إلى ذلك، يدعم ملف llama.cpp مجموعة متنوعة من الميزات وواجهات برمجة التطبيقات للتواصل مع الواجهة الأمامية، مثل:

  • نقاط نهاية متوافقة مع OpenAI مثل v1/chat/completions.
  • تنسيق الإخراج القائم على القواعد النحوية بصيغة JSON . [ 12 ]

تنسيق ملف GGUF

يُعدّ تنسيق ملف GGUF ( ملف GGML العالمي) [ 27 ] تنسيقًا ثنائيًا يخزن كلًا من الموترات والبيانات الوصفية في ملف واحد، وهو مصمم لحفظ بيانات النموذج وتحميلها بسرعة. [ 28 ] وقد طُرح هذا التنسيق في أغسطس 2023 من قِبل مشروع llama.cpp لتحسين التوافق مع الإصدارات السابقة، حيث أُضيفت إليه دعمًا لبنى نماذج أخرى. [ 13 ] [ 29 ] وقد حلّ هذا التنسيق محل التنسيقات السابقة التي استخدمها المشروع، مثل GGML، ويتم إنتاجه عادةً عن طريق تحويل النماذج المطورة باستخدام مكتبة تعلم آلي مختلفة، مثل PyTorch . [ 28 ]

تصميم

يركز GGUF على التكميم، أي تقليل دقة أوزان النموذج. وهذا قد يؤدي إلى تقليل استخدام الذاكرة وزيادة السرعة، وإن كان ذلك على حساب انخفاض دقة النموذج. [ 30 ] [ 29 ]

يدعم GGUF أنواع الأعداد الصحيحة الكمية من 2 بت إلى 8 بت، [ 31 ] وتنسيقات بيانات الفاصلة العائمة الشائعة مثل float32 و float16 و bfloat16 ، والكمية 1.58 بت. [ 5 ]

يحتوي GGUF على معلومات ضرورية لتشغيل نموذج لغوي شبيه بـ GPT مثل مفردات المُجزِّئ، وطول السياق، ومعلومات الموتر، وسمات أخرى. [ 32 ]

بنية على مستوى البايت (ترتيب البايتات الصغير)

بايتالوصف [ 33 ]
4الرقم السحري لـ GGUF، المحدد حاليًا بـ0x47 0x47 0x55 0x46
4إصدار GGUF، مُعيّن حاليًا على3
8UINT64 tensor_countعدد الموترات
8UINT64 metadata_kv_countعدد أزواج القيم الرئيسية للبيانات الوصفية
عاملكتلة البيانات الوصفية، التي تحتوي على أزواج المفتاح والقيمة metadata_kv_count
عاملكتلة معلومات الموترات، التي تحتوي على قيم tensor_count
عاملuint8_t tensor_data[]كتلة بتات الوزن

كتلة البيانات الوصفية

// مثال على البيانات الوصفية العامة . البنية : 'llama' ، الاسم العام : 'LLaMA v2' ، طول سياق llama : 4096 ، ... ، نوع الملف العام : 10 ، // (يشير عادةً إلى مستوى التكميم، هنا " MOSTLY_Q2_K") ، نموذج محلل الكلمات ggml : 'llama' ، نموذج محلل الكلمات ggml . الرموز : [ '<unk>' , '<s>' , '</s>' , ' ' , '  ' ,' ' , '  ' , ' ' , ' ' , '  ' , ' ' , ' ' , .

كتلة معلومات الموترات

// اسم الموتر رقم n : سلسلة GGUF ، // مثال: "blk.0.ffn_gate.weight" عدد الأبعاد : UINT32 ، // مثال: 2 الأبعاد : UINT64 []، // مثال: [4096, 32000] النوع : UINT32 ، // مثال: 10 (يشير عادةً إلى مستوى التكميم، هنا "GGML_TYPE_Q2_K") الإزاحة : UINT64 // موضع البداية داخل كتلة tensor_data، بالنسبة إلى بداية الكتلة // الموتر رقم (n+1) ...

نماذج

يدعم Llama.cpp العديد من نماذج اللغة الكبيرة، بما في ذلك Llama و Mistral و Gemma و DeepSeek و gpt-oss و Phi و Qwen . [ 34 ]

انظر أيضاً

  • أولاما
  • SGLang – إطار عمل للتوليد المهيكل واستنتاج نماذج اللغة الكبيرة عالية الأداء وتقديمها
  • vLLM – محرك استدلال وتقديم نماذج اللغة الكبيرة

مراجع

  1. "الإصدار الأولي · ggerganov/llama.cpp@26c0846" . GitHub . تم الاطلاع عليه بتاريخ 15 مايو 2024 .
  2. "llama.cpp/LICENSE at master · ggerganov/llama.cpp" . GitHub .
  3. 1 2 كوناتسر، ماثيو. "كيف استغلّ مُشغّل روبوت الدردشة مفتوح المصدر هذا تقنية إدارة التعلم على معالجات x86 وArm" . theregister.com . تاريخ الاسترجاع: 15 أبريل 2024 .
  4. ^ جيرجانوف ، جورجي (17 مايو 2024). "ggerganov/ggml" . جيثب .
  5. 1 2 مان، توبياس (14 يوليو 2024). "عزيزتي، لقد قلصت برنامج الماجستير في القانون! دليل للمبتدئين في التكميم - واختباره" . ذا ريجستر .
  6. ألدن، داروك. "برامج ماجستير القانون المحمولة باستخدام llamafile [ LWN.net ] " . lwn.net . تم الاطلاع عليه بتاريخ 30 يوليو 2024 .
  7. 1 2 مان، توبياس (15 ديسمبر 2024). "مقدمة في فك التشفير التخميني: رموز غش لنماذج LLM أسرع" . theregister .
  8. شاريق مرتضى (25 مارس 2026). "الآثار الجنائية للذكاء الاصطناعي الموضعي: تحليل القطع الأثرية لـ Ollama وLM Studio وllama.cpp". arXiv : 2603.23996v1 [ cs.CR ].
  9. "تقديم Whisper وLLaMA للجماهير مع جورجي جيرجانوف (مقابلات سجل التغييرات #532)" . سجل التغييرات . 22 مارس 2023. تم الاطلاع عليه في 28 يوليو 2024 .
  10. "ggerganov/whisper.cpp" . GitHub .
  11. 1 2 إدواردز، بنج (13 مارس 2023). "يمكنك الآن تشغيل نموذج ذكاء اصطناعي بمستوى GPT-3 على جهاز الكمبيوتر المحمول والهاتف وراسبيري باي" . arstechnica.com . تم الاطلاع عليه في 15 أبريل 2024 .
  12. 1 2 ويست، إيزابيلا كاتارينا؛ فيربر، دايك. تشو، جيفو؛ فان تريك، ماركو؛ ماير، سونيا ك. جوجلان، راديكا؛ كاريرو، زوناميس الأول؛ بايش دانيال. كليسيك، ينس؛ إيبرت، ماتياس P.؛ ترون ، دانيال. كثير، جاكوب نيكولاس (2024). "نماذج لغوية كبيرة تحافظ على الخصوصية لاسترجاع المعلومات الطبية المنظمة" . الطب الرقمي npj . 7 (257): 257. دوى : 10.1038 / s41746-024-01233-2 . بمك 11415382 . بميد 39304709 .  
  13. 1 2 راجبوت، سوراب سينغ؛ شارما، توشار (4 يونيو 2024). "تقييم أساليب التكميم الناشئة للتعلم العميق لتحسين كفاءة الطاقة". المؤتمر الدولي الحادي والعشرون لهندسة البرمجيات (ICSA-C) لعام 2024، IEEE . الصفحات 238-242 . doi : 10.1109/ICSA-C63560.2024.00049 . ISBN  979-8-3503-6625-9.
  14. 1 2 "ggerganov/llama.cpp" . GitHub .
  15. "llama.cpp/docs/android.md at master" . ggml-org/llama.cpp . GitHub . تم الاسترجاع في 2025-12-20 .
  16. هود، ستيفن. "ملف لاما: إيصال برامج الماجستير في القانون إلى الناس، وإلى جهاز الكمبيوتر الخاص بك" . ابتكارات موزيلا . تم الاسترجاع في 28 يوليو 2024 .
  17. "إضفاء الطابع الديمقراطي على الذكاء الاصطناعي باستخدام نماذج اللغة مفتوحة المصدر" . lwn.net . تم الاطلاع عليه بتاريخ 28 يوليو 2024 .
  18. جيرجانوف، جورجي؛ نغوين، شوان سون؛ سلارين (13 أغسطس 2024). "مقدمة إلى ggml" . Huggingface .
  19. كلوسكا، بيوتر؛ كاستيلو، أدريان؛ شيدجر، فلوريان؛ مالوسي، كريستيانو؛ كوينتانا-أورتي، إنريكي (يونيو 2024). "QAttn: نواة معالجة رسومية فعالة لمحولات الرؤية ذات الدقة المختلطة" (ملف PDF) . وقائع ورش عمل مؤتمر IEEE/CVF حول رؤية الحاسوب والتعرف على الأنماط (CVPR) .
  20. ^ جيانيو ، تشانغ. هينجيو، منغ؛ ينغ، هو؛ يو، لوه؛ شياو بينغ، دوان؛ شركة Majumder Abhilash Intel (يوليو 2024). "تشغيل LLMs على وحدات معالجة الرسومات Intel باستخدام llama.cpp" . الكون الموازي . رقم 57. إنتل. ص 34 – 37.  
  21. بولز، جيف (11-13 فبراير 2025). "التعلم الآلي في فولكان باستخدام المصفوفة التعاونية 2" (ملف PDF) . كامبريدج، المملكة المتحدة: مجموعة كرونوس/إنفيديا.
  22. باوندر، ليس (25 مارس 2023). "كيفية إنشاء خادم روبوت محادثة يعمل بالذكاء الاصطناعي باستخدام راسبيري باي 4" . tomshardware.com . تم الاطلاع عليه في 16 أبريل 2024 .
  23. لارابيل، مايكل. "Llamafile 0.7 يدعم AVX-512: أوقات تقييم أسرع بعشر مرات لمعالجات AMD Zen 4" . www.phoronix.com .
  24. والكوياك، بارتوش؛ والكوياك، توماش (2024). "تطبيق نماذج اللغة ضمن بنية تحتية مصممة لمعالجة اللغة الطبيعية" (ملف PDF) . المجلة الدولية للإلكترونيات والاتصالات . 70 (1): 153-159 . doi : 10.24425/ijet.2024.149525 . تاريخ الاسترجاع: 8 مايو 2024 .
  25. "GGUF من تأليف ggerganov · طلب سحب رقم 2398 · ggerganov/llama.cpp" . GitHub .
  26. "ggml/docs/gguf.md at master · ggerganov/ggml" . GitHub .
  27. "ggerganov/llama.cpp/gguf-py/README.md" . GitHub . تم الاطلاع عليه بتاريخ 10 نوفمبر 2024 .
  28. 1 2 "GGUF" . huggingface.co . تم الاطلاع عليه بتاريخ 9 مايو 2024 .
  29. 1 2 موتشي، تيم (3 يوليو 2024). "GGUF مقابل GGML" . www.ibm.com . تم الاطلاع عليه في 26 يوليو 2024 .
  30. لابون، ماكسيم (29 نوفمبر 2023). "تكميم نماذج اللاما باستخدام GGUF و llama.cpp" . ميديوم . نحو علم البيانات . تم الاسترجاع في 9 مايو 2024 .
  31. ^ كابيزاس، داريو؛ فونسيكا ديلجادو، ريجوبرتو؛ رييس شاكون، إيفان؛ فيزكاينو-إيماكانيا، بولينا؛ موروتشو كايامسيلا، مانويل (2024). “دمج Chatbot القائم على LLaMa مع جيل الاسترجاع المعزز كأداة تعليمية تكميلية لطلاب المدارس الثانوية والكليات”. وقائع المؤتمر الدولي التاسع عشر لتقنيات البرمجيات . الصفحات من 395 إلى 402. دوى : 10.5220/0012763000003753 . رقم ISBN  978-989-758-706-1.
  32. ^ دونغ، بو؛ لين، يونيو؛ يو، زينتاو؛ شو، تشن تشونغ؛ لو، يو؛ تشانغ، هانوين. شين هايهاو (يوليو 2024). "تسريع نماذج GGUF بالمحولات" . الكون الموازي . رقم 57. إنتل. ص 28 – 33.  
  33. "مواصفات GGUF (ggml/docs/gguf.md في master · ggml-org/ggml)" .
  34. ggml-org/llama.cpp ، ggml، 19-04-2026 ، تم استرجاعه في 19-04-2026