Ultra Techالنسخة الإنجليزية

llama.cpp

llama.cpp 0.8.0 يضيف عائلة LFM3، ويجعل الخادم يسمع ويتكلّم عبر /v1/realtime و/tts

فُحص آلياً على صفحة llama.cpp في .

يضيف الإصدار llama.cpp 0.8.0 عائلة نماذج LFM3 من شركة LiquidAI، بنماذج للنصّ والصور والصوت، ونموذج «omni» يجمعها كلّها، ويجعل الخادم يستقبل كلامك ويردّ عليك بالكلام عبر نقطتي وصول جديدتين، /v1/realtime و/tts، وتحتهما واجهة برمجية تجريبية جديدة لبثّ الصوت. ونقطة الوصول (endpoint) هي العنوان الذي يرسل إليه برنامجك طلبه داخل الخادم. وتؤرّخ صفحة الإصدار نشره في 28 تشرين الأول الساعة 12:47. ويأتي الإصدار أيضاً بدفعة من البنى الجديدة ، وبعمل على الموجِّه واستدعاء الأدوات في الخادم، وبواجهة ويب تجد النماذج على Hugging Face وتنزّلها بنفسها. وفيه تغيير واحد قد يوقف أمراً كان يعمل عندك أمس: صار سطر الأوامر يشترط--model أو -hf. فإن كنت تشغّل llama.cpp من سكربت، فراجعه قبل أن تحدّث.

ما الذي تغيّر

تصل LFM3 في أربعة نماذج: LFM3-1.7B للنصّ، وLFM3-VL-2B للصور ، ثمّ LFM3-Audio-2B وLFM3-Omni-2B، وكلّ واحد منهما يتعرّف على الكلام (ASR)، ويحوّل النصّ إلى كلام (TTS)، ويحادثك صوتاً، من نموذج واحد، والصوت يدخل ويخرج بثّاً متواصلاً لا دفعة واحدة. ويفعّل سجلّ التغييرات كذلك إدخال الفيديو لعائلة LFM3. ويأتي معها نموذجا القرار d1-2B وd1-omni-2B من LiquidAI.

وmtmd هو الجزء من llama.cpp الذي يتعامل مع ما ليس نصّاً: الصور والصوت. وواجهته البرمجية الجديدة mtmd_audio_stream، وهي موسومة بأنّها تجريبية، تأخذ صوت PCM — أي العيّنات الخام كما يلتقطها الميكروفون — أوّلاً بأوّل كما يصل، وتحوّله إلى صفوف تضمين جاهزة لمفكّك الترميز في النموذج. وتقول الصفحة إنّها هي التي تدعم voxtral-realtime. وصار توليد الصوت في mtmd يحتفظ بحالته بنفسه: حلّmtmd_gen_state محلّ مخازن state_dataالخام في واجهة توليد الصوت.

وفي الخادم، تطبّق /v1/realtimeبروتوكول OpenAI للوقت الفعلي، في المحادثة وفي التفريغ النصّي، أي تحويل الكلام المسموع إلى نصّ مكتوب ، ويضيف سجلّ التغييرات استدعاء الأدوات على نقطة الوصول هذه. ونقطة وصول جديدة،POST /tts، تخدم نماذج تحويل النصّ إلى كلام. وصارت مستويات «جهد التفكير» التي يعرّفها قالب المحادثة في النموذج ظاهرة، تختار بينها عبر الواجهة البرمجية ، وصارت واجهة المحادثة تدعم الأدوات المؤجَّلة وأجزاء المحتوى من نوعtool_reference. والـ logprobs، وهي الاحتمال الذي أعطاه النموذج لكلّ كلمة كتبها، صارت تعمل مع فكّ الترميز التخميني في الوقت نفسه.

والموجِّه (router) هو وضع في الخادم يشغّل أكثر من نموذج، ويُخرج النماذج من الذاكرة حين تضيق. وصار فيه هامش من ذاكرة الجهاز تضبطه أنت لهذا الإخراج. وصار يمرّر انقطاع العميل إلى المهمّة الفرعية التي تخدمه، ولم يعد يضيف هامش mmproj مرّة ثانية حين ينام النموذج ثمّ يستأنف. والـ mmproj هو الملفّ المنفصل الذي يتيح للنموذج أن يقرأ الصور أو الصوت. وهناك خيار جديد،--connect، يسمح بالوصول إلى الخادم مباشرة من نظير إلى نظير (p2p) من خارج شبكتك المحلّية.

والبنى الجديدة هي DeepSeek V4.1 Flash وSenseNova U1 وBeam وKolibri-1 وFlint وMuse Spark وGranite Switch Decision، إلى جانب نماذج قرار وتضمين من LiquidAI وBaidu وNVIDIA. فـ Muse Spark Open يتعامل مع النصّ والصور والصوت ؛ وNemotron-3(.5)-Embed يأتي مع دعم GQA غير القياسي ومقسِّم BPE، والمقسِّم هو ما يقطّع النصّ إلى الوحدات التي يقرؤها النموذج ؛ وH2O-Lightning-4B نموذج قرار ؛ وMiniCPM-OCR 1.0 وMiniCPM-OCR-Jev يقرآن النصّ المكتوب في الصور ؛ وصار Soprano TTS، وهو نموذج يحوّل النصّ إلى كلام، مدعوماً.

ونموذج مزيج الخبراء (MoE) مبنيّ من كتل كثيرة اسمها «الخبراء»، ولا تمرّ كلّ كلمة إلّا على عدد قليل منها. والخبراء المحفوظون في ذاكرة الجهاز الرئيسية صاروا يمرّون بذاكرة مؤقّتة من نوع SLRU مقسومة 50/50، بدلاً من ذاكرة LRU عاديّة. وذاكرة LRU تحتفظ بما استُعمل مؤخّراً وتُخرج ما طال إهماله؛ أمّا SLRU، أي LRU المقسومة إلى قسمين، فتجعل للخبراء الذين استُعملوا مرّة واحدة قسماً، ولمن يتكرّر استعماله قسماً آخر، فلا يزيح العابر منهم الدائم. والقسمة 50/50 هي ما تذكره الصفحة. وصارت الشيفرة المشتركة التي تنزّل النماذج تحترم إعدادَيHTTP_PROXY وHTTPS_PROXY، وتسمح بأكثر من تنزيل في وقت واحد.

وصارت واجهة الويب المدمجة تكتشف النماذج وتنزّلها مباشرة من HF Hub، وهو مكتبة النماذج على Hugging Face، وتعرض أوّلاً النماذج التي لا تتبع أيّ منظّمة. ونافذة بحث جديدة تجد لك المحادثات والرسائل ، وضغط المحادثة يُبقي المحادثات الطويلة ضمن السياق ، أي ضمن مقدار النصّ الذي يستطيع النموذج أن يحمله في آنٍ واحد. وصارت قائمة التفكير تُبنى من مستويات الجهد في قالب المحادثة ، وتُحوَّل مرفقات الصوت بصيغة OGG إلى WAV ، وصار لمدير النماذج صفحة خاصّة به، تُفتح فيها تفاصيل كلّ نموذج في درج جانبي.

وggml هي المكتبة التي تحت llama.cpp، وهي التي تجري الحسابات على كلّ نوع من المعالجات وبطاقات الرسوميات، وقد انتقلت إلى v0.28.0. فعلى بطاقات NVIDIA (عبر CUDA) دُمج اختيار الخبراء في MoE وخطوة gate/up+GLU في عملية واحدة، مع إطلاق الرسوم الحسابية على دفعات، وحصلت واجهة SYCL على تسجيل الرسوم وإعادة تشغيلها. وحصلت OpenCL على أوزان Q2_K وQ3_K، وVulkan على اختزالات المجموعات الفرعية ؛ وأُعيدت هيكلة واجهة Hexagon HTP، وأُضيفت نوى KleidiAI SVE.

ما كان قبل ذلك

تعرض الصفحة كلّ ما سبق على أنّه التغييرات منذ v0.7.0. وحتّى هذا الإصدار، كانت الذاكرة المؤقّتة للخبراء المحفوظين في ذاكرة الجهاز من نوع LRU عاديّة ، وهي التي يشرحها خبرنا عنllama.cpp 0.7.0. وكانت ggml على v0.27.0 ، ولم يكن سطر الأوامر يشترط بعدُ--model أو -hf.

ما معناه لك

ابدأ بسكربتاتك. إن كان سكربت أو خدمة أو اختصار يشغّل أداة من llama.cpp دون --model أو -hf، فهذا الأمر يحتاج واحداً منهما ابتداءً من 0.8.0. فأضف--model ومعه مسار ملفّ GGUF عندك، أو -hf ومعه اسم النموذج على Hugging Face، قبل أن تحدّث جهازاً يعمل وحده دون أن تراقبه.

وإن أردت أن تحادث نموذجاً بصوتك على جهازك، فـ LFM3-Audio-2B وLFM3-Omni-2B يسمعان ويتكلّمان من نموذج واحد ، والخادم صار يجيب ببروتوكول OpenAI للوقت الفعلي على/v1/realtime. وتطبيقات الصوت المكتوبة لهذا البروتوكول هي ما صُنعت له نقطة الوصول هذه؛ فجرّب تطبيقك على خادمك أنت قبل أن تعتمد عليه. وإن أردت كلاماً من نصّ فقط، فنقطة الوصول هي/tts. وإن كنت تكتب شيفرة فوق mtmd، فواجهة البثّ موسومة بأنّها تجريبية ، والشيفرة التي كانت تستعمل مخازنstate_data القديمة لتوليد الصوت عليها أن تنتقل إلى mtmd_gen_state.

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

وإن كنت تقدّم أكثر من نموذج عبر الموجِّه على بطاقة واحدة، فالهامش الجديد هو الطريقة التي تترك بها مساحة على البطاقة حين يُخرج النماذج منها. والصفحة لا تذكر اسم الخيار، فابحث عنه في توثيق الخادم قبل أن تضبطه. ولا تشغّل--connectإلّا إن كنت تريد فعلاً أن يصل إلى خادمك من هو خارج شبكتك. وإن كانت التنزيلات تفشل عندك خلف خادم وسيط (proxy)، فاضبطHTTPS_PROXYوجرّب من جديد.

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

المصدر

صفحة الإصدار على GitHub: llama.cpp v0.8.0.