نشر نماذج اللغة الطبيعية المفتوحة باستخدام خادم LLAMA-CPP: دليل خطوة بخطوة

نشر نماذج اللغة الكبيرة المفتوحة المصدر باستخدام خادم LLAMA-CPP: دليل خطوة بخطوة. تعرف على كيفية تثبيت وإعداد خادم LLAMA-CPP لتقديم نماذج اللغة الكبيرة مفتوحة المصدر، وإجراء الطلبات عبر cURL وعميل OpenAI وحزمة طلبات Python. الأمثلة للنشر المحلي والبعيد.

١٨ أكتوبر ٢٠٢٤

party-gif

افتح قوة نماذج اللغة الكبيرة المفتوحة المصدر (LLMs) باستخدام هذا الدليل الشامل حول نشر LLAMA-CPP Server. اكتشف كيفية خدمة عدة مستخدمين بفعالية باستخدام نموذج لغة واحد، وتحسين الأداء والإمكانية الوصول لتطبيقاتك المدعومة بالذكاء الاصطناعي.

تثبيت LLAMA-CPP

أسهل طريقة للبدء باستخدام LLAMA-CPP هي استخدام مدير الحزم Homebrew لتثبيته. سيعمل هذا بشكل أصلي على أجهزة macOS وLinux. لتثبيت LLAMA-CPP على جهاز Windows، ستحتاج إلى استخدام Windows Subsystem for Linux (WSL).

لتثبيت LLAMA-CPP باستخدام Homebrew، قم بتشغيل الأمر التالي في طرفيتك:

brew install llama-cpp

سيقوم هذا الأمر بتنزيل وتثبيت حزمة LLAMA-CPP على نظامك. بمجرد اكتمال التثبيت، يمكنك البدء باستخدام الأمر llama-server لتقديم نماذج LLM الخاصة بك.

بدء تشغيل خادم LLAMA-CPP

لبدء تشغيل خادم LLAMA-CPP، اتبع هذه الخطوات:

  1. قم بتثبيت LLAMA-CPP باستخدام مدير الحزم Homebrew:

    brew install llama.cpp
    

    سيقوم هذا الأمر بتثبيت LLAMA-CPP على جهاز Mac أو Linux الخاص بك. بالنسبة لمستخدمي Windows، ستحتاج إلى استخدام WSL (Windows Subsystem for Linux) لتثبيت LLAMA-CPP.

  2. ابدأ تشغيل خادم LLAMA-CPP عن طريق تشغيل الأمر التالي:

    llama-server --model <hugging-face-repo-id> --model-file <quantization-file>
    

    استبدل <hugging-face-repo-id> بمعرف مستودع Hugging Face للنموذج الذي تريد تقديمه، و <quantization-file> بملف التكميم المحدد الذي تريد استخدامه (على سبيل المثال، الإصدار المكمم بـ 4 بت في تنسيق GGML).

  3. سيبدأ خادم LLAMA-CPP في الاستماع للطلبات الواردة على localhost:8080 بشكل افتراضي. يمكنك تخصيص عنوان المضيف والمنفذ باستخدام الخيارات المتاحة، مثل --host و --port.

  4. يدعم الخادم خيارات تكوين متنوعة، بما في ذلك تعيين النافذة السياقية القصوى وحجم الدفعة وغير ذلك. يمكنك استكشاف هذه الخيارات عن طريق تشغيل llama-server --help.

  5. بمجرد تشغيل الخادم، يمكنك التفاعل معه باستخدام طرق مختلفة، مثل cURL أو عميل OpenAI أو حزمة Python requests، كما هو موضح في الأقسام السابقة.

تذكر أن خادم LLAMA-CPP مصمم لتوفير طريقة سريعة وفعالة لتقديم نماذج اللغة الكبيرة المفتوحة المصدر على جهازك المحلي أو في بيئة الإنتاج. من خلال الاستفادة من الخادم، يمكنك بسهولة دمج هذه النماذج في تطبيقاتك وتقديمها لعدة مستخدمين باستخدام بطاقة رسومات واحدة.

إرسال طلبات إلى خادم LLAMA-CPP

هناك عدة طرق للتفاعل مع خادم LLAMA-CPP وتقديم طلبات إلى النموذج المقدم:

  1. باستخدام أمر cURL:

    curl -X POST -H "Content-Type: application/json" -d '{"prompt": "Hello, how are you?", "max_tokens": 50}' http://localhost:8080/v1/chat/completions
    

    سيقوم هذا بإرسال طلب POST إلى نقطة نهاية إكمال المحادثة التي تعمل على المضيف المحلي على المنفذ 8080.

  2. باستخدام عميل OpenAI:

    1import openai 2 3openai.api_base = "http://localhost:8080/v1" 4openai.Model.list() 5 6response = openai.ChatCompletion.create( 7 model="chat-gpt-3.5", 8 messages=[ 9 {"role": "system", "content": "You are a helpful assistant."}, 10 {"role": "user", "content": "Hello, how are you?"} 11 ] 12) 13 14print(response.choices[0].message.content)

    هذا يستخدم عميل OpenAI للتفاعل مع خادم LLAMA-CPP، والذي يتوافق مع واجهة برمجة تطبيقات OpenAI.

  3. باستخدام حزمة Python Requests:

    1import requests 2 3url = "http://localhost:8080/v1/chat/completions" 4headers = {"Content-Type": "application/json"} 5data = { 6 "prompt": "Hello, how are you?", 7 "max_tokens": 50 8} 9 10response = requests.post(url, headers=headers, json=data) 11print(response.json())

    هذا يستخدم حزمة Python Requests لإرسال طلب POST إلى نقطة نهاية إكمال المحادثة.

في جميع هذه الأمثلة، يعمل خادم LLAMA-CPP على المضيف المحلي على المنفذ 8080، مقدمًا النموذج المحدد. يمكنك تخصيص تكوين الخادم، مثل عنوان المضيف والمنفذ والنموذج، حسب الحاجة.

تخصيص خادم LLAMA-CPP

يوفر LLAMA-CPP خادمًا قابلاً للتخصيص بشكل كبير يسمح لك بضبط سلوك نشر LLM الخاص بك. فيما يلي بعض الخيارات الرئيسية التي يمكنك تكوينها:

  1. الحد الأقصى للنافذة السياقية: يمكنك تحديد الحد الأقصى لحجم النافذة السياقية للLLM، والذي يحدد الحد الأقصى لطول تسلسل الإدخال الذي يمكن للنموذج معالجته.

  2. حجم الدفعة: يدعم LLAMA-CPP تجميع الطلبات، مما يسمح لك بمعالجة إدخالات متعددة في وقت واحد لتحسين الإنتاجية. يمكنك تكوين حجم الدفعة لتحسين الأداء.

  3. عنوان المضيف: بشكل افتراضي، يستمع خادم LLAMA-CPP على localhost، ولكن يمكنك تغيير عنوان المضيف لجعل الخادم قابلاً للوصول من أجهزة أخرى على شبكتك.

  4. المنفذ: يستمع الخادم على المنفذ 8080 بشكل افتراضي، ولكن يمكنك تحديد منفذًا مختلفًا إذا لزم الأمر.

  5. مسار النموذج: يسمح LLAMA-CPP لك بتخصيص المسار الذي يقوم من خلاله بتحميل ملفات نموذج LLM، مما يمنحك مرونة في تنظيم أصول النموذج الخاصة بك.

  6. نماذج التضمين: بالإضافة إلى نماذج اللغة، يمكن أيضًا لـ LLAMA-CPP تقديم نماذج التضمين، مما يتيح لك دمج قدرات توليد النص وترميز النص في تطبيقاتك.

  7. تتبع المقاييس: يمكن لخادم LLAMA-CPP تتبع مقاييس مختلفة، مثل زمن الاستجابة والإنتاجية، لمساعدتك في مراقبة وتحسين أداء نشرك.

من خلال الاستفادة من هذه خيارات التخصيص، يمكنك تخصيص خادم LLAMA-CPP لمتطلبات النشر الخاصة بك، سواء كنت تشغله في بيئة الإنتاج أو تستخدمه للتطوير المحلي والتجريب.

التفاعل مع خادم LLAMA-CPP باستخدام طرق مختلفة

للتفاعل مع خادم LLAMA-CPP، يمكننا استخدام طرق مختلفة:

  1. باستخدام أمر cURL:

    • قم بإرسال طلب POST إلى نقطة نهاية إكمال المحادثة التي تعمل على localhost.
    • قدم العناوين والكائن البيانات اللازمة الذي يحتوي على الطلب والعدد المطلوب من الرموز لتوليدها.
    • ستتضمن الاستجابة النص المولد، بالإضافة إلى معلومات عن عملية التوليد، مثل درجة الحرارة والقيمة العليا للاحتمالية والقيمة العليا للمفردات والرموز المتوقعة في الثانية.
  2. باستخدام عميل OpenAI:

    • قم بإنشاء عميل OpenAI مع تعيين عنوان URL القاعدي إلى عنوان URL لخادم LLAMA-CPP المحلي.
    • استخدم نقطة نهاية إكمال المحادثة للعميل وقدم اسم النموذج (على سبيل المثال، chat-gpt-3.5).
    • قم بتعيين الطلب النظامي والطلب المستخدم، ثم قم بإرسال الطلب إلى الخادم.
    • ستتم إعادة الاستجابة بنفس تنسيق واجهة برمجة تطبيقات OpenAI.
  3. باستخدام حزمة Requests (Python):

    • حدد عنوان URL والعناوين للطلب POST.
    • قم بتمرير رسائل مختلفة متعددة إلى الخادم وملاحظة كيفية معالجته للطلبات بشكل متزامن.
    • سيقوم الخادم بتخزين الطلبات في قائمة الانتظار ومعالجتها واحدًا تلو الآخر، دون أن يتم إرهاقه.

باستخدام هذه الطرق المختلفة، يمكنك التفاعل مع خادم LLAMA-CPP وتقديم خدمة لعدة مستخدمين باستخدام LLM واحد وبطاقة رسومات واحدة. يوفر الخادم طريقة مرنة وقابلة للتخصيص لنشر نماذج اللغة المفتوحة المصدر، مما يتيح لك ضبط مختلف المعلمات لتناسب احتياجاتك المحددة.

الخاتمة

في هذا الفيديو، قمنا باستكشاف تثبيت واستخدام LlamaCPP، وهو مشروع مفتوح المصدر قوي لتقديم نماذج اللغة الكبيرة المفتوحة المصدر. لقد تعلمنا كيفية تثبيت LlamaCPP على جهازنا المحلي وبدء تشغيل الخادم والتفاعل معه باستخدام طرق مختلفة، بما في ذلك cURL وعميل OpenAI وحزمة Python requests.

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

أخيرًا، لمسنا التطبيقات العملية لـ LlamaCPP، خاصة في سياق نشر نماذج اللغة الكبيرة لمختلف الحالات الاستخدامية. لقد ذكرنا إطار Rasa كتطبيق محتمل وقدمنا رابطًا إلى دورة ذات صلة في وص

التعليمات