استخدام Azure Pipelines مع Azure التعلم الآلي

خدمات Azure DevOps | Azure DevOps Server 2022 - Azure DevOps Server 2019

يمكنك استخدام مسار Azure DevOps لأتمتة دورة حياة التعلم الآلي. بعض العمليات التي يمكنك أتمتتها هي:

  • إعداد البيانات (عمليات الاستخراج والتحويل والتحميل)
  • تدريب نماذج التعلم الآلي مع توسيع نطاقها وتوسيع نطاقها عند الطلب
  • نشر نماذج التعلم الآلي كخدمات ويب عامة أو خاصة
  • مراقبة نماذج التعلم الآلي المنشورة (مثل تحليل الأداء أو انحراف البيانات)

تعلمك هذه المقالة كيفية إنشاء Azure Pipeline الذي ينشئ نموذج التعلم الآلي وينشره إلى Azure التعلم الآلي.

يستخدم هذا البرنامج التعليمي Azure التعلم الآلي Python SDK v2 وملحق Azure CLI ML v2.

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

الخطوة 1: الحصول على التعليمات البرمجية

نسخ المستودع التالي في GitHub:

https://github.com/azure/azureml-examples

الخطوة 2: تسجيل الدخول إلى Azure Pipelines

تسجيل الدخول إلى Azure Pipelines. بعد تسجيل الدخول، ينتقل المستعرض إلى https://dev.azure.com/my-organization-name ويعرض لوحة معلومات Azure DevOps.

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

الخطوة 3: إنشاء اتصال خدمة

يمكنك استخدام اتصال خدمة موجود.

تحتاج إلى اتصال Azure Resource Manager للمصادقة مع مدخل Microsoft Azure.

  1. في Azure DevOps، حدد Project الإعدادات وافتح صفحة Service connections.

  2. اختر + New service connection وحدد Azure Resource Manager.

  3. حدد طريقة المصادقة الافتراضية، كيان الخدمة (تلقائي).

  4. إنشاء اتصال الخدمة. قم بتعيين مستوى النطاق والاشتراك ومجموعة الموارد واسم الاتصال المفضل لديك.

    Screenshot of ARM service connection.

الخطوة 4: إنشاء مسار

  1. انتقل إلى Pipelines، ثم حدد New pipeline.

  2. قم بخطوات المعالج عن طريق تحديد GitHub كموقع للتعليمات البرمجية المصدر.

  3. قد تتم إعادة توجيهك إلى GitHub لتسجيل الدخول. إذا كان الأمر كذلك،‏ فأدخل بيانات اعتماد GitHub.

  4. عندما ترى قائمة مستودعات، حدد مستودعك.

  5. قد تتم إعادة توجيهك إلى GitHub لتثبيت تطبيق Azure Pipelines. إذا كان الأمر كذلك، فحدد Approve & install.

  6. حدد مسار Starter. ستقوم بتحديث قالب خط أنابيب البداية.

الخطوة 5: إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية YAML لإرسال مهمة التعلم الآلي Azure

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

  • استخدم مهمة إصدار Python لإعداد Python 3.8 وتثبيت متطلبات SDK.
  • استخدم مهمة Bash لتشغيل البرامج النصية bash ل Azure التعلم الآلي SDK وCLI.
  • استخدم مهمة Azure CLI لإرسال مهمة التعلم الآلي Azure.

حدد علامات التبويب التالية استنادا إلى ما إذا كنت تستخدم اتصال خدمة Azure Resource Manager أو اتصال خدمة عام. في البنية الأساسية لبرنامج ربط العمليات التجارية YAML، استبدل قيمة المتغيرات بمواردك.

name: submit-azure-machine-learning-job

trigger:
- none

variables:
  service-connection: 'machine-learning-connection' # replace with your service connection name
  resource-group: 'machinelearning-rg' # replace with your resource group name
  workspace: 'docs-ws' # replace with your workspace name

jobs:
- job: SubmitAzureMLJob
  displayName: Submit AzureML Job
  timeoutInMinutes: 300
  pool:
    vmImage: ubuntu-latest
  steps:
  - task: UsePythonVersion@0
    displayName: Use Python >=3.8
    inputs:
      versionSpec: '>=3.8'

  - bash: |
      set -ex

      az version
      az extension add -n ml
    displayName: 'Add AzureML Extension'

  - task: AzureCLI@2
    name: submit_azureml_job_task
    displayName: Submit AzureML Job Task
    inputs:
      azureSubscription: $(service-connection)
      workingDirectory: 'cli/jobs/pipelines-with-components/nyc_taxi_data_regression'
      scriptLocation: inlineScript
      scriptType: bash
      inlineScript: |
      
        # submit component job and get the run name
        job_name=$(az ml job create --file single-job-pipeline.yml -g $(resource-group) -w $(workspace) --query name --output tsv)

        # Set output variable for next task
        echo "##vso[task.setvariable variable=JOB_NAME;isOutput=true;]$job_name"

الخطوة 6: انتظر حتى تكتمل مهمة التعلم الآلي Azure

في الخطوة 5، أضفت وظيفة لإرسال وظيفة التعلم الآلي Azure. في هذه الخطوة، يمكنك إضافة وظيفة أخرى تنتظر اكتمال مهمة التعلم الآلي Azure.

إذا كنت تستخدم اتصال خدمة Azure Resource Manager، يمكنك استخدام ملحق "التعلم الآلي". يمكنك البحث في هذا الملحق في Azure DevOps extensions Marketplace أو الانتقال مباشرة إلى الملحق. تثبيت ملحق "التعلم الآلي".

هام

لا تقم بتثبيت ملحق التعلم الآلي (الكلاسيكي) عن طريق الخطأ؛ إنه ملحق قديم لا يوفر نفس الوظيفة.

في نافذة مراجعة البنية الأساسية لبرنامج ربط العمليات التجارية، أضف مهمة الخادم. في جزء الخطوات من المهمة، حدد إظهار المساعد وابحث عن AzureML. حدد مهمة انتظار مهمة AzureML واملأ المعلومات الخاصة بالوظيفة.

تحتوي المهمة على أربعة مدخلات: Service Connectionو Azure Resource Group NameAzureML Workspace Name و.AzureML Job Name املأ هذه المدخلات. يتشابه YAML الناتج لهذه الخطوات مع المثال التالي:

إشعار

  • تعمل مهمة انتظار مهمة التعلم الآلي Azure على مهمة خادم، والتي لا تستخدم موارد تجمع عامل باهظة الثمن ولا تتطلب أي رسوم إضافية. تعمل مهام الخادم (المشار إليها بواسطة pool: server) على نفس الجهاز مثل البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك. لمزيد من المعلومات، راجع مهام الخادم.
  • يمكن لمهمة انتظار مهمة واحدة في Azure التعلم الآلي الانتظار في مهمة واحدة فقط. ستحتاج إلى إعداد مهمة منفصلة لكل وظيفة تريد الانتظار عليها.
  • يمكن لمهمة انتظار مهمة Azure التعلم الآلي الانتظار لمدة يومين كحد أقصى. هذا حد ثابت تم تعيينه بواسطة Azure DevOps Pipelines.
- job: WaitForAzureMLJobCompletion
  displayName: Wait for AzureML Job Completion
  pool: server
  timeoutInMinutes: 0
  dependsOn: SubmitAzureMLJob
  variables: 
    # We are saving the name of azureMl job submitted in previous step to a variable and it will be used as an inut to the AzureML Job Wait task
    azureml_job_name_from_submit_job: $[ dependencies.SubmitAzureMLJob.outputs['submit_azureml_job_task.JOB_NAME'] ] 
  steps:
  - task: AzureMLJobWaitTask@1
    inputs:
      serviceConnection: $(service-connection)
      resourceGroupName: $(resource-group)
      azureMLWorkspaceName: $(workspace)
      azureMLJobName: $(azureml_job_name_from_submit_job)

الخطوة 7: إرسال البنية الأساسية لبرنامج ربط العمليات التجارية والتحقق من تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية

حدد حفظ وتشغيل. ستنتظر البنية الأساسية لبرنامج ربط العمليات التجارية حتى تكتمل مهمة التعلم الآلي Azure، وتنهي المهمة ضمن WaitForJobCompletion بنفس حالة وظيفة Azure التعلم الآلي. على سبيل المثال: مهمة Succeeded Azure التعلم الآلي == مهمة Azure DevOps ضمن WaitForJobCompletion مهمة Succeeded Azure التعلم الآلي المهمة Failed == مهمة Azure DevOps ضمن WaitForJobCompletion مهمة Failed Azure التعلم الآلي المهمة Cancelled == مهمة Azure DevOps ضمن WaitForJobCompletion المهمةCancelled

تلميح

يمكنك عرض مهمة Azure التعلم الآلي الكاملة في Azure التعلم الآلي studio.

تنظيف الموارد

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