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