Share via


Az Azure Pipelines használata az Azure Machine Tanulás

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Az Azure DevOps-folyamatokkal automatizálhatja a gépi tanulási életciklust. Az automatizálható műveletek némelyike a következő:

  • Adat-előkészítés (kinyerési, átalakítási, betöltési műveletek)
  • Gépi tanulási modellek betanítása igény szerinti felskálázással és vertikális felskálázással
  • Gépi tanulási modellek üzembe helyezése nyilvános vagy privát webszolgáltatásként
  • Üzembe helyezett gépi tanulási modellek monitorozása (például teljesítmény- vagy adatelsodródás-elemzéshez)

Ez a cikk bemutatja, hogyan hozhat létre olyan Azure Pipeline-t, amely gépi tanulási modellt hoz létre és helyez üzembe az Azure Machine Tanulás.

Ez az oktatóanyag az Azure Machine Tanulás Python SDK v2 és az Azure CLI ML v2 bővítményt használja.

Előfeltételek

1. lépés: A kód lekérése

Fork a következő adattár a GitHubon:

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

2. lépés: Bejelentkezés az Azure Pipelinesba

Jelentkezzen be az Azure Pipelinesba. A bejelentkezés után a böngésző megtekinti https://dev.azure.com/my-organization-name és megjeleníti az Azure DevOps-irányítópultot.

A kijelölt szervezeten belül hozzon létre egy projektet. Ha nem rendelkezik projekttel a szervezetében, megjelenik egy Projekt létrehozása az első lépések képernyőre. Ellenkező esetben válassza az Új projekt gombot az irányítópult jobb felső sarkában.

3. lépés: Szolgáltatáskapcsolat létrehozása

Meglévő szolgáltatáskapcsolatot is használhat.

Azure Resource Manager-kapcsolatra van szüksége az Azure Portalon való hitelesítéshez.

  1. Az Azure DevOpsban válassza a Project Gépház lehetőséget, és nyissa meg a Szolgáltatáskapcsolatok lapot.

  2. Válassza az + Új szolgáltatáskapcsolat lehetőséget, és válassza az Azure Resource Managert.

  3. Válassza ki az alapértelmezett hitelesítési módszert, a Szolgáltatásnév (automatikus) lehetőséget.

  4. Hozza létre a szolgáltatáskapcsolatot. Adja meg a kívánt hatókörszintet, előfizetést, erőforráscsoportot és kapcsolatnevet.

    Screenshot of ARM service connection.

4. lépés: Folyamat létrehozása

  1. Lépjen a Folyamatok elemre, majd válassza az Új folyamat lehetőséget.

  2. Végezze el a varázsló lépéseit úgy, hogy először a GitHubot választja a forráskód helyeként.

  3. Előfordulhat, hogy a rendszer átirányítja a GitHubra a bejelentkezéshez. Ha igen, adja meg a GitHub hitelesítő adatait.

  4. Amikor megjelenik az adattárak listája, válassza ki az adattárat.

  5. Előfordulhat, hogy a Rendszer átirányítja a GitHubra az Azure Pipelines alkalmazás telepítéséhez. Ha igen, válassza a Jóváhagyás > telepítés lehetőséget.

  6. Válassza ki a Starter-folyamatot. Frissíteni fogja a kezdőfolyamat-sablont.

5. lépés: A YAML-folyamat létrehozása az Azure Machine Tanulás feladat elküldéséhez

Törölje a kezdőfolyamatot, és cserélje le a következő YAML-kódra. Ebben a folyamatban a következőt fogja:

  • A Python verziófeladatával állítsa be a Python 3.8-at, és telepítse az SDK-követelményeket.
  • A Bash-feladattal bash-szkripteket futtathat az Azure Machine Tanulás SDK-hoz és parancssori felülethez.
  • Az Azure CLI-feladattal elküldhet egy Azure Machine-Tanulás feladatot.

Válassza az alábbi lapokat attól függően, hogy Azure Resource Manager-szolgáltatáskapcsolatot vagy általános szolgáltatáskapcsolatot használ. A folyamat YAML-ben cserélje le a változók értékét az erőforrásokra.

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. lépés: Várakozás az Azure Machine Tanulás feladat befejezésére

Az 5. lépésben hozzáadott egy feladatot egy Azure Machine-Tanulás feladat elküldéséhez. Ebben a lépésben egy másik feladatot ad hozzá, amely megvárja az Azure Machine Tanulás feladat befejezését.

Ha Azure Resource Manager-szolgáltatáskapcsolatot használ, használhatja a "Machine Tanulás" bővítményt. Ezt a bővítményt az Azure DevOps-bővítmények piacterén keresheti meg, vagy közvetlenül a bővítményre léphet. Telepítse a "Machine Tanulás" bővítményt.

Fontos

Ne telepítse véletlenül a Machine Tanulás (klasszikus) bővítményt; ez egy régebbi bővítmény, amely nem biztosítja ugyanazt a funkciót.

A Folyamat áttekintése ablakban adjon hozzá egy kiszolgálói feladatot. A feladat lépései között válassza az Asszisztens megjelenítése lehetőséget, és keresse meg az AzureML-t. Válassza ki az AzureML-feladat várakozási feladatát, és adja meg a feladat adatait.

A tevékenység négy bemenettel rendelkezik: Service Connection, AzureML Workspace NameAzure Resource Group Nameés AzureML Job Name. Töltse ki ezeket a bemeneteket. A következő lépésekhez kapott YAML hasonló a következő példához:

Megjegyzés:

  • Az Azure Machine Tanulás feladat várakozási feladata egy kiszolgálói feladaton fut, amely nem használ drága ügynökkészlet-erőforrásokat, és nem igényel további díjakat. A kiszolgálói feladatok (jelezve pool: server) ugyanazon a gépen futnak, mint a folyamat. További információ: Kiszolgálói feladatok.
  • Egy Azure Machine Tanulás feladat várakozási feladata csak egy feladatra várhat. Minden várni kívánt feladathoz külön feladatot kell beállítania.
  • Az Azure Machine Tanulás feladat várakozási feladata legfeljebb 2 napig várakozhat. Ez az Azure DevOps Pipelines által meghatározott korlát.
- 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. lépés: Folyamat elküldése és a folyamatfuttatás ellenőrzése

Válassza a Mentés és futtatás lehetőséget. A folyamat megvárja az Azure Machine Tanulás feladat befejezését, és az Azure Machine Tanulás feladattal megegyező állapotban WaitForJobCompletion fejezi be a feladatot. Például: Azure Machine Tanulás feladat Succeeded == Azure DevOps-feladat az Azure Machine Tanulás feladat Failed alatt SucceededWaitForJobCompletion == Azure DevOps-feladat az Azure Machine Tanulás feladat Cancelled alatt FailedWaitForJobCompletion == Azure DevOps-feladat a feladat alatt WaitForJobCompletionCancelled

Tipp.

Az Azure Machine Tanulás teljes feladatát megtekintheti az Azure Machine Tanulás Studióban.

Clean up resources

Ha nem használja tovább a folyamatot, törölje az Azure DevOps-projektet. Az Azure Portalon törölje az erőforráscsoportot és az Azure Machine Tanulás-példányt.