مشاركة عبر


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

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

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

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

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

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

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

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

  • تم تثبيت Azure CLI وملحق ml Azure CLI وتكوينه. لمزيد من المعلومات، راجع تثبيت CLI (v2) وإعداده.

  • غلاف Bash أو shell متوافق، على سبيل المثال، shell على نظام Linux أو نظام Windows الفرعي ل Linux. تفترض أمثلة Azure CLI في هذه المقالة أنك تستخدم هذا النوع من shell.

  • مساحة عمل للتعلم الآلي من Microsoft Azure. للحصول على إرشادات لإنشاء مساحة عمل، راجع إعداد.

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

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

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

  • بدلا من ذلك، يمكنك استخدام الحصة النسبية من تجمع الحصص المشتركة للتعلم الآلي من Azure لفترة محدودة. يوفر 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، ثم قم بالتغيير إلى دليل azureml-examples/cli الخاص بالمستودع:

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

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

الأوامر في هذا البرنامج التعليمي موجودة في الملفات deploy-local-endpoint.shdeploy-managed-online-endpoint.sh في دليل cli . توجد ملفات تكوين YAML في نقاط النهاية/عبر الإنترنت/المدارة/العينة/ الدليل الفرعي.

ملاحظة

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

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

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

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

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

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 لنقطة النهاية عبر الإنترنت. للحصول على معلومات حول الحدود المتعلقة بنقاط النهاية المدارة، راجع نقاط نهاية التعلم الآلي من Azure عبر الإنترنت ونقاط النهاية الدفعية.

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

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

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

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

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

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

تعرض القصاصة البرمجية التالية نقاط النهاية/عبر الإنترنت/المدارة/عينة/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-ubuntu22.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 من المستودع الذي قمت بنسخه أو تنزيله مسبقا:

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 وقوالب ARM.

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

يمكنك استخدام حزمة Python لخادم HTTP للاستدلال على التعلم الآلي من Azure لتصحيح أخطاء البرنامج النصي لتسجيل النقاط محليا دون 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:

قيمة الوصف
Creating يتم إنشاء المورد.
Updating يتم تحديث المورد.
Deleting يتم حذف المورد.
Succeeded نجحت عملية الإنشاء أو التحديث.
Failed فشلت عملية الإنشاء أو التحديث أو الحذف.

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

استدعاء نقطة النهاية لتسجيل النموذج باستخدام 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 للنموذج. قم بتسمية الملف model.yml:

    $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 endpoints/online/managed/sample/model.yml
    
  3. إنشاء تعريف YAML للبيئة. قم بتسمية الملف environment.yml:

    $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 endpoints/online/managed/sample/environment.yml
    

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

هام

عند تحديد بيئة مخصصة للتوزيع، تأكد من تضمين الحزمة azureml-inference-server-http في ملف conda. هذه الحزمة ضرورية لخادم الاستدلال للعمل بشكل صحيح. إذا لم تكن على دراية بكيفية إنشاء البيئة المخصصة الخاصة بك، فاستخدم إحدى بيئاتنا المنسقة مثل minimal-py-inference (للنماذج المخصصة التي لا تستخدم mlflow) أو mlflow-py-inference (للنماذج التي تستخدم mlflow). يمكنك العثور على هذه البيئات المنسقة في علامة تبويب البيئات لمثيل Azure Machine Learning studio.

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

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

استخدم الأصول المسجلة (النموذج والبيئة) في تعريف التوزيع الخاص بك. تعرض القصاصة البرمجية التالية نقاط النهاية/عبر الإنترنت/المدارة/عينة/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، اختر إصدار نوع حساب GPU وصورة 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
    

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

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

لمشاهدة إخراج السجل من حاوية، استخدم أمر 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 تنعكس في موارد 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 Monitor. لتكوين التحجيم التلقائي، راجع التحجيم التلقائي لنقاط النهاية عبر الإنترنت.

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

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

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

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

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

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

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