نشر LLAMA-3 المحلي مع NVIDIA NIM: دليل شامل

نشر LLAMA-3 المحلي مع NVIDIA NIM: دليل شامل - تعرف على كيفية نشر نموذج LLAMA-3 باستخدام NVIDIA NIM للاستنتاج الفعال على جهاز الحوسبة السحابية أو المحلي الخاص بك. يغطي الإعداد واختبار الأداء والتكامل مع OpenAI API.

١٧ فبراير ٢٠٢٥

party-gif

افتح قوة نماذج اللغة الكبيرة باستخدام دليلنا حول استضافة الذات ونشر نموذج LLAMA-3 باستخدام NIM من NVIDIA. اكتشف كيفية الاستفادة من هذه التقنية المتطورة لتسريع مشاريع الذكاء الاصطناعي الخاصة بك والحصول على أداء لا مثيل له.

كيفية نشر NVIDIA NIM لاستنتاج النماذج اللغوية الكبيرة

لنشر عائلة طراز Lama باستخدام NVIDIA NIM على سحابتك الخاصة أو جهازك المحلي، اتبع هذه الخطوات:

  1. إعداد البيئة: إذا كنت تعمل على جهازك المحلي، قم بتثبيت محرك Docker وأداة حاوية NVIDIA. يتم توفير الروابط إلى هذه الأدوات في وصف الفيديو.

  2. الحصول على مفتاح API: قم بالتسجيل في حساب NVIDIA لإنشاء مفتاح API وكلمة مرور شخصية. سيتم الحاجة إليهما للتفاعل مع الخادم البعيد.

  3. تشغيل حاوية Docker: استخدم الأمر Docker المقدم لتشغيل الحاوية، مع تحديد اسم الحاوية، استخدام GPU، مفتاح API، موقع ذاكرة التخزين المؤقت للنموذج، والمنفذ. سيقوم هذا بتنزيل وإعداد نموذج Lama 3 8 مليار تعليمات.

  4. التفاعل مع النموذج: استخدم الأمر cURL المقدم للتفاعل مع النموذج المنشور. يتبع هذا الأمر معيار API OpenAI، مما يسمح لك باستخدام عميل OpenAI للتفاعل.

  5. اختبار الضغط على API: استخدم سكريبت Python مع مكتبة requests لإرسال طلبات متعددة متزامنة إلى نقطة نهاية API ورصد استخدام GPU والإنتاجية.

  6. استخدام عميل API OpenAI: أظهر كيفية استخدام عميل API OpenAI مع NVIDIA NIM، عن طريق تحديث عنوان URL الأساسي وغيرها من المعلمات لتتناسب مع النموذج المنشور.

يوفر NVIDIA NIM طريقة مريحة ومحسنة لنشر نماذج اللغة الكبيرة للاستنتاج، مع القدرة على تحقيق أداء أفضل بما يصل إلى 3 أضعاف مقارنة بخيارات النشر الأخرى. يتيح لك التجربة المجانية لمدة 90 يومًا استكشاف هذا الحل بشكل أكبر.

الوصول إلى لوحة تشغيل NVIDIA Launchpad ومقاييس GPU

للوصول إلى NVIDIA Launchpad ولوحة معلومات قياسات GPU، اتبع هذه الخطوات:

  1. كجزء من NVIDIA Launchpad، ستحصل على إمكانية الوصول إلى IDE للكود، وهو Visual Studio Code. يمكنك استخدام هذا IDE للتفاعل مع مثيل GPU ونشر نموذج Llama 3 8 مليار تعليمات.

  2. لوحة معلومات قياسات GPU هي لوحة Grafana التي توفر معلومات مفصلة عن استخدام GPU والأداء. يمكنك الوصول إلى هذه اللوحة لرصد استخدام GPU وإصدار CUDA وتشغيلات GPU والمقاييس ذات الصلة الأخرى.

  3. توفر لوحة Grafana تمثيلًا مرئيًا لاستخدام GPU على مر الوقت، مما يتيح لك تتبع الأداء وتحسين النشر وفقًا لذلك.

  4. يمكنك استخدام الأمر watch في الطرفية لرصد استخدام GPU في الوقت الفعلي. سيقوم الأمر watch -n 1 nvidia-smi بتحديث استخدام GPU كل ثانية، مما يوفر لك عرضًا مباشرًا لاستخدام GPU.

  5. تتيح لوحة معلومات قياسات GPU والأدوات الرصد في الوقت الفعلي فهم خصائص الأداء لنشر نموذج Llama 3 8 مليار تعليمات، مما يساعدك على تحسين استخدام الموارد وضمان الاستنتاج الفعال.

إعداد حاوية Docker لـ NVIDIA NIM

لنشر نموذج Llama 3 8 مليار تعليمات باستخدام NVIDIA NIM، اتبع هذه الخطوات:

  1. افتح IDE المقدم وتأكد من أنك لديك إمكانية الوصول إلى GPU H100.
  2. قم بإعداد مفتاح API الخاص بك من خلال التسجيل في حساب NVIDIA وإنشاء المفاتيح اللازمة.
  3. قم بتشغيل الأمر Docker التالي لبدء حاوية NVIDIA NIM:
docker run -it --gpus all -e NVIDIA_API_KEY=$NVIDIA_API_KEY -p 8000:8000 --name llama-3-8b-instruct nvcr.io/nvidia/nim:latest --model-name llama-3-8b-instruct

سيقوم هذا الأمر بما يلي:

  • إنشاء حاوية Docker بالاسم "llama-3-8b-instruct"
  • استخدام جميع وحدات GPU المتاحة على النظام
  • تعيين متغير البيئة NVIDIA_API_KEY
  • فتح المنفذ 8000 لخادم NIM
  • استخدام النموذج "llama-3-8b-instruct" من كتالوج NVIDIA NIM
  1. بمجرد تشغيل الحاوية، يمكنك استخدام أمر cURL المقدم للتفاعل مع النموذج:
curl -X POST -H "Content-Type: application/json" -d '{"model": "llama-3-8b-instruct", "prompt": "Tell me a joke.", "max_tokens": 1000, "temperature": 0.7, "top_p": 0.95, "stop": ["\n"]}' http://localhost:8000/v1/completions

يرسل هذا الأمر cURL طلبًا إلى خادم NIM الذي يعمل على localhost:8000 لإنشاء استجابة للسؤال "Tell me a joke.".

  1. لاختبار الضغط على نقطة نهاية API، يمكنك تشغيل سكريبت Python المقدم test_server.py. سيقوم هذا السكريبت بإرسال طلبات متعددة متزامنة إلى خادم NIM ورصد استخدام GPU.

  2. أخيرًا، يمكنك أيضًا استخدام عميل API OpenAI للتفاعل مع خادم NIM عن طريق تحديث عنوان URL الأساسي لإشارة إلى عنوان وموقع خادم NIM.

باتباع هذه الخطوات، يمكنك نشر نموذج Llama 3 8 مليار تعليمات بنجاح باستخدام حاوية Docker NVIDIA NIM واختبار أدائه.

التفاعل مع واجهة برمجة تطبيقات NVIDIA NIM

للتفاعل مع API NVIDIA NIM، يمكننا استخدام أمر cURL بسيط. يوفر أمر cURL ما يلي:

  • إجراء طلب POST إلى المضيف المحلي على المنفذ 8000، وهو المكان الذي يعمل فيه خادم NVIDIA NIM.
  • استخدام API متوافق مع OpenAI، لذلك يمكننا استخدام عميل OpenAI للتفاعل مع خادم NIM.
  • تحديد نموذج Llama 3 8 مليار تعليمات للاستخدام.
  • تعيين هيكل الرسالة بشكل مماثل لما تتوقعه OpenAI.
  • السماح بتعيين معلمات إضافية مثل max_tokens و temperature.

فيما يلي أمر cURL:

curl -X POST -H "Content-Type: application/json" -d '{"model": "nlp/lama-3-8b-instruct", "messages": [{"role": "user", "content": "Tell me a joke"}], "max_tokens": 1000, "temperature": 0.7}' http://localhost:8000/v1/chat/completions

سيرسل هذا الأمر cURL طلبًا إلى خادم NVIDIA NIM، والذي سيقوم بإنشاء استجابة من نموذج Llama 3 8 مليار تعليمات. سيتم بث الاستجابة، مع عرض كل رمز عند إنشائه.

لاختبار الضغط على نقطة نهاية API بشكل أكبر، يمكننا استخدام سكريبت Python الذي يستخدم مكتبة requests لإجراء طلبات متعددة متزامنة. سيقوم هذا السكريبت بإرسال 50 طلب إنشاء نكتة بالتوازي ورصد استخدام GPU والإنتاجية.

import requests
import threading

url = "http://localhost:8000/v1/chat/completions"
headers = {"Content-Type": "application/json"}
payload = {
    "model": "nlp/lama-3-8b-instruct",
    "messages": [{"role": "user", "content": "Tell me 50 jokes"}],
    "max_tokens": 1000,
    "temperature": 0.7,
    "stream": False
}

def send_requests():
    for _ in range(50):
        response = requests.post(url, headers=headers, json=payload)
        print(response.json())

threads = []
for _ in range(10):
    t = threading.Thread(target=send_requests)
    t.start()
    threads.append(t)

for thread in threads:
    thread.join()

يوضح هذا السكريبت كيفية استخدام API متوافق مع OpenAI مع خادم NVIDIA NIM. يُظهر أن خادم NVIDIA NIM يمكن أن يوفر استنتاجًا عالي الأداء للنماذج اللغوية الكبيرة، مع إمكانية تحقيق تحسين بنسبة تصل إلى 3 أضعاف مقارنة بخيارات النشر الأخرى.

اختبار الإجهاد على نقطة نهاية واجهة برمجة تطبيقات NVIDIA NIM

لاختبار الضغط على نقطة نهاية API NVIDIA NIM، سنستخدم سكريبت Python بسيط يستخدم مكتبة requests لإجراء طلبات متعددة متزامنة إلى نقطة النهاية. إليك كيف يعمل:

  1. نحدد عنوان URL نقطة نهاية API، والذي في هذه الحالة هو المضيف المحلي حيث نقوم بتشغيل الخادم محليًا. إذا كنت ستنشره على خادم بعيد، ستحتاج إلى استخدام عنوان IP الخارجي وتمكين توجيه المنفذ.

  2. نقوم بتعيين الرؤوس الضرورية، بما في ذلك رأس Content-Type إلى application/json.

  3. نقوم بإنشاء الحمولة، والتي تتضمن اسم النموذج ("model": "llama-3-8b-instruct")، والسؤال ("prompt": "Tell me 50 jokes.")، وغيرها من المعلمات مثل max_tokens و temperature و stop.

  4. نحدد وظيفة send_requests() التي ترسل الطلبات باستخدام طريقة requests.post() وعنوان URL والرؤوس والحمولة التي حددناها سابقًا.

  5. نستخدم التعدد الخيطي لتشغيل عدة نسخ من وظيفة send_requests() بالتوازي، مما يحاكي حجم كبير من الطلبات إلى نقطة نهاية API.

  6. نراقب استخدام GPU في الوقت الفعلي باستخدام الأمر watch وأداة nvidia-smi، والتي توفر معلومات حول استخدام GPU.

تُظهر النتيجة أن نقطة نهاية API قادرة على التعامل مع عدد كبير من الطلبات المتزامنة، مع متوسط إنتاجية تبلغ حوالي 2,500 رمز في الثانية. يظل استخدام GPU أيضًا نسبيًا مرتفعًا، مما يشير إلى أن NVIDIA NIM يستفيد بفعالية من موارد الأجهزة لتقديم استنتاج عالي الأداء.

يُظهر هذا الاختبار للضغط

التعليمات