خدمة عالية الأداء مع 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 التعلم الآلي.

المتطلبات الأساسية

قبل اتباع الخطوات الواردة في هذه المقالة، تأكد من توفر المتطلبات الأساسية التالية لديك:

  • بيئة عمل 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 بدون تعليمات برمجية، الاختبار عبر نقاط النهاية المحلية غير مدعوم حالياً.

  1. لتجنب الكتابة في مسار لأوامر متعددة، استخدم الأمر التالي لتعيين متغير بيئة BASE_PATH. يشير هذا المتغير إلى الدليل حيث يوجد النموذج وملفات تكوين YAML المقترنة:

    BASE_PATH=endpoints/online/triton/single-model
    
  2. استخدم الأمر التالي لتعيين اسم نقطة النهاية التي سيتم إنشاؤها. في هذا المثال، يتم إنشاء اسم عشوائي لنقطة النهاية:

    export ENDPOINT_NAME=triton-single-endpt-`echo $RANDOM`
    
  3. قم بإنشاء ملف تكوين 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
    
  4. قم بإنشاء ملف تكوين 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 (الحالي)

  1. لإنشاء نقطة نهاية جديدة باستخدام تكوين YAML، قم باستخدام الأمر التالي:

    az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
    
  2. لإنشاء نقطة نهاية جديدة باستخدام تكوين 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. يتم تشغيل هذا الملف على جانب العميل.

  1. للحصول على uri لتسجيل نقاط النهاية، استخدم الأمر التالي:

    scoring_uri=$(az ml online-endpoint show -n $ENDPOINT_NAME --query scoring_uri -o tsv)
    scoring_uri=${scoring_uri%/*}
    
  2. للحصول على مفتاح مصادقة، استخدم الأمر التالي:

    auth_token=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME --query accessToken -o tsv)
    
  3. لتسجيل البيانات باستخدام نقطة النهاية، استخدم الأمر التالي. يرسل صورة الطاووس (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 (الحالي)

  1. بمجرد الانتهاء من نقطة النهاية، استخدم الأمر التالي لحذفها:

    az ml online-endpoint delete -n $ENDPOINT_NAME --yes
    
  2. استخدم الأمر التالي لأرشفة النموذج الخاص بك:

    az ml model archive --name $MODEL_NAME --version $MODEL_VERSION
    

الخطوات التالية

لمعرفة المزيد، راجع هذه المقالات: