خدمة عالية الأداء مع Triton Inference Server
ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)
تعرف على كيفية استخدام NVIDIA Triton Inference Server في Azure التعلم الآلي مع نقاط النهاية عبر الإنترنت.
Triton هو برنامج متعدد الأطر ومفتوح المصدر تم تحسينه للاستدلال. يدعم أطر عمل التعلم الآلي الشائعة مثل TensorFlow وONNX Runtime وPyTorch وNVIDIA TensorRT والمزيد. يمكن استخدامه لأحمال عمل وحدة المعالجة المركزية أو وحدة معالجة الرسومات.
هناك نهجان رئيسيان يمكنك اتباعهما للاستفادة من نماذج Triton عند نشرها في نقطة النهاية عبر الإنترنت: نشر بدون تعليمات برمجية أو نشر التعليمات البرمجية الكاملة (إحضار الحاوية الخاصة بك).
- يعد التوزيع بدون تعليمات برمجية لنماذج Triton طريقة بسيطة لتوزيعها حيث تحتاج فقط إلى إحضار نماذج Triton للتوزيع.
- يعد نشر التعليمات البرمجية الكاملة (إحضار الحاوية الخاصة بك) لنماذج Triton طريقة أكثر تقدما لنشرها حيث لديك تحكم كامل في تخصيص التكوينات المتاحة لخادم الاستدلال Triton.
لكلا الخيارين، سيقوم خادم الاستدلال Triton بإجراء الاستدلال استنادا إلى نموذج Triton كما هو محدد بواسطة NVIDIA. على سبيل المثال، يمكن استخدام نماذج المجموعة لسيناريوهات أكثر تقدما.
يتم دعم Triton في كل من نقاط النهاية المدارة عبر الإنترنت ونقاط نهاية Kubernetes عبر الإنترنت.
في هذه المقالة، ستتعلم كيفية نشر نموذج باستخدام نشر بدون تعليمات برمجية ل Triton إلى نقطة نهاية مدارة عبر الإنترنت. يتم توفير معلومات حول استخدام CLI (سطر الأوامر) وPython SDK v2 وAzure التعلم الآلي studio. إذا كنت ترغب في تخصيص المزيد مباشرة باستخدام تكوين خادم استدلال Triton، فراجع استخدام حاوية مخصصة لنشر نموذج ومثال BYOC ل Triton (تعريف النشر والبرنامج النصي الشامل).
إشعار
يخضع استخدام حاوية NVIDIA Triton Inference Server لاتفاقية ترخيص NVIDIA الذكاء الاصطناعي Enterprise Software ويمكن استخدامه لمدة 90 يوما دون اشتراك منتج مؤسسة. لمزيد من المعلومات، راجع NVIDIA الذكاء الاصطناعي Enterprise على Azure التعلم الآلي.
المتطلبات الأساسية
قبل اتباع الخطوات الواردة في هذه المقالة، تأكد من توفر المتطلبات الأساسية التالية لديك:
Azure CLI والملحق
ml
إلى Azure CLI. لمزيد من المعلومات، راجع تثبيت وإعداد واستخدام واجهة مستوى الاستدعاء (CLI) (الإصدار 2).هام
تفترض أمثلة CLI في هذه المقالة أنك تستخدم Bash (أو متوافق). على سبيل المثال، من النظام الخاص بـ Linux أو نظام Windows الفرعي لـ Linux.
مساحة عمل للتعلم الآلي من Microsoft Azure. إذا لم تكن لديك واحدة، فاستخدم الخطوات الواردة في تثبيت CLI (v2) وإعدادها واستخدامها لإنشاء واحدة.
بيئة عمل Python 3.8 (أو أعلى).
يجب أن يكون لديك حزم Python إضافية مثبتة لتسجيل النقاط وقد تقوم بتثبيتها مع التعليمات البرمجية أدناه. يشمل ذلك ما يلي:
- Numpy - صفيف ومكتبة حوسبة رقمية
- عميل Triton Inference Server - يسهل الطلبات إلى Triton Inference Server
- وسادة - مكتبة لعمليات الصور
- Gevent - مكتبة شبكات تستخدم عند الاتصال ب Triton Server
pip install numpy
pip install tritonclient[http]
pip install pillow
pip install gevent
الوصول إلى الأجهزة الظاهرية من سلسلة NCv3 لاشتراك Azure الخاص بك.
هام
قد تحتاج إلى طلب زيادة الحصة النسبية لاشتراكك قبل أن تتمكن من استخدام هذه السلسلة من الأجهزة الظاهرية. لمزيد من المعلومات، راجع سلسلة NCv3.
يتطلب NVIDIA Triton Inference Server بنية مستودع نموذج محددة، حيث يوجد دليل لكل نموذج ودلائل فرعية لإصدار النموذج. يتم تحديد محتويات كل دليل فرعي لإصدار النموذج حسب نوع النموذج ومتطلبات الخلفية التي تدعم النموذج. لمشاهدة جميع بنية مستودع النموذج https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_repository.md#model-files
تستند المعلومات الموجودة في هذا المستند إلى استخدام نموذج مخزن بتنسيق ONNX، لذا فإن بنية الدليل لمستودع النموذج هي <model-repository>/<model-name>/1/model.onnx
. على وجه التحديد، ينفذ هذا النموذج تعريف الصورة.
تستند المعلومات الواردة في هذه المقالة إلى نماذج التعليمات البرمجية الموجودة في مستودع azureml-examples. لتشغيل الأوامر محلياً دون الحاجة إلى نسخ/ لصق YAML والملفات الأخرى، قم باستنساخ المستودع ثم قم بتغيير الدلائل إلى الدليل cli
في المستودع:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples
cd cli
إذا لم تكن قد قمت بالفعل بتعيين الإعدادات الافتراضية لـAzure CLI، فاحفظ الإعدادات الافتراضية. لتجنب تمرير قيم الاشتراك ومساحة العمل ومجموعة الموارد عدة مرات، قم باستخدام الأوامر التالية. قم باستبدال المعلمات التالية بقيم للتكوين المحدد:
- استبدل
<subscription>
بمعرف اشتراك Azure الخاص بك. - استبدل
<workspace>
بمساحة عمل التعلم الآلي من Azure. - استبدل
<resource-group>
بمجموعة موارد Azure التي تحتوي على مساحة العمل لديك. - استبدل
<location>
بمنطقة Azure التي تحتوي على مساحة العمل.
تلميح
بإمكانك معرفة ما الإعدادات الافتراضية الحالية باستخدام الأمر az configure -l
.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
تحديد تكوين التوزيع
ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)
يوضح هذا القسم كيف يمكنك النشر إلى نقطة نهاية مدارة عبر الإنترنت باستخدام Azure CLI مع ملحق التعلم الآلي (v2).
هام
بالنسبة لتوزيع Triton بدون تعليمات برمجية، الاختبار عبر نقاط النهاية المحلية غير مدعوم حالياً.
لتجنب الكتابة في مسار لأوامر متعددة، استخدم الأمر التالي لتعيين متغير بيئة
BASE_PATH
. يشير هذا المتغير إلى الدليل حيث يوجد النموذج وملفات تكوين YAML المقترنة:BASE_PATH=endpoints/online/triton/single-model
استخدم الأمر التالي لتعيين اسم نقطة النهاية التي سيتم إنشاؤها. في هذا المثال، يتم إنشاء اسم عشوائي لنقطة النهاية:
export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
قم بإنشاء ملف تكوين YAML لنقطة النهاية الخاصة بك. يقوم المثال التالي بتكوين الاسم ووضع المصادقة لنقطة النهاية. يقع المستخدم في الأوامر التالية في
/cli/endpoints/online/triton/single-model/create-managed-endpoint.yml
داخل مستودع أمثلة azureml الذي قمت باستنساخه سابقاً:create-managed-endpoint.yaml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json name: my-endpoint auth_mode: aml_token
قم بإنشاء ملف تكوين YAML للتوزيع. يقوم المثال التالي بتكوين نشر يسمى الأزرق إلى نقطة النهاية المحددة في الخطوة السابقة. يقع المستخدم في الأوامر التالية في
/cli/endpoints/online/triton/single-model/create-managed-deployment.yml
داخل مستودع أمثلة azureml الذي قمت باستنساخه سابقاً:هام
لكي يعمل Triton بدون توزيع التعليمات البرمجية (NCD)، يكون الإعداد
type
إلىtriton_model
مطلوباً،type: triton_model
. لمزيد من المعلومات، قم بمراجعة مخطط CLI (v2) لطراز YAML.يستخدم هذا التوزيع جهازاً ظاهرياً Standard_NC6s_v3. قد تحتاج إلى طلب زيادة الحصة النسبية لاشتراكك قبل أن تتمكن من استخدام هذا الجهاز الظاهري. لمزيد من المعلومات، راجع سلسلة NCv3.
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: blue endpoint_name: my-endpoint model: name: sample-densenet-onnx-model version: 1 path: ./models type: triton_model instance_count: 1 instance_type: Standard_NC6s_v3
نشر في Azure
ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)
لإنشاء نقطة نهاية جديدة باستخدام تكوين YAML، قم باستخدام الأمر التالي:
az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
لإنشاء نقطة نهاية جديدة باستخدام تكوين YAML، استخدم الأمر التالي:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
اختبار نقطة النهاية
ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)
بمجرد اكتمال النشر، استخدم الأمر التالي لعمل طلب تسجيل لنقطة النهاية التي تم نشرها.
تلميح
يتم استخدام الملف /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py
في مستودع أمثلة azureml لتسجيل النقاط. تحتاج الصورة التي تم تمريرها إلى نقطة النهاية إلى معالجة مسبقة لتلبية متطلبات الحجم والنوع والتنسيق والمعالجة اللاحقة لإظهار التسمية المتوقعة. يستخدم triton_densenet_scoring.py
المكتبة tritonclient.http
للاتصال بخادم الاستدلال Triton. يتم تشغيل هذا الملف على جانب العميل.
للحصول على uri لتسجيل نقاط النهاية، استخدم الأمر التالي:
scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv) scoring_uri=${scoring_uri%/*}
للحصول على مفتاح مصادقة، استخدم الأمر التالي:
auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
لتسجيل البيانات باستخدام نقطة النهاية، استخدم الأمر التالي. يرسل صورة الطاووس (https://aka.ms/peacock-pic) إلى نقطة النهاية:
python $BASE_PATH/triton_densenet_scoring.py --base_url=$scoring_uri --token=$auth_token --image_path $BASE_PATH/data/peacock.jpg
الاستجابة من البرنامج النصي مشابهة للنص التالي:
Is server ready - True Is model ready - True /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt 84 : PEACOCK
حذف نقطة النهاية والنموذج
ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)
بمجرد الانتهاء من نقطة النهاية، استخدم الأمر التالي لحذفها:
az ml online-endpoint delete -n $ENDPOINT_NAME --yes
استخدم الأمر التالي لأرشفة النموذج الخاص بك:
az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
الخطوات التالية
لمعرفة المزيد، راجع هذه المقالات:
- توزيع النماذج باستخدام REST
- إنشاء واستخدام نقاط النهاية المدارة عبر الإنترنت في الاستوديو
- إطلاق آمن لنقاط النهاية عبر الإنترنت
- كيفية القياس التلقائي لنقاط النهاية عبر الإنترنت المُدارة
- عرض تكاليف نقطة نهاية عبر الإنترنت مُدارة من Azure Machine Learning
- الوصول إلى موارد Azure باستخدام نقطة نهاية مدارة عبر الإنترنت وهوية مدارة
- استكشاف أخطاء توزيع نقاط النهاية المدارة عبر الإنترنت وإصلاحها