Az Azure Pipelines használata az Azure Machine Learninggel

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

Egy Azure DevOps folyamat használatával 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 vízszintes és vertikális felskálázással.
  • Gépi tanulási modellek üzembe helyezése nyilvános vagy privát webszolgáltatásként.
  • Az üzembe helyezett gépi tanulási modellek monitorozása (például teljesítmény- vagy adateltolódás-elemzéshez).

Ez a cikk azt ismerteti, hogyan hozhat létre egy Azure folyamatot, amely gépi tanulási modellt hoz létre és helyez üzembe a Azure Machine Learning.

Ez az oktatóanyag a Azure Machine Learning Python SDK v2-t és a Azure CLI ML 2-es bővítményt használja.

Előfeltételek

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

Forkolja a következő adattárat a(z) GitHub-ról:

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

2. lépés: Projekt létrehozása

Jelentkezzen be az Azure-ba. Keresse meg és válassza ki a Azure DevOps szervezeteket. Válassza a Saját szervezetek megtekintése lehetőséget. Válassza ki a használni kívánt szervezetet.

A kijelölt szervezeten belül hozzon létre egy projektet. Ha nincsenek projektjei a szervezetében, látni fog egy Projekt létrehozása a kezdéshez képernyőt. Ellenkező esetben válassza a New Project 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.

A Azure portálon való hitelesítéshez Azure Resource Manager kapcsolatra van szükség.

  1. A Azure DevOps válassza a Project beállítások, majd a Szolgáltatás-kapcsolatok lehetőséget.

  2. Válassza a A szolgáltatáskapcsolat létrehozása, a Azure Resource Manager, majd a Next lehetőséget.

  3. Használja az identitástípus és a hitelesítő adatok alapértelmezett értékeit.

  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.

    Az ARM-szolgáltatáskapcsolat képernyőképe.

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

  1. Lépjen a Folyamatok elemre, majd válassza a Folyamat létrehozása lehetőséget.

  2. A forráskód helyeként válassza a GitHub lehetőséget.

  3. Előfordulhat, hogy átirányítanak a GitHubhoz való bejelentkezéshez. Ha így van, 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ít a GitHubra az Azure Pipelines alkalmazás telepítéséhez. Ha így van, válassza a Jóváhagyás > telepítés lehetőséget.

  6. Válassza ki az Indító csővezetéket. Frissíti a kezdőcsővezeték-sablont.

5. lépés: YAML-folyamat létrehozása a Azure Machine Learning 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 kell elvégzned:

  • A Python verziófeladat használatával állítsa be a Python 3.10-et, és telepítse az SDK-követelményeket.
  • A Bash-feladattal bash-szkripteket futtathat a Azure Machine Learning SDK-hoz és parancssori felülethez.
  • A Azure CLI feladat használatával küldjön be egy Azure Machine Learning feladatot.

Válassza az alábbi lapok egyikét 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ékeit az erőforrásoknak megfelelő értékekre.

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.10
    inputs:
      versionSpec: '>=3.10'

  - 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árja meg, amíg a Azure Machine Learning feladat befejeződik

Az 5. lépésben hozzáadott egy feladatot egy Azure Machine Learning feladat elküldéséhez. Ebben a lépésben egy másik feladatot ad hozzá, amely a Azure Machine Learning feladat befejezésére vár.

Fontos

A lépés mindkét várakozási mechanizmusa (a Azure Resource Manager lapon található AzureMLJobWaitTask@1 feladat és az Általános lapon található InvokeRESTAPI@1 webhook-regisztráció) attól függ, Azure Machine Learning RunTerminated értesítést küld-e vissza Azure DevOps a feladat befejezésekor. Ez az értesítési útvonal jelenleg vizsgálat alatt áll, és előfordulhat, hogy nem a várt módon fejeződik be, ezért a WaitFor* kiszolgálói feladat időtúllépést okoz ahelyett, hogy a Azure Machine Learning feladat állapotát tükrözné. Ha ezt a viselkedést tapasztalja, kérdezze le a feladat állapotát egy ügynökfeladatból az ml job show --query status által, amíg egy terminálállapotot (Completed, Failed vagy Canceled) nem kap, majd lépjen ki a feladatból a kapott állapotnak megfelelően.

Ha Resource Manager szolgáltatáskapcsolatot használ, használhatja a Machine Learning bővítményt. Ezt a bővítményt a Marketplace Azure DevOps bővítményeiben vagy közvetlenül a extension lapra kereshet. Telepítse a Machine Learning bővítményt.

Fontos

Ne telepítse a Machine Learning (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, majd keresse meg az AzureML-t. Válassza ki az AzureML-feladat várakozási feladatát, majd adja meg a feladat adatait.

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

Megjegyzés

  • A Azure Machine Learning 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 pipeline. További információ: Kiszolgálói feladatok.
  • Egy Azure Machine Learning feladat várakozási művelete csak egy műveletre várhat. Minden olyan feladathoz külön feladatot kell beállítania, amelyre várni szeretne.
  • A Azure Machine Learning feladat várakozási feladata legfeljebb két napig várakozhat. Ez a korlát egy szigorú határ, amelyet az Azure DevOps csővezetékek állítanak be.
- job: WaitForAzureMLJobCompletion
  displayName: Wait for AzureML Job Completion
  pool: server
  timeoutInMinutes: 0
  dependsOn: SubmitAzureMLJob
  variables: 
    # Save the name of the azureMl job submitted in the previous step to a variable. It will be used as an input 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: A folyamat elküldése és a folyamat futtatásának ellenőrzése

Válassza a Mentés és futtatás lehetőséget. Amikor a 6. lépés várakozási mechanizmusa a tervezett módon működik, a folyamat megvárja, amíg a Azure Machine Learning feladat befejeződik, és a feladatot a WaitForJobCompletion alatt fejezi be, ugyanazzal az állapottal, mint a Azure Machine Learning feladat. Például:

  • Azure Machine Learning feladat Succeeded == Azure DevOps munkafolyamat WaitForJobCompletion feladat Succeeded

  • Azure Machine Learning feladat Failed == Azure DevOps munkafolyamat WaitForJobCompletion feladat Failed

  • Azure Machine Learning feladat Cancelled == Azure DevOps munkafolyamat WaitForJobCompletion feladat Cancelled

Megjegyzés

A 6. lépésben feltárt probléma miatt előfordulhat, hogy a WaitFor* feladat időtúllépést tapasztal ahelyett, hogy az Azure Machine Learning feladat állapotát tükrözné. A Azure Machine Learning stúdió használatával erősítse meg a feladat tényleges eredményét az értesítési útvonal visszaállításáig.

Tipp

A teljes Azure Machine Learning feladatot a Azure Machine Learning stúdió webhelyen tekintheti meg.

Erőforrások törlése

Ha nem tervezi folytatni a folyamat használatát, törölje a Azure DevOps projektet. Az Azure portálon törölje az erőforráscsoportot és az Azure Machine Learning példányt.