Local AI

أولاما في بيئة الإنتاج: إدارة سير العمل متعدد النماذج وتوسيع واجهة برمجة التطبيقات لفرق المؤسسات

لم يعد نقل نماذج اللغات الكبيرة (LLMs) من دفاتر العمل التجريبية إلى تطبيقات المؤسسات ذات الجودة الإنتاجية مجرد اهتمام متخصص، بل أصبح مطلباً تشغيلياً قياسياً. بالنسبة للفرق التي تلتزم بسيادة البيانات والاستدلال منخفض زمن الوصول، برزت أولاما كحل رائد لتشغيل النماذج مفتوحة المصدر محلياً. ومع ذلك، فإن مجرد تشغيل ollama serve على عقدة واحدة نادراً ما يكون كافياً في البيئات عالية الحركة. يستكشف هذا المنشور الأنماط المعمارية المطلوبة لإدارة سير العمل متعدد النماذج وتوسيع نطاق واجهات برمجة التطبيقات (APIs) الخاصة بأولاما بكفاءة.

تحدي الاستدلال الأحادي

في مراحل النشر المبكرة، غالباً ما تتعامل نسخة واحدة من أولاما مع جميع الطلبات. وعلى الرغم من فعاليتها في الاختبار، فإن هذا النهج يخلق عنق زجاجة. ذاكرة وحدة معالجة الرسومات (GPU) محدودة، ويمكن لنوافذ السياق للنماذج مثل Llama 3 أو Mistral أن تستنفد ذاكرة VRAM بسرعة. علاوة على ذلك، فإن توجيه جميع حركة المرور عبر نقطة نهاية واحدة يمنع التوسع الأفقي. لتحقيق موثوقية على مستوى المؤسسات، يجب علينا فصل محرك الاستدلال عن منطق التطبيق وإدخال طبقات إدارة.

حاوية وتوسيع النطاق باستخدام Docker

أكثر نقطة بداية متينة للإنتاج هي الحاويات (Containerization). يتيح لك Docker تحديد بيئات قابلة للتكرار حيث تكون وقت تشغيل أولاما، ومكتبات النماذج، والمتغيرات البيئية خاضعة للتحكم في الإصدار. باستخدام Docker Compose، يمكن للفرق تشغيل حاويات أولاما متعددة، حيث قد يتم تحسين كل منها لأحجام نماذج مختلفة أو قيود الأجهزة.

إليك تكوين Docker Compose أساسي يعرض واجهة برمجة تطبيقات أولاما ويحمل مسبقاً نموذجاً خفيفاً لمهام التوجيه:

version: '3.8'
services:
  ollama:
    image: ollama/ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama-data:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
    environment:
      - OLLAMA_HOST=0.0.0.0
      - OLLAMA_KEEP_ALIVE=24h

volumes:
  ollama-data:

يضمن هذا الإعداد بقاء النماذج دائمة عبر عمليات إعادة التشغيل، وأن الخدمة تستمع على جميع واجهات الشبكة، مما يسمح للخدمات المصغرة الأخرى بالاتصال بأمان داخل شبكتك الداخلية.

إدارة سير العمل متعدد النماذج

نادراً ما تعتمد تطبيقات المؤسسات على نموذج واحد. قد يستخدم سير العمل النموذجي نموذجاً أصغر مثل Phi-3 لتصنيف النية، ونموذجاً متوسط الحجم مثل Mistral للتلخيص، ونموذجاً أكبر مثل Llama 3-70B للاستدلال المعقد. تعد أطر العمل للإدارة مثل LangChain أو LlamaIndex ضرورية هنا، ولكن يجب تكوينها لإدارة التبديل بين النماذج بسلاسة.

بدلاً من تسمية النماذج بشكل ثابت (hardcoding)، يجب على أنظمة الإنتاج تنفيذ استراتيجية توجيه. على سبيل المثال، يمكنك إنشاء خدمة وسيطة تفحص حمولة الطلب الوارد. إذا كانت استفسار المستخدم يحتوي على كلمات تقنية، يقوم الموجه بتوجيه الطلب إلى نموذج متخصص في البرمجة. وإلا، فإنه يوجهه إلى نموذج للأغراض العامة. تحسن هذه الاستراتيجية التكاليف وزمن الوصول عن طريق تجنب الحسابات الثقيلة للمهام البسيطة.

توسيع واجهة برمجة التطبيقات وموازنة الحمل

مع زيادة حمل المستخدمين، ستواجه نسخة واحدة من أولاما صعوبة. الحل هو التوسع الأفقي خلف وكيل عكسي مثل Nginx أو Traefik. يتيح لك ذلك توزيع طلبات الاستدلال الواردة عبر عقد أولاما متعددة.

عند تنفيذ موازنة الحمل، من الضروري مراعاة تقارب وحدة معالجة الرسومات (GPU affinity). لا يمكنك تقسيم نموذج كبير واحد عبر وحدتي معالجة رسومات منفصلتين على عقدتين مختلفتين؛ يجب أن يكون كل نموذج كامل محملاً على كل عقدة. لذلك، تعمل موازنة الحمل بشكل أفضل عندما يكون لديك عقد متطابقة متعددة تعمل بنفس النموذج، أو عندما تقوم بتوجيه عائلات نماذج مختلفة إلى مجموعات عقد مختلفة.

الخلاصة

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

Share: