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

افتح قوة نماذج اللغة الكبيرة باستخدام دليلنا حول استضافة الذات ونشر نموذج LLAMA-3 باستخدام NIM من NVIDIA. اكتشف كيفية الاستفادة من هذه التقنية المتطورة لتسريع مشاريع الذكاء الاصطناعي الخاصة بك والحصول على أداء لا مثيل له.
كيفية نشر NVIDIA NIM لاستنتاج النماذج اللغوية الكبيرة
الوصول إلى لوحة تشغيل NVIDIA Launchpad ومقاييس GPU
إعداد حاوية Docker لـ NVIDIA NIM
التفاعل مع واجهة برمجة تطبيقات NVIDIA NIM
اختبار الإجهاد على نقطة نهاية واجهة برمجة تطبيقات NVIDIA NIM
استخدام NVIDIA NIM مع عميل واجهة برمجة تطبيقات OpenAI
الخاتمة
كيفية نشر NVIDIA NIM لاستنتاج النماذج اللغوية الكبيرة
كيفية نشر NVIDIA NIM لاستنتاج النماذج اللغوية الكبيرة
لنشر عائلة طراز Lama باستخدام NVIDIA NIM على سحابتك الخاصة أو جهازك المحلي، اتبع هذه الخطوات:
-
إعداد البيئة: إذا كنت تعمل على جهازك المحلي، قم بتثبيت محرك Docker وأداة حاوية NVIDIA. يتم توفير الروابط إلى هذه الأدوات في وصف الفيديو.
-
الحصول على مفتاح API: قم بالتسجيل في حساب NVIDIA لإنشاء مفتاح API وكلمة مرور شخصية. سيتم الحاجة إليهما للتفاعل مع الخادم البعيد.
-
تشغيل حاوية Docker: استخدم الأمر Docker المقدم لتشغيل الحاوية، مع تحديد اسم الحاوية، استخدام GPU، مفتاح API، موقع ذاكرة التخزين المؤقت للنموذج، والمنفذ. سيقوم هذا بتنزيل وإعداد نموذج Lama 3 8 مليار تعليمات.
-
التفاعل مع النموذج: استخدم الأمر cURL المقدم للتفاعل مع النموذج المنشور. يتبع هذا الأمر معيار API OpenAI، مما يسمح لك باستخدام عميل OpenAI للتفاعل.
-
اختبار الضغط على API: استخدم سكريبت Python مع مكتبة
requests
لإرسال طلبات متعددة متزامنة إلى نقطة نهاية API ورصد استخدام GPU والإنتاجية. -
استخدام عميل API OpenAI: أظهر كيفية استخدام عميل API OpenAI مع NVIDIA NIM، عن طريق تحديث عنوان URL الأساسي وغيرها من المعلمات لتتناسب مع النموذج المنشور.
يوفر NVIDIA NIM طريقة مريحة ومحسنة لنشر نماذج اللغة الكبيرة للاستنتاج، مع القدرة على تحقيق أداء أفضل بما يصل إلى 3 أضعاف مقارنة بخيارات النشر الأخرى. يتيح لك التجربة المجانية لمدة 90 يومًا استكشاف هذا الحل بشكل أكبر.
الوصول إلى لوحة تشغيل NVIDIA Launchpad ومقاييس GPU
الوصول إلى لوحة تشغيل NVIDIA Launchpad ومقاييس GPU
للوصول إلى NVIDIA Launchpad ولوحة معلومات قياسات GPU، اتبع هذه الخطوات:
-
كجزء من NVIDIA Launchpad، ستحصل على إمكانية الوصول إلى IDE للكود، وهو Visual Studio Code. يمكنك استخدام هذا IDE للتفاعل مع مثيل GPU ونشر نموذج Llama 3 8 مليار تعليمات.
-
لوحة معلومات قياسات GPU هي لوحة Grafana التي توفر معلومات مفصلة عن استخدام GPU والأداء. يمكنك الوصول إلى هذه اللوحة لرصد استخدام GPU وإصدار CUDA وتشغيلات GPU والمقاييس ذات الصلة الأخرى.
-
توفر لوحة Grafana تمثيلًا مرئيًا لاستخدام GPU على مر الوقت، مما يتيح لك تتبع الأداء وتحسين النشر وفقًا لذلك.
-
يمكنك استخدام الأمر
watch
في الطرفية لرصد استخدام GPU في الوقت الفعلي. سيقوم الأمرwatch -n 1 nvidia-smi
بتحديث استخدام GPU كل ثانية، مما يوفر لك عرضًا مباشرًا لاستخدام GPU. -
تتيح لوحة معلومات قياسات GPU والأدوات الرصد في الوقت الفعلي فهم خصائص الأداء لنشر نموذج Llama 3 8 مليار تعليمات، مما يساعدك على تحسين استخدام الموارد وضمان الاستنتاج الفعال.
إعداد حاوية Docker لـ NVIDIA NIM
إعداد حاوية Docker لـ NVIDIA NIM
لنشر نموذج Llama 3 8 مليار تعليمات باستخدام NVIDIA NIM، اتبع هذه الخطوات:
- افتح IDE المقدم وتأكد من أنك لديك إمكانية الوصول إلى GPU H100.
- قم بإعداد مفتاح API الخاص بك من خلال التسجيل في حساب NVIDIA وإنشاء المفاتيح اللازمة.
- قم بتشغيل الأمر 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
- بمجرد تشغيل الحاوية، يمكنك استخدام أمر 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.".
-
لاختبار الضغط على نقطة نهاية API، يمكنك تشغيل سكريبت Python المقدم
test_server.py
. سيقوم هذا السكريبت بإرسال طلبات متعددة متزامنة إلى خادم NIM ورصد استخدام GPU. -
أخيرًا، يمكنك أيضًا استخدام عميل API OpenAI للتفاعل مع خادم NIM عن طريق تحديث عنوان URL الأساسي لإشارة إلى عنوان وموقع خادم NIM.
باتباع هذه الخطوات، يمكنك نشر نموذج Llama 3 8 مليار تعليمات بنجاح باستخدام حاوية Docker NVIDIA NIM واختبار أدائه.
التفاعل مع واجهة برمجة تطبيقات 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
اختبار الإجهاد على نقطة نهاية واجهة برمجة تطبيقات NVIDIA NIM
لاختبار الضغط على نقطة نهاية API NVIDIA NIM، سنستخدم سكريبت Python بسيط يستخدم مكتبة requests
لإجراء طلبات متعددة متزامنة إلى نقطة النهاية. إليك كيف يعمل:
-
نحدد عنوان URL نقطة نهاية API، والذي في هذه الحالة هو المضيف المحلي حيث نقوم بتشغيل الخادم محليًا. إذا كنت ستنشره على خادم بعيد، ستحتاج إلى استخدام عنوان IP الخارجي وتمكين توجيه المنفذ.
-
نقوم بتعيين الرؤوس الضرورية، بما في ذلك رأس
Content-Type
إلىapplication/json
. -
نقوم بإنشاء الحمولة، والتي تتضمن اسم النموذج (
"model": "llama-3-8b-instruct"
)، والسؤال ("prompt": "Tell me 50 jokes."
)، وغيرها من المعلمات مثلmax_tokens
وtemperature
وstop
. -
نحدد وظيفة
send_requests()
التي ترسل الطلبات باستخدام طريقةrequests.post()
وعنوان URL والرؤوس والحمولة التي حددناها سابقًا. -
نستخدم التعدد الخيطي لتشغيل عدة نسخ من وظيفة
send_requests()
بالتوازي، مما يحاكي حجم كبير من الطلبات إلى نقطة نهاية API. -
نراقب استخدام GPU في الوقت الفعلي باستخدام الأمر
watch
وأداةnvidia-smi
، والتي توفر معلومات حول استخدام GPU.
تُظهر النتيجة أن نقطة نهاية API قادرة على التعامل مع عدد كبير من الطلبات المتزامنة، مع متوسط إنتاجية تبلغ حوالي 2,500 رمز في الثانية. يظل استخدام GPU أيضًا نسبيًا مرتفعًا، مما يشير إلى أن NVIDIA NIM يستفيد بفعالية من موارد الأجهزة لتقديم استنتاج عالي الأداء.
يُظهر هذا الاختبار للضغط
التعليمات
التعليمات