Llama-Swap: حل المشكلة الأكثر إزعاجاً في نماذج اللغة المحلية
BBetter Stack
Computing/SoftwareConsumer ElectronicsInternet Technology
Transcript
00:00:00يعمل إعداد النموذج المحلي لدينا بشكل رائع، حتى نحتاج إلى نموذج مختلف.
00:00:04الآن نقوم بإيقاف خادم llama، وتغيير المنافذ، وتحديث عنوان URL الأساسي لـ OpenAI، والانتظار
00:00:10لإعادة التحميل، ونأمل فقط ألا يحدث أي خلل.
00:00:13كل ذلك لأن نموذج البرمجة لدينا ضخم جداً للدردشة السريعة، ونموذجك الصغير غبي جداً
00:00:18للبرمجة الحقيقية.
00:00:19LlamaSwap يصلح ذلك.
00:00:21نقطة نهاية واحدة، نماذج متعددة، تبديل تلقائي، وأدواتك لا تعرف أن شيئاً قد تغير.
00:00:26سأريك كيفية إعداد هذا في الدقائق القليلة القادمة.
00:00:34معظم مطوري نماذج اللغة المحلية يصطدمون في النهاية بنفس العائق.
00:00:37في البداية تستخدم شيئاً مريحاً، مثل llama أو lmstudio، شيئاً يعمل ببساطة.
00:00:44لأنه يعمل بالفعل.
00:00:45وبصراحة هذا رائع، لأنها أصبحت أفضل بكثير.
00:00:48لكن بعد ذلك نبدأ في الرغبة في مزيد من التحكم.
00:00:51تريد أعلام llama CPP دقيقة، وتوزيع طبقات GPU، وربما حجم السياق، وخلفيات مخصصة، أو
00:00:59حتى نماذج تجريبية.
00:01:01لذا تقترب أكثر من خادم llama الخام، وهذا يمنحك شعوراً رائعاً.
00:01:06إلى أن تدرك أنك استبدلت مشكلة بأخرى.
00:01:09الآن أنت تفعل هذا.
00:01:11توقف خادم llama، ثم تبدأ QuinCoder، ثم بعد خمس دقائق، ماذا
00:01:16تفعل؟
00:01:17أنت توقف خادم llama الخاص بك.
00:01:18أنت تتنقل بين هذه النماذج.
00:01:20وفي كل مرة تفعل ذلك، شيء ما ينتظر، أو يعيد الاتصال، أو يفشل، أو يستخدم النموذج الخاطئ
00:01:26بصمت.
00:01:27لذا ما تحاول فعله حقاً هو الاحتفاظ بنقطة نهاية واحدة في الواجهة، وتبديل النماذج التي تريدها
00:01:31خلفها.
00:01:33هذه هي الفجوة التي يسدها llama swap.
00:01:36إذا كنت تستمتع بأدوات البرمجة التي تسرع سير عملك، فتأكد من الاشتراك.
00:01:39لدينا فيديوهات تصدر طوال الوقت.
00:01:41الآن دعني أريك كيف يعمل كل هذا، قبل أن نتحدث عنه.
00:01:44حالياً يعمل llama swap محلياً على منفذ واحد.
00:01:48العميل الخاص بي يعرف فقط عنوان URL الأساسي هذا، لا يوجد عنوان لـ Quin وآخر لـ small LM، وآخر
00:01:55للتضمينات (embeddings)، بل باب أمامي واحد فقط.
00:01:58إليك إعداد بسيط يحتوي على نموذجين.
00:02:02أحدهما QuinCoder، والآخر small LM2.
00:02:06وكل واحد له أمره الخاص.
00:02:09وكل واحد له ملف النموذج الخاص به.
00:02:11وكل واحد له حجم السياق الخاص به.
00:02:14والفرق بينهما هو أن كل واحد منهما لديه أيضاً وقت بقاء (TTL) خاص به.
00:02:19الآن سأطلب شيئاً من نموذج البرمجة.
00:02:22أرسل طلباً عادياً للدردشة بأسلوب OpenAI.
00:02:25يقول حقل النموذج QuinCoder، حسناً، رائع.
00:02:30دعونا نراقب السجلات.
00:02:32ينتظر حتى تصبح الخلفية جاهزة، ثم يرسل الطلب.
00:02:36الآن إليك الشيء الذي لا يحدث.
00:02:39أنا لا أقوم بتغيير عنوان URL.
00:02:41أنا لا أعيد تشغيل open web UI.
00:02:43أنا لا أعدل هذا في cursor.
00:02:46أنا أقوم بتغيير حقل واحد فقط.
00:02:48لذا ينتقل النموذج من QuinCoder إلى small LM2، نفس نقطة النهاية، نفس العميل، نموذج مختلف.
00:02:55وعندما يظل النموذج خاملاً بعد وقت البقاء (TTL)، يمكن لـ llama swap إلغاء تحميله لتعود ذاكرة VRAM.
00:02:59هذه هي الحيلة كلها.
00:03:00تعتقد أدواتك أنها تتحدث إلى واجهة برمجة تطبيقات واحدة.
00:03:02بينما يتولى llama swap الجزء الفوضوي خلف الكواليس للتحكم حقاً في كيفية سير الأمور.
00:03:04حسناً، عظيم.
00:03:09إذن ما هو llama swap؟
00:03:10لقد قمت بعرضه هنا، أليس كذلك؟
00:03:11فكر فيه كمركز لنماذجك المحلية.
00:03:12تطبيقاتك لا تتحدث مباشرة مع كل خادم نموذج.
00:03:13بل تتحدث إلى llama swap.
00:03:16ثم ينظر llama swap في حقل النموذج ويقرر ما يجب أن يحدث.
00:03:19إذا كان النموذج يعمل بالفعل، فسيقوم بتوجيه الطلب.
00:03:21إذا لم يكن النموذج يعمل، فسيقوم ببدء تشغيله.
00:03:25وإذا كان هناك نموذج آخر يجب أن يفسح المجال، فسيقوم بإيقافه.
00:03:28ثم يتلقى العميل استجابة طبيعية.
00:03:31لذلك لا داعي لتغيير عناوين URL الأساسية كل 10 دقائق.
00:03:35هناك ملف تنفيذي واحد، ملف إعداد واحد، ونقطة نهاية API مستقرة واحدة.
00:03:38إنه مبني بلغة Go ويستخدم إعدادات YAML.
00:03:41يعمل كوكيل (proxy) لواجهات برمجة التطبيقات المتوافقة مع OpenAI وAnthropic ويمكنه
00:03:45أن يعمل أمام خلفيات مثل llama cpp وvllm وtabby API وغيرها.
00:03:48إذا كنت محظوظاً، فقد يكون لديك 10 أو 20 نموذجاً على القرص، ولكن ذاكرة VRAM تكفي فقط
00:03:53لتحميل نموذج أو اثنين.
00:03:59وقت البقاء (TTL) يساعد في ذلك.
00:04:05إذا ظل النموذج خاملاً لفترة كافية، يمكن لـ llama swap إلغاء تحميله.
00:04:06بدلاً من أن تظل وحدة معالجة الرسومات (GPU) محملة بنموذج لا نستخدمه بالفعل، يمكنه
00:04:08تفريغ تلك الذاكرة للطلب التالي.
00:04:11من قبل، كان عليك تذكر ما الذي يعمل حالياً.
00:04:17الآن الإعداد يتذكر ذلك بدلاً عنك.
00:04:20في هذه المرحلة، السؤال البديهي هو لماذا لا نكتفي باستخدام llama أو LM Studios أو خادم
00:04:23llama العادي؟
00:04:25والإجابة هي، حسناً، قد تفعل ذلك.
00:04:31Llama swap لا يحل محل هذه الأدوات دائماً.
00:04:32إنه يحل مشكلة محددة للغاية.
00:04:35مقارنة بـ llama، فإن llama swap ليس متجراً للنماذج أو أداة تنزيل أو واجهة سطر أوامر
00:04:37سهلة للمبتدئين.
00:04:40ليس هذا هو الهدف هنا.
00:04:47الهدف هو التحكم.
00:04:49أنت تحضر إصدارات llama cpp الخاصة بك، وتحضر أعلامك الخاصة، وتحدد بالضبط كيفية تشغيل
00:04:50كل نموذج.
00:04:55مقارنة بـ LM Studio، فإن llama swap يركز أكثر على الخادم، ولا يتطلب واجهة رسومية.
00:04:57إنه يناسب بشكل أفضل جهاز التطوير، أو خادم المختبر المنزلي، أو Docker، أو جهازاً مشتركاً
00:05:02حيث تحتاج الأدوات فقط إلى واجهة برمجة تطبيقات مستقرة.
00:05:07هذا ليس بسهولة تشغيل “llama run llama 3”.
00:05:09أنت بحاجة إلى ملفات النماذج الخاصة بك.
00:05:13تحتاج إلى فهم خلفيتك التقنية.
00:05:15تحتاج إلى كتابة YAML.
00:05:17تحتاج إلى معرفة الأعلام التي تناسب وحدة معالجة الرسومات الخاصة بك.
00:05:19لا يوجد معرض مدمج للنماذج يقوم بتنزيل وتهيئة كل شيء لك.
00:05:22لذا بصراحة، الإعداد مرهق للغاية.
00:05:26ولكن بالنسبة لبعض المطورين، هذا يحل ألماً معيناً.
00:05:29ألم معرفة النموذج الذي تريده بالضبط، ولكن إضاعة الوقت في ربط وإعادة ربط
00:05:32كل شيء من حوله.
00:05:38يستحق التجربة إذا كنت تستخدم أدوات مثل cursor أو continue أو عملاء مخصصين أو نصوصاً محلية.
00:05:39سيكون هذا مفيداً، لكن الإعداد يتطلب جهداً أكبر.
00:05:44إذن هذا هو llama swap.
00:05:47نقطة نهاية API مستقرة واحدة، نماذج محلية متعددة خلفها، تبديل تلقائي، إلغاء تحميل
00:05:49عند الخمول، وتحكم كامل في الخلفية.
00:05:54الفكرة الرئيسية هنا بسيطة.
00:05:56عملاؤك يتوقفون عن الاهتمام بخادم النموذج الذي يعمل بالفعل.
00:05:58Llama swap يتولى كل ذلك نيابة عنهم.
00:06:02إذا كنت تستمتع بأدوات برمجية كهذه، فتأكد من الاشتراك.
00:06:04نراكم في فيديو آخر.
00:06:06نراكم في فيديو آخر.