Použití Azure Pipelines se službou Azure Machine Učení
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
K automatizaci životního cyklu strojového učení můžete použít kanál Azure DevOps. Mezi operace, které můžete automatizovat, patří:
- Příprava dat (extrakce, transformace, operace načítání)
- Trénování modelů strojového učení se škálováním na vyžádání a vertikálním navýšením kapacity
- Nasazení modelů strojového učení jako veřejných nebo privátních webových služeb
- Monitorování nasazených modelů strojového učení (například pro analýzu výkonu nebo posunu dat)
Tento článek vás naučí, jak vytvořit kanál Azure, který sestaví a nasadí model strojového učení do služby Azure Machine Učení.
V tomto kurzu se používá Sada Azure Machine Učení Python SDK v2 a rozšíření Azure CLI ML v2.
Požadavky
- Začněte tím, že dokončíte vytváření prostředků:
- Vytvoření pracovního prostoru
- Vytvoření cloudového výpočetního clusteru pro trénování modelu
- Rozšíření Azure Machine Učení pro Azure Pipelines Toto rozšíření lze nainstalovat z marketplace sady Visual Studio na adrese https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.azureml-v2.
Krok 1: Získání kódu
Fork následující úložiště na GitHubu:
https://github.com/azure/azureml-examples
Krok 2: Přihlášení ke službě Azure Pipelines
Přihlaste se ke službě Azure Pipelines. Po přihlášení přejde váš prohlížeč na https://dev.azure.com/my-organization-name
řídicí panel Azure DevOps a zobrazí ho.
Ve vybrané organizaci vytvořte projekt. Pokud ve vaší organizaci nemáte žádné projekty, zobrazí se obrazovka Vytvořit projekt, který vám umožní začít . V opačném případě vyberte tlačítko Nový projekt v pravém horním rohu řídicího panelu.
Krok 3: Vytvoření připojení služby
Můžete použít existující připojení služby.
K ověření pomocí webu Azure Portal potřebujete připojení Azure Resource Manageru.
V Azure DevOps vyberte Project Nastavení a otevřete stránku Připojení služby.
Zvolte + Nové připojení služby a vyberte Azure Resource Manager.
Vyberte výchozí metodu ověřování, instanční objekt (automatický).
Vytvořte připojení ke službě. Nastavte upřednostňovanou úroveň oboru, předplatné, skupinu prostředků a název připojení.
Krok 4: Vytvoření kanálu
Přejděte na Kanály a pak vyberte Nový kanál.
Kroky průvodce proveďte tak, že nejprve vyberete GitHub jako umístění zdrojového kódu.
Můžete být přesměrováni na GitHub kvůli přihlášení. Pokud ano, zadejte svoje přihlašovací údaje GitHubu.
Až se zobrazí seznam úložišť, vyberte úložiště.
K instalaci aplikace Azure Pipelines můžete být přesměrováni na GitHub. Pokud ano, vyberte Schválit a nainstalovat.
Vyberte počáteční kanál. Aktualizujete úvodní šablonu kanálu.
Krok 5: Sestavení kanálu YAML pro odeslání úlohy azure machine Učení
Odstraňte počáteční kanál a nahraďte ho následujícím kódem YAML. V tomto kanálu:
- Pomocí úlohy verze Pythonu nastavte Python 3.8 a nainstalujte požadavky sady SDK.
- Pomocí úlohy Bash spusťte skripty Bash pro sadu Azure Machine Učení SDK a rozhraní příkazového řádku.
- Pomocí úlohy Azure CLI odešlete úlohu Učení azure.
V závislosti na tom, jestli používáte připojení služby Azure Resource Manager nebo obecné připojení služby, vyberte následující karty. V kanálu YAML nahraďte hodnotu proměnných vašimi prostředky.
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"
Krok 6: Počkejte na dokončení úlohy Azure Machine Učení
V kroku 5 jste přidali úlohu pro odeslání úlohy azure machine Učení. V tomto kroku přidáte další úlohu, která čeká na dokončení úlohy azure machine Učení.
Pokud používáte připojení služby Azure Resource Manager, můžete použít rozšíření "Machine Učení". Toto rozšíření můžete vyhledat na Marketplace rozšíření Azure DevOps nebo přejít přímo na rozšíření. Nainstalujte rozšíření "Machine Učení".
Důležité
Neinstalujte rozšíření Machine Učení (classic) omylem. Jedná se o starší rozšíření, které neposkytuje stejné funkce.
V okně revize kanálu přidejte úlohu serveru. V části úlohy vyberte Zobrazit asistenta a vyhledejte AzureML. Vyberte úlohu Čekání úlohy AzureML a vyplňte informace pro úlohu.
Úkol má čtyři vstupy: Service Connection
, Azure Resource Group Name
AzureML Workspace Name
a AzureML Job Name
. Vyplňte tyto vstupy. Výsledný YAML pro tyto kroky je podobný následujícímu příkladu:
Poznámka:
- Úloha čekání úlohy azure machine Učení běží na úloze serveru, která nevyužívá nákladné prostředky fondu agentů a nevyžaduje žádné další poplatky. Úlohy serveru (označené
pool: server
) běží na stejném počítači jako váš kanál. Další informace naleznete v tématu Úlohy serveru. - Jedna úloha čekání na Učení úlohy Azure může čekat pouze na jednu úlohu. Pro každou úlohu, na kterou chcete čekat, musíte nastavit samostatný úkol.
- Úloha čekání Učení úlohy Azure Machine Učení může čekat maximálně 2 dny. Toto je pevný limit nastavený službou 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)
Krok 7: Odeslání kanálu a ověření spuštění kanálu
Zvolte Uložit a Spustit. Kanál počká, až se úloha Učení Azure dokončí, a ukončí úlohu WaitForJobCompletion
pod stejným stavem jako úloha Učení Azure Machine. Příklad: Úloha Succeeded
Učení Azure Machine == Úloha Azure DevOps v úloze Succeeded
WaitForJobCompletion
Azure Machine Učení úloha Failed
== Úloha Azure DevOps v úloze WaitForJobCompletion
Failed
Azure Machine Učení úloha Cancelled
== Úloha Azure DevOps v úloze WaitForJobCompletion
Cancelled
Tip
Kompletní úlohu azure machine Učení můžete zobrazit v studio Azure Machine Learning.
Vyčištění prostředků
Pokud kanál dál nepoužíváte, odstraňte projekt Azure DevOps. Na webu Azure Portal odstraňte skupinu prostředků a instanci služby Azure Machine Učení.