نشر حزم النموذج إلى نقاط النهاية عبر الإنترنت (معاينة)

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

هام

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

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

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

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

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

حول هذا المثال

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

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

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

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

الاتصال بمساحة العمل

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

az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>

حزم النموذج

يمكنك إنشاء حزم نماذج بشكل صريح للسماح لك بالتحكم في كيفية إجراء عملية التعبئة والتغليف. يمكنك إنشاء حزم نموذج عن طريق تحديد:

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

تلميح

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

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

    MODEL_NAME='sklearn-regression'
    MODEL_PATH='model'
    az ml model create --name $MODEL_NAME --path $MODEL_PATH --type custom_model
    
  2. يتطلب نموذجنا تشغيل الحزم التالية ولدينا محددة في ملف conda:

    conda.yaml

    name: model-env
    channels:
      - conda-forge
    dependencies:
      - python=3.9
      - numpy=1.23.5
      - pip=23.0.1
      - scikit-learn=1.2.2
      - scipy=1.10.1
      - xgboost==1.3.3
    

    إشعار

    لاحظ كيف تتم الإشارة إلى متطلبات النموذج فقط في conda YAML. سيتم تضمين أي حزمة مطلوبة لخادم الاستدلال بواسطة عملية الحزمة.

    تلميح

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

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

    إنشاء تعريف بيئة أساسية:

    sklearn-regression-env.yml

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: sklearn-regression-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04
    conda_file: conda.yaml
    description: An environment for models built with XGBoost and Scikit-learn.
    

    ثم قم بإنشاء البيئة كما يلي:

    az ml environment create -f environment/sklearn-regression-env.yml
    
  4. إنشاء مواصفات حزمة:

    package-moe.yml

    $schema: http://azureml/sdk-2-0/ModelVersionPackage.json
    base_environment_source:
        type: environment_asset
        resource_id: azureml:sklearn-regression-env:1
    target_environment: sklearn-regression-online-pkg
    inferencing_server: 
        type: azureml_online
        code_configuration:
          code: src
          scoring_script: score.py
    
  5. بدء عملية حزمة النموذج:

    az ml model package -n $MODEL_NAME -v $MODEL_VERSION --file package-moe.yml
    
  6. نتيجة عملية الحزمة هي بيئة.

نشر حزمة النموذج

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

  1. اختر اسما لنقطة نهاية لاستضافة نشر الحزمة وإنشاءها:

    ENDPOINT_NAME="sklearn-regression-online"
    
    az ml online-endpoint create -n $ENDPOINT_NAME
    
  2. إنشاء النشر، باستخدام الحزمة. لاحظ كيفية environment تكوين مع الحزمة التي قمت بإنشائها.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: with-package
    endpoint_name: hello-packages
    environment: azureml:sklearn-regression-online-pkg@latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    

    تلميح

    لاحظ أنك لا تحدد النموذج أو البرنامج النصي لتسجيل النقاط في هذا المثال؛ كلهم جزء من الحزمة.

  3. بدء النشر:

    az ml online-deployment create -f deployment.yml
    
  4. عند هذه النقطة، يكون النشر جاهزا للاستهلاك. يمكنك اختبار كيفية عمله عن طريق إنشاء نموذج ملف طلب:

    sample-request.json

    {
        "data": [
            [1,2,3,4,5,6,7,8,9,10], 
            [10,9,8,7,6,5,4,3,2,1]
        ]
    }
    
  5. إرسال الطلب إلى نقطة النهاية

    az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment with-package -r sample-request.json
    

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