خدمة عالية الأداء مع خادم الاستدلال Triton (معاينة)

ملاحظة

تستخدم هذه المقالة أحدث إصدار من الإصدار 2 من CLI الموجود في المعاينة العامة. للحصول على إرشادات حول تحديث أحدث إصدار وتثبيته، راجع مستند تثبيت CLI (الإصدار 2) وإعداده .

تعرف على كيفية استخدام خادم الاستدلال NVIDIA Triton في Azure التعلم الآلي مع نقاط النهاية المدارة عبر الإنترنت.

Triton هو برنامج متعدد الأطر مفتوح المصدر تم تحسينه للاستدلال. يدعم أطر التعلم الآلي الشائعة مثل TensorFlow وONNX Runtime وPyTorch وNVIDIA TensorRT والمزيد. يمكن استخدامه لأحمال عمل وحدة المعالجة المركزية أو وحدة معالجة الرسومات.

في هذه المقالة ، ستتعلم كيفية نشر Triton ونموذج إلى نقطة نهاية مدارة عبر الإنترنت. يتم توفير معلومات حول استخدام كل من CLI (سطر الأوامر) واستوديو Azure التعلم الآلي.

هام

تُعد هذه الميزة قيد المعاينة العامة في الوقت الحالي. يجري توفير إصدار المعاينة هذا من دون اتفاقية على مستوى الخدمة، ولا يوصى به لأحمال العمل الخاصة بالإنتاج. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

ملاحظة

NVIDIA Triton Inference Server هو برنامج مفتوح المصدر تابع لجهة خارجية مدمج في Azure التعلم الآلي.

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

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

  • بيئة عمل بايثون 3.8 (أو أعلى).

  • الوصول إلى الأجهزة الظاهرية من سلسلة NCv3 لاشتراكك في Azure.

    هام

    قد تحتاج إلى طلب زيادة الحصة لاشتراكك قبل أن تتمكن من استخدام هذه السلسلة من الأجهزة الظاهرية. لمزيد من المعلومات، راجع سلسلة NCv3.

تستند المعلومات الواردة في هذه المقالة إلى نماذج التعليمات البرمجية الموجودة في مستودع أمثلة azureml . لتشغيل الأوامر محليا دون الحاجة إلى نسخ / لصق 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>

يتطلب NVIDIA Triton Inference Server بنية مستودع نموذج محدد، حيث يوجد دليل لكل نموذج وأدلة فرعية لإصدار النموذج. يتم تحديد محتويات كل دليل فرعي لإصدار النموذج حسب نوع النموذج ومتطلبات الواجهة الخلفية التي تدعم النموذج. للاطلاع على كل بنية مستودع النماذج https://github.com/triton-inference-server/server/blob/main/docs/model_repository.md#model-files

تستند المعلومات الواردة في هذا المستند إلى استخدام نموذج مخزن بتنسيق ONNX ، وبالتالي فإن بنية الدليل الخاصة بمستودع النموذج هي <model-repository>/<model-name>/1/model.onnx. على وجه التحديد ، يقوم هذا النموذج بإجراء تحديد الصورة.

النشر باستخدام CLI (الإصدار 2)

APPLY TO: Azure CLI ml extension v1 v2 (معاينة)

يوضح هذا القسم كيفية نشر Triton إلى نقطة النهاية المدارة عبر الإنترنت باستخدام 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. قم بتثبيت متطلبات Python باستخدام الأوامر التالية:

    pip install numpy
    pip install tritonclient[http]
    pip install pillow
    pip install gevent
    
  4. إنشاء ملف تكوين 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
    
  5. لإنشاء نقطة نهاية جديدة باستخدام تكوين YAML، استخدم الأمر التالي:

    az ml online-endpoint create -n $ENDPOINT_NAME -f $BASE_PATH/create-managed-endpoint.yaml
    
  6. إنشاء ملف تكوين YAML للنشر. يقوم المثال التالي بتكوين نشر باسم أزرق إلى نقطة النهاية التي تم إنشاؤها في الخطوة السابقة. يوجد الأمر المستخدم في الأوامر التالية في /cli/endpoints/online/triton/single-model/create-managed-deployment.yml الريبو الخاص بأمثلة azureml الذي قمت باستنساخه سابقا:

    هام

    لكي يعمل Triton بدون نشر التعليمات البرمجية (NCD) ، يلزم الإعداد type إلى triton_model​ . type: triton_model​ لمزيد من المعلومات، راجع مخطط YAML طراز CLI (v2).

    يستخدم هذا النشر جهاز ظاهري 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
    
  7. لإنشاء النشر باستخدام تكوين YAML، استخدم الأمر التالي:

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f $BASE_PATH/create-managed-deployment.yaml --all-traffic
    

استدعاء نقطة النهاية

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

تلميح

يتم استخدام الملف /cli/endpoints/online/triton/single-model/triton_densenet_scoring.py في الريبو أمثلة azureml لتسجيل النقاط. تحتاج الصورة التي تم تمريرها إلى نقطة النهاية إلى معالجة مسبقة لتلبية متطلبات الحجم والنوع والتنسيق، والمعالجة اللاحقة لإظهار التسمية المتوقعة. يستخدم triton_densenet_scoring.pytritonclient.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
    

    الاستجابة من البرنامج النصي مشابهة للنص التالي:

    Is server ready - True
    Is model ready - True
    /azureml-examples/cli/endpoints/online/triton/single-model/densenet_labels.txt
    84 : PEACOCK
    

حذف نقطة النهاية والنموذج

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

az ml online-endpoint delete -n $ENDPOINT_NAME --yes

استخدم الأمر التالي لحذف الطراز:

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

النشر باستخدام استوديو Azure التعلم الآلي

يوضح هذا القسم كيفية نشر Triton إلى نقطة النهاية المدارة عبر الإنترنت باستخدام Azure التعلم الآلي studio.

  1. سجل النموذج الخاص بك بتنسيق Triton باستخدام الأمر YAML و CLI التاليين. يستخدم YAML نموذج densenet-onnx من https://github.com/Azure/azureml-examples/tree/main/cli/endpoints/online/triton/single-model

    create-triton-model.yaml

    name: densenet-onnx-model
    version: 1
    path: ./models
    type: triton_model​
    description: Registering my Triton format model.
    
    az ml model create -f create-triton-model.yaml
    

    توضح لقطة الشاشة التالية كيف سيبدو النموذج المسجل في صفحة النماذج في استوديو Azure التعلم الآلي.

    Screenshot showing Triton model format on Models page.

  2. من الاستوديو، حدد مساحة العمل الخاصة بك ثم استخدم إما صفحة نقاط النهاية أو النماذج لإنشاء نشر نقطة النهاية:

    1. من صفحة نقاط النهاية ، حدد +إنشاء (معاينة).

      Screenshot showing create option on the Endpoints UI page.

    2. قم بتوفير اسم ونوع مصادقة لنقطة النهاية، ثم حدد التالي.

    3. عند تحديد طراز، حدد طراز Triton المسجل مسبقا. حدد «Next» للمتابعة.

    4. عند تحديد نموذج مسجل بتنسيق Triton، في خطوة البيئة الخاصة بالمعالج، لن تحتاج إلى برنامج نصي وبيئة لتسجيل النقاط.

      Screenshot showing no code and environment needed for Triton models

    5. أكمل المعالج لنشر النموذج إلى نقطة النهاية.

      Screenshot showing NCD review screen

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

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