حزم ونشر النماذج خارج Azure التعلم الآلي (معاينة)

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

هام

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

لمزيد من المعلومات، راجع ⁧⁩شروط الاستخدام التكميلية لمعاينات Microsoft Azure⁧⁩.

في هذه المقالة، ستتعرف على كيفية حزم نموذج ونشره في Azure App Service.

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

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

  • اشتراك Azure. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء. جرّب الإصدار المجاني أو المدفوع من «التعلم الآلي» من Azure.

  • مساحة عمل للتعلم الآلي من Microsoft Azure. إذا لم يكن لديك واحدة، فاستخدم الخطوات الواردة في مقالة كيفية إدارة مساحات العمل لإنشاء مساحة عمل.

    إشعار

    لا تدعم مساحات العمل الممكنة للارتباط الخاص نماذج التعبئة والتغليف للنشر خارج Azure التعلم الآلي.

  • يتم استخدام عناصر التحكم في الوصول المستندة إلى الدور في (Azure RBAC) لمنح الوصول إلى العمليات في التعلم الآلي من Microsoft Azure. لتنفيذ الخطوات الواردة في هذه المقالة، يجب تعيين دور المالك أو المساهم لحساب المستخدم الخاص بك لمساحة عمل Azure التعلم الآلي أو دور مخصص. لمزيدٍ من المعلومات، راجع إدارة الوصول إلى مساحة عمل Azure Machine Learning.

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

اتبع هذه الخطوات لإعداد النظام الخاص بك.

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

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

    تستخدم هذه المقالة المثال في نقاط نهاية المجلد /online/deploy-with-packages/mlflow-model.

  2. الاتصال إلى مساحة عمل Azure التعلم الآلي حيث ستقوم بعملك.

    az account set --subscription <subscription>
    az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
    
  3. تتطلب الحزم تسجيل النموذج إما في مساحة العمل الخاصة بك أو في سجل التعلم الآلي Azure. في هذا المثال، هناك نسخة محلية من النموذج في المستودع، لذلك تحتاج فقط إلى نشر النموذج إلى السجل في مساحة العمل. يمكنك تخطي هذه الخطوة إذا كان النموذج الذي تحاول نشره مسجلا بالفعل.

    MODEL_NAME='heart-classifier-mlflow'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type mlflow_model
    

نشر حزمة نموذج إلى Azure App Service

في هذا القسم، يمكنك حزم نموذج MLflow المسجل مسبقا ونشره في Azure App Service.

  1. يتطلب نشر نموذج خارج Azure التعلم الآلي إنشاء مواصفات حزمة. لإنشاء حزمة غير متصلة تماما ب Azure التعلم الآلي، حدد copy الوضع في تكوين النموذج. copy يخبر الوضع الحزمة بنسخ البيانات الاصطناعية داخل الحزمة. توضح التعليمات البرمجية التالية كيفية تحديد وضع النسخ لتكوين النموذج:

    إنشاء حزمة مواصفات YAML:

    package-external.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    target_environment: heart-classifier-mlflow-pkg
    inferencing_server: 
        type: azureml_online
    model_configuration:
        mode: copy
    

    تلميح

    عند تحديد تكوين النموذج باستخدام copy لخاصية الوضع، فإنك تضمن نسخ جميع البيانات الاصطناعية للنموذج داخل صورة docker التي تم إنشاؤها بدلا من تنزيلها من سجل نموذج Azure التعلم الآلي، وبالتالي السماح بقابلية النقل الحقيقية خارج Azure التعلم الآلي. للحصول على مواصفات كاملة حول جميع الخيارات عند إنشاء الحزم، راجع إنشاء مواصفات حزمة.

  2. ابدأ عملية الحزمة.

    az ml model package --name $MODEL_NAME --version $MODEL_VERSION --file package-external.yml
    
  3. نتيجة عملية الحزمة هي بيئة في Azure التعلم الآلي. تتمثل ميزة وجود هذه البيئة في أن كل بيئة تحتوي على صورة docker مقابلة يمكنك استخدامها في نشر خارجي. تتم استضافة الصور في Azure Container Registry. توضح الخطوات التالية كيفية الحصول على اسم الصورة التي تم إنشاؤها:

    1. انتقل إلى "Azure التعلم الآلي studio".

    2. حدد قسم Environments.

    3. حدد علامة التبويب بيئات مخصصة.

    4. ابحث عن البيئة المسماة heart-classifier-mlflow-package، وهو اسم الحزمة التي أنشأتها للتو.

    5. انسخ القيمة الموجودة في حقل سجل حاوية Azure.

    A screenshot showing the section where the Azure container registry image name is displayed in Azure Machine Learning studio.

  4. الآن، انشر هذه الحزمة في App Service.

    1. انتقل إلى مدخل Microsoft Azure وأنشئ مورد App Service جديدا.

    2. في معالج الإنشاء، حدد الاشتراك ومجموعة الموارد التي تستخدمها.

    3. في قسم تفاصيل المثيل، امنح التطبيق اسما.

    4. بالنسبة إلى Publish، حدد Docker container.

    5. بالنسبة إلى نظام التشغيل، حدد Linux.

      A screenshot showing how to configure the app service to deploy the generated docker container image.

    6. قم بتكوين باقي الصفحة حسب الحاجة وحدد التالي.

    7. انتقل إلى علامة التبويب Docker .

    8. بالنسبة إلى Options، حدد Single Container.

    9. بالنسبة لمصدر الصورة، حدد Azure Container Registry.

    10. تكوين خيارات تسجيل حاوية Azure كما يلي:

      1. بالنسبة إلى Registry، حدد Azure Container Registry المقترن بمساحة عمل Azure التعلم الآلي.

      2. بالنسبة للصورة، حدد الصورة التي وجدتها في الخطوة 3(ه) من هذا البرنامج التعليمي.

      3. بالنسبة إلى Tag، حدد latest.

      A screenshot showing the section Docker of the wizard, where the docker image associated with the package is indicated.

    11. تكوين بقية المعالج حسب الحاجة.

    12. حدد إنشاء. يتم الآن نشر النموذج في App Service التي أنشأتها.

    13. تعتمد طريقة استدعاء والحصول على التنبؤات على خادم الاستدلال الذي استخدمته. في هذا المثال، استخدمت خادم الاستدلال Azure التعلم الآلي، والذي ينشئ تنبؤات تحت المسار /score. لمزيد من المعلومات حول تنسيقات الإدخال وميزاته، راجع تفاصيل حزمة azureml-inference-server-http.

    14. إعداد حمولة الطلب. تنسيق نموذج MLflow المنشور مع خادم الاستدلال Azure التعلم الآلي كما يلي:

      sample-request.json

      {
          "input_data": {
              "columns": [
                  "age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
              ],
              "index": [1],
              "data": [
                  [1, 1, 4, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
              ]
          }
      }
      
    15. اختبر نشر النموذج لمعرفة ما إذا كان يعمل.

      cat -A sample-request.json | curl http://heart-classifier-mlflow-pkg.azurewebsites.net/score \
          --request POST \
          --header 'Content-Type: application/json' \
          --data-binary @-
      

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