نشر نموذج التعلم الآلي وتسجيله باستخدام نقطة نهاية عبر الإنترنت

ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)

في هذه المقالة، تتعلم نشر النموذج الخاص بك إلى نقطة نهاية عبر الإنترنت لاستخدامها في الاستدلال في الوقت الحقيقي. تبدأ بنشر نموذج على جهازك المحلي لتصحيح أي أخطاء. بعد ذلك، يمكنك نشر النموذج واختباره في Azure، وعرض سجلات التوزيع، ومراقبة اتفاقية مستوى الخدمة (SLA). بنهاية هذه المقالة، سيكون لديك نقطة نهاية HTTPS/REST قابلة للتطوير يمكنك استخدامها للاستدلال في الوقت الفعلي.

نقاط النهاية عبر الإنترنت هي نقاط نهاية تستخدم للاستدلال في الوقت الحقيقي. هناك نوعان من نقاط النهاية عبر الإنترنت: نقاط النهاية المدارة عبر الإنترنت ونقاط نهاية Kubernetes عبر الإنترنت. لمزيد من المعلومات حول نقاط النهاية والاختلافات بين نقاط النهاية المدارة عبر الإنترنت ونقاط نهاية Kubernetes عبر الإنترنت، راجع ما هي نقاط نهاية Azure التعلم الآلي؟

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

يستخدم المثال الرئيسي في هذا المستند نقاط النهاية المُدارة عبر الإنترنت للتوزيع. لاستخدام Kubernetes بدلا من ذلك، راجع الملاحظات في هذا المستند المضمنة مع مناقشة نقطة النهاية المدارة عبر الإنترنت.

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

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

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

  • يتم استخدام عناصر التحكم في الوصول المستندة إلى الدور في (Azure RBAC) لمنح الوصول إلى العمليات في التعلم الآلي من Microsoft Azure. لتنفيذ الخطوات الواردة في هذه المقالة، يجب تعيين دور المالك أو المساهم لحساب المستخدم لمساحة عمل التعلم الآلي من Microsoft Azure، أو دور مخصص يسمح Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. إذا كنت تستخدم الاستوديو لإنشاء/إدارة نقاط النهاية/عمليات النشر عبر الإنترنت، فستحتاج إلى إذن إضافي "Microsoft.Resources/deployments/write" من مالك مجموعة الموارد. لمزيدٍ من المعلومات، راجع إدارة الوصول إلى مساحة عمل Azure Machine Learning.

  • (اختياري) للتوزيع محلياً، يجب عليك تثبيت Docker Engine على الكمبيوتر المحلي. نوصي بشدة باستخدام هذا الخيار، حتى يسهل تصحيح الأخطاء.

  • تأكد من أن لديك حصة نسبية كافية للجهاز الظاهري (VM) مخصصة للنشر. يحتفظ Azure التعلم الآلي بنسبة 20٪ من موارد الحوسبة لإجراء ترقيات على بعض وحدات SKU للجهاز الظاهري. على سبيل المثال، إذا طلبت 10 مثيلات في عملية نشر، يجب أن يكون لديك حصة نسبية ل 12 لكل عدد من الذاكرات الأساسية ل VM SKU. يؤدي الفشل في حساب موارد الحوسبة الإضافية إلى حدوث خطأ. هناك بعض وحدات SKU للجهاز الظاهري التي يتم إعفاءها من حجز الحصة الإضافية. لمزيد من المعلومات حول تخصيص الحصة النسبية، راجع تخصيص حصة الجهاز الظاهري للنشر.

  • بدلا من ذلك، يمكنك استخدام الحصة النسبية من تجمع الحصص المشتركة ل Azure التعلم الآلي لفترة محدودة. يمكن للمستخدمين الوصول إلى الحصة النسبية من هذا التجمع لإجراء الاختبار لفترة محدودة. عند استخدام الاستوديو لنشر نماذج Llama-2 وPhi وNemotron و Mistral وDely وDci-DeciLM من كتالوج النموذج إلى نقطة نهاية مدارة عبر الإنترنت، يسمح لك Azure التعلم الآلي بالوصول إلى تجمع الحصص المشتركة لفترة قصيرة حتى تتمكن من إجراء الاختبار. لمزيد من المعلومات حول تجمع الحصة النسبية المشتركة، راجع الحصة النسبية المشتركة ل Azure التعلم الآلي.

إعداد النظام الخاص بك

تعيين متغيرات البيئة

إذا لم تكن قد قمت بالفعل بتعيين الإعدادات الافتراضية لـAzure CLI، فاحفظ الإعدادات الافتراضية. لتجنب تمرير قيم اشتراكك، ومساحة العمل، ومجموعة الموارد عدة مرات، قم بتشغيل هذا التعليمة البرمجية:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

استنساخ مستودع الأمثلة

لمتابعة هذه المقالة، قم أولا باستنساخ مستودع الأمثلة (azureml-examples). ثم قم بتشغيل التعليمات البرمجية التالية للانتقال إلى دليل المستودع cli/ :

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli

تلميح

استخدم --depth 1 لنسخ آخر تثبيت فقط في المستودع، ما يقلل الوقت اللازم لإكمال العملية.

الأوامر الموجودة في هذا البرنامج التعليمي موجودة في الملفات deploy-local-endpoint.sh وفي deploy-managed-online-endpoint.shcli الدليل، وملفات تكوين YAML موجودة في endpoints/online/managed/sample/ الدليل الفرعي.

إشعار

ملفات تكوين YAML لنقاط نهاية Kubernetes عبر الإنترنت موجودة في endpoints/online/kubernetes/ الدليل الفرعي.

تعريف نقطة النهاية

لتعريف نقطة نهاية عبر الإنترنت، حدد اسم نقطة النهاية ووضع المصادقة. لمزيد من المعلومات حول نقاط النهاية المدارة عبر الإنترنت، راجع نقاط النهاية عبر الإنترنت.

تعيين اسم نقطة نهاية

لتعيين اسم نقطة النهاية، قم بتشغيل الأمر التالي. استبدل YOUR_ENDPOINT_NAME باسم فريد في منطقة Azure. لمزيد من المعلومات حول قواعد التسمية، راجع حدود نقطة النهاية.

بالنسبة إلى Linux، قم بتشغيل هذا الأمر:

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

تكوين نقطة النهاية

تعرض القصاصة البرمجية التالية endpoints/online/Managed/sample/endpoint.yml الملف:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

يتم وصف مرجع تنسيق YAML لنقطة النهاية في الجدول التالي. لمعرفة كيفية تحديد هذه السمات، راجع مرجع YAML لنقطة النهاية عبر الإنترنت. للحصول على معلومات حول الحدود المتعلقة بنقاط النهاية المدارة، راجع حدود نقاط النهاية عبر الإنترنت.

المفتاح ‏‏الوصف
$schema (اختياري) مخطط YAML. لمشاهدة جميع الخيارات المتوفرة في ملف YAML، يمكنك عرض المخطط في قصاصة التعليمات البرمجية السابقة في مستعرض.
name اسم نقطة النهاية.
auth_mode استخدام key للمصادقة المستندة إلى المفتاح.
استخدم aml_token للمصادقة المستندة إلى الرمز المميز التعلم الآلي من Microsoft Azure.
استخدم aad_token للمصادقة المستندة إلى الرمز المميز ل Microsoft Entra (معاينة).
لمزيد من المعلومات حول المصادقة، راجع مصادقة العملاء لنقاط النهاية عبر الإنترنت.

تعريف التوزيع

يشكل التوزيع مجموعة من الموارد اللازمة لاستضافة النموذج الذي يقوم بالاستدلال الفعلي. على سبيل المثال، يمكنك نشر نموذج scikit-learn الذي يقوم بالتراجع واستخدام برنامج نصي لتسجيل النقاط score.py لتنفيذ النموذج بناء على طلب إدخال معين.

للتعرف على السمات الرئيسية للتوزيع، راجع عمليات النشر عبر الإنترنت.

تكوين عملية نشر

يستخدم تكوين التوزيع موقع النموذج الذي ترغب في نشره.

تعرض القصاصة البرمجية التالية نقاط النهاية/عبر الإنترنت/المدارة/عينة/blue-deployment.yml الملف، مع جميع المدخلات المطلوبة لتكوين التوزيع:

blue-deployment.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: 
  conda_file: ../../model-1/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

يحدد ملف blue-deployment.yml سمات النشر التالية:

  • model - يحدد خصائص النموذج المضمنة path ، باستخدام (مكان تحميل الملفات منه). يقوم CLI تلقائيا بتحميل ملفات النموذج وتسجيل النموذج باسم تم إنشاؤه تلقائيا.
  • environment - باستخدام التعريفات المضمنة التي تتضمن مكان تحميل الملفات، يقوم CLI تلقائيا بتحميل conda.yaml الملف وتسجيل البيئة. لاحقا، لإنشاء البيئة، يستخدم image التوزيع (في هذا المثال، هو mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) للصورة الأساسية، ويتم تثبيت التبعيات conda_file أعلى الصورة الأساسية.
  • code_configuration - أثناء النشر، يتم تحميل الملفات المحلية مثل مصدر Python لنموذج التسجيل من بيئة التطوير.

لمزيدٍ من المعلومات بشأن مخطط YAML، راجع مرجع YAML لنقطة النهاية عبر الإنترنت.

إشعار

لاستخدام نقاط نهاية Kubernetes بدلا من نقاط النهاية المدارة عبر الإنترنت كهدف حساب:

  1. أنشئ مجموعة Kubernetes وأرفقها كهدف حسابي بمساحة عمل Azure Machine Learning باستخدام Azure Machine Learning studio.
  2. استخدم نقطة النهاية YAML لاستهداف Kubernetes، بدلا من نقطة النهاية المدارة YAML. تحتاج إلى تحرير YAML لتغيير قيمة compute إلى اسم هدف الحساب المسجل. يمكنك استخدام deployment.yaml هذا الذي يحتوي على خصائص إضافية قابلة للتطبيق على نشر Kubernetes.

تنطبق جميع الأوامر المستخدمة في هذه المقالة لنقاط النهاية المدارة عبر الإنترنت أيضا على نقاط نهاية Kubernetes، باستثناء القدرات التالية التي لا تنطبق على نقاط نهاية Kubernetes:

فهم البرنامج النصي لتسجيل النقاط

تلميح

تنسيق البرنامج النصي لتسجيل النقاط لنقاط النهاية عبر الإنترنت هو نفس التنسيق المستخدَم في الإصدار السابق من CLI وفي Python SDK.

يجب أن يحتوي البرنامج النصي لتسجيل النقاط المحدد في code_configuration.scoring_script على دالة init() ودالة run() .

يستخدم هذا المثال ملف score.py: score.py

import os
import logging
import json
import numpy
import joblib


def init():
    """
    This function is called when the container is initialized/started, typically after create/update of the deployment.
    You can write the logic here to perform init operations like caching the model in memory
    """
    global model
    # AZUREML_MODEL_DIR is an environment variable created during deployment.
    # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
    # Please provide your model's folder name if there is one
    model_path = os.path.join(
        os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
    )
    # deserialize the model file back into a sklearn model
    model = joblib.load(model_path)
    logging.info("Init complete")


def run(raw_data):
    """
    This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
    In the example we extract the data from the json input and call the scikit-learn model's predict()
    method and return the result back
    """
    logging.info("model 1: request received")
    data = json.loads(raw_data)["data"]
    data = numpy.array(data)
    result = model.predict(data)
    logging.info("Request processed")
    return result.tolist()

يتم استدعاء الدالة init() عند تهيئة الحاوية أو بدء تشغيلها. تحدث التهيئة عادةً بعد وقت قصير من إنشاء التوزيع أو تحديثه. init الدالة هي المكان المناسب لكتابة منطق لعمليات التهيئة العمومية مثل التخزين المؤقت للنموذج في الذاكرة (كما هو موضح في هذا الملف score.py).

run() يتم استدعاء الدالة في كل مرة يتم فيها استدعاء نقطة النهاية، وهي تقوم بتسجيل النقاط والتنبؤ الفعليين. في ملف score.py هذا، تستخرج الدالة run() البيانات من إدخال JSON، وتستدعي أسلوب نموذج predict() scikit-learn، ثم ترجع نتيجة التنبؤ.

النشر والتصحيح محليا باستخدام نقطة نهاية محلية

نوصي بشدة باختبار تشغيل نقطة النهاية محليا للتحقق من صحة التعليمات البرمجية والتكوين وتصحيحها قبل النشر إلى Azure. يدعم Azure CLI وPython SDK نقاط النهاية المحلية والنشرات، بينما لا يدعم Azure التعلم الآلي studio وقالب ARM.

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

تلميح

يمكنك استخدام حزمة Python لخادم Azure التعلم الآلي الاستدلال HTTP لتصحيح أخطاء البرنامج النصي لتسجيل النقاط محليا دون Docker Engine. يساعدك تصحيح الأخطاء باستخدام خادم الاستدلال على تصحيح أخطاء البرنامج النصي لتسجيل النقاط قبل النشر إلى نقاط النهاية المحلية بحيث يمكنك تصحيح الأخطاء دون التأثر بتكوينات حاوية التوزيع.

لمزيد من المعلومات حول تصحيح أخطاء نقاط النهاية عبر الإنترنت محليا قبل النشر إلى Azure، راجع تصحيح أخطاء نقطة النهاية عبر الإنترنت.

قم بتوزيع النموذج محلياً

قم أولا بإنشاء نقطة نهاية. اختيارياً، بالنسبة إلى نقطة نهاية محلية، يمكنك تخطي هذه الخطوة وإنشاء التوزيع مباشرةً (الخطوة التالية)، والتي بدورها ستنشئ بيانات التعريف المطلوبة. يعد نشر النماذج محليا مفيدا لأغراض التطوير والاختبار.

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

الآن، قم بإنشاء توزيع باسم blue ضمن نقطة النهاية.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

توجه --local العلامة CLI لتوزيع نقطة النهاية في بيئة Docker.

تلميح

استخدم Visual Studio Code لاختبار نقاط النهاية وتصحيحها محليًا. لمزيدٍ من المعلومات، راجع تتبع أخطاء نقاط النهاية عبر الإنترنت محلياً في Visual Studio Code.

تحقق من نجاح النشر المحلي

تحقق من حالة النشر لمعرفة ما إذا كان النموذج قد تم نشره دون خطأ:

az ml online-endpoint show -n $ENDPOINT_NAME --local

يجب أن يكون الناتج مشابهاً لـJSON التالي. provisioning_stateهو Succeeded.

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

يحتوي الجدول التالي على القيم المحتمَلة لـprovisioning_state:

قيمة ‏‏الوصف
انشاء يتم إنشاء المورد.
تحديث يتم تحديث المورد.
حذف يتم حذف المورد.
نجحت نجحت عملية الإنشاء/التحديث.
فاشل فشلت عملية الإنشاء/التحديث/الحذف.

قم باستدعاء نقطة النهاية المحلية لتسجيل البيانات باستخدام النموذج الخاص بك

استدعاء نقطة النهاية لتسجيل النموذج باستخدام invoke الأمر وتمرير معلمات الاستعلام المخزنة في ملف JSON:

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

إذا كنت تريد استخدام عميل REST (مثل curl)، يجب أن يكون لديك عنوان URI للتسجيل. للحصول على عنوان URI للتسجيل، قم بتشغيل az ml online-endpoint show --local -n $ENDPOINT_NAME. في البيانات التي تم إرجاعها، ابحث عن السمة scoring_uri .

راجع سجلات الإخراج من عملية الاستدعاء

في مثال ملف Score.py، يسجّل الأسلوب run() بعض الإخراج إلى وحدة التحكم.

يمكنك عرض هذا الإخراج باستخدام get-logs الأمر :

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

قم بتوزيع نقطة النهاية عبر الإنترنت على Azure

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

تسجيل النموذج والبيئة

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

إشعار

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

لتسجيل النموذج والبيئة، استخدم النموذج model: azureml:my-model:1 أو environment: azureml:my-env:1. للتسجيل، يمكنك استخراج تعريفات YAML لـmodel وenvironment إلى ملفات YAML منفصلة واستخدام الأوامر az ml model create وaz ml environment create. لمعرفة المزيد بشأن هذه الأوامر، قم بتشغيل az ml model create -h وaz ml environment create -h.

  1. إنشاء تعريف YAML للنموذج:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. تسجيل النموذج:

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. إنشاء تعريف YAML للبيئة:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. تسجيل البيئة:

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

لمزيد من المعلومات حول تسجيل النموذج الخاص بك كأصل، راجع تسجيل نموذجك كأصل في التعلم الآلي باستخدام CLI. لمزيد من المعلومات حول إنشاء بيئة، راجع إدارة بيئات Azure التعلم الآلي باستخدام CLI وSDK (v2).

تكوين توزيع يستخدم الأصول المسجلة

يستخدم تكوين النشر النموذج المسجل الذي ترغب في نشره والبيئة المسجلة.

استخدم الأصول المسجلة (النموذج والبيئة) في تعريف التوزيع الخاص بك. تعرض القصاصة البرمجية endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml التالية الملف، مع جميع المدخلات المطلوبة لتكوين التوزيع:

blue-deployment-with-registered-assets.yml

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

استخدام أنواع وصور مثيلات وحدة المعالجة المركزية وGPU المختلفة

يمكنك تحديد أنواع مثيل وحدة المعالجة المركزية أو وحدة معالجة الرسومات والصور في تعريف التوزيع لكل من النشر المحلي والنشر إلى Azure.

استخدم تعريف النشر في ملف blue-deployment-with-registered-assets.yml مثيل نوع Standard_DS3_v2 للأغراض العامة وصورة mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestDocker غير GPU . لحساب GPU، اختر نوع حساب وحدة معالجة الرسومات SKU وصورة GPU Docker.

للحصول على أنواع مثيلات الأغراض العامة وGPU المدعومة، راجع نقاط النهاية المُدارة عبر الإنترنت المدعومة من وحدات SKU للجهاز الظاهري. للحصول على قائمة بالصور الأساسية لوحدة المعالجة المركزية للتعلم الآلي من Azure ووحدة معالجة الرسومات الأساسية، راجع صور قاعدة التعلم الآلي في Azure.

إشعار

لاستخدام Kubernetes، بدلا من نقاط النهاية المدارة، كهدف حساب، راجع مقدمة إلى هدف حساب Kubernetes.

بعد ذلك، قم بتوزيع نقطة النهاية عبر الإنترنت إلى Azure.

نشر في Azure

  1. إنشاء نقطة النهاية في سحابة Azure.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. إنشاء النشر المسمى blue ضمن نقطة النهاية.

    az ml online-deployment create -name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    قد يستغرق إنشاء النشر ما يصل إلى 15 دقيقة، اعتمادا على ما إذا كان يتم إنشاء البيئة أو الصورة الأساسية للمرة الأولى. تتم معالجة عمليات النشر اللاحقة التي تستخدم نفس البيئة بشكل أسرع.

    تلميح

    • إذا كنت تفضل عدم حظر وحدة تحكم CLI، يمكنك إضافة العلامة --no-wait إلى الأمر . ومع ذلك، سيؤدي هذا الخيار إلى إيقاف العرض التفاعلي لحالة النشر.

    هام

    --all-traffic تخصص العلامة في التعليمات البرمجية az ml online-deployment create المستخدمة لإنشاء النشر نسبة 100٪ من نسبة استخدام الشبكة لنقطة النهاية إلى النشر الأزرق الذي تم إنشاؤه حديثا. على الرغم من أن هذا مفيد لأغراض التطوير والاختبار، فقد تحتاج إلى توجيه حركة المرور إلى النشر الجديد من خلال أمر صريح. على سبيل المثال، az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"

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

التحقق من حالة نقطة النهاية

  1. show استخدم الأمر لعرض المعلومات في provisioning_state لنقطة النهاية والنشر:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. سرد كافة نقاط النهاية في مساحة العمل بتنسيق جدول باستخدام list الأمر :

    az ml online-endpoint list --output table
    

التحقق من حالة النشر عبر الإنترنت

تحقق من السجلات لمعرفة ما إذا كان النموذج قد تم نشره دون خطأ.

  1. لمشاهدة إخراج السجل من حاوية، استخدم أمر CLI التالي:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

    بشكل افتراضي، يتم سحب السجلات من حاوية خادم الاستدلال. لمشاهدة السجلات من حاوية تهيئة التخزين، أضف العلامة --container storage-initializer . لمزيد من المعلومات حول سجلات النشر، راجع الحصول على سجلات الحاوية.

قم باستدعاء نقطة النهاية لتسجيل البيانات باستخدام النموذج الخاص بك

  1. استخدم إما invoke الأمر أو عميل REST من اختيارك لاستدعاء نقطة النهاية وتسجيل بعض البيانات:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. احصل على المفتاح المستخدم للمصادقة على نقطة النهاية:

    تلميح

    يمكنك التحكم في أساسيات أمان Microsoft Entra التي يمكنها الحصول على مفتاح المصادقة عن طريق تعيينها إلى دور مخصص يسمح و Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/actionMicrosoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. لمزيد من المعلومات حول إدارة التخويل إلى مساحات العمل، راجع إدارة الوصول إلى مساحة عمل Azure التعلم الآلي.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. استخدم curl لتسجيل البيانات.

    SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
    
    curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
    

    لاحظ أنك تستخدم show الأوامر و get-credentials للحصول على بيانات اعتماد المصادقة. لاحظ أيضا أنك تستخدم العلامة --query لتصفية السمات المطلوبة فقط. لمعرفة المزيد حول العلامة --query ، راجع استعلام إخراج أمر Azure CLI.

  4. لمشاهدة سجلات الاستدعاء، قم بتشغيل get-logs مرة أخرى.

(اختياري) تحديث التوزيع

إذا كنت تريد تحديث التعليمة البرمجية أو الطراز أو البيئة، فقم بتحديث ملف YAML، ثم قم بتشغيل الأمر az ml online-endpoint update .

إشعار

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

لفهم كيفية عمل update :

  1. افتح الملف online/model-1/onlinescoring/Score.py.

  2. غيّر السطر الأخير من الوظيفة init() : بعد logging.info("Init complete")، أضف logging.info("Updated successfully").

  3. حفظ الملف.

  4. قم بإجراء هذا الأمر:

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    إشعار

    التحديث باستخدام YAML تعريفي. أي إن التغييرات في YAML تنعكس في موارد Azure Resource Manager الأساسية (نقاط النهاية وعمليات التوزيع). يسهل النهج التعريفي GitOps: تمر جميع التغييرات على نقاط النهاية وعمليات التوزيع (حتى instance_count) عبر YAML.

    تلميح

    • يمكنك استخدام معلمات التحديث العامة، مثل المعلمة --set ، مع أمر CLI update لتجاوز السمات في YAML أو لتعيين سمات معينة دون تمريرها في ملف YAML. يُعد استخدام --set السمات المفردة ذا قيمة خاصة في سيناريوهات التطوير والاختبار. على سبيل المثال، لزيادة قيمة instance_count التوزيع الأول، يمكنك استخدام --set instance_count=2 العلامة. ومع ذلك، نظراً لعدم تحديث YAML، فإن هذه التقنية لا تسهل GitOps.
    • تحديد ملف YAML ليس إلزاميا. على سبيل المثال، إذا كنت تريد اختبار إعداد تزامن مختلف لتوزيع معين، يمكنك تجربة شيء مثل az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. سيؤدي ذلك إلى الاحتفاظ بكافة التكوينات الموجودة ولكن تحديث المعلمات المحددة فقط.
  5. نظرا لتعديل الدالة init() التي يتم تشغيلها عند إنشاء نقطة النهاية أو تحديثها، ستكون الرسالة Updated successfully في السجلات. استرجع السجلات عن طريق تشغيل:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

يعمل الأمر update أيضاً مع عمليات التوزيع المحلية. استخدم نفس الأمر az ml online-deployment update مع العلم --local .

تحديث النشر في هذا القسم هو مثال على تحديث متجدد موضعي.

  • بالنسبة لنقطة نهاية مدارة عبر الإنترنت، يتم تحديث النشر إلى التكوين الجديد بنسبة 20٪ من العقد في كل مرة. أي إذا كان النشر يحتوي على 10 عقد، يتم تحديث عقدتين في كل مرة.
  • بالنسبة لنقطة نهاية Kubernetes عبر الإنترنت، يقوم النظام بشكل متكرر بإنشاء مثيل نشر جديد مع التكوين الجديد وحذف النسخة القديمة.
  • لاستخدام الإنتاج، يجب مراعاة النشر الأزرق والأخضر، والذي يوفر بديلا أكثر أمانا لتحديث خدمة ويب.

(اختياري) قم بتكوين القياس التلقائي

يقوم التحجيم التلقائي بتشغيل المقدار المناسب من الموارد للتعامل مع الحِمل على تطبيقك. تدعم نقاط النهاية المُدارة عبر الإنترنت القياس التلقائي من خلال التكامل مع ميزة القياس التلقائي لجهاز المراقبة Azure. لتكوين القياس التلقائي، راجع كيفية القياس التلقائي لنقاط النهاية عبر الإنترنت.

(اختياري) مراقبة اتفاقية مستوى الخدمة (SLA) باستخدام Azure Monitor

لعرض المقاييس وتعيين التنبيهات بناءً على اتفاقية مستوى الخدمة الخاصة بك، أكمل الخطوات الموضحة في مراقبة نقاط النهاية عبر الإنترنت.

(اختياري) التكامل مع Log Analytics

get-logs يوفر الأمر ل CLI أو get_logs أسلوب SDK فقط المئات الأخيرة من أسطر السجلات من مثيل محدد تلقائيا. ومع ذلك، يوفر Log Analytics طريقة لتخزين السجلات وتحليلها بشكل دائم. لمزيد من المعلومات حول استخدام التسجيل، راجع مراقبة نقاط النهاية عبر الإنترنت.

احذف نقطة النهاية والتوزيع

احذف نقطة النهاية وجميع عمليات النشر الأساسية الخاصة بها:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait