Używanie usługi Azure Pipelines z usługą Azure Machine Edukacja
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Potok usługi Azure DevOps umożliwia zautomatyzowanie cyklu życia uczenia maszynowego. Niektóre operacje, które można zautomatyzować, to:
- Przygotowywanie danych (wyodrębnianie, przekształcanie, operacje ładowania)
- Trenowanie modeli uczenia maszynowego przy użyciu skalowania na żądanie i skalowania w górę
- Wdrażanie modeli uczenia maszynowego jako publicznych lub prywatnych usług internetowych
- Monitorowanie wdrożonych modeli uczenia maszynowego (takich jak na potrzeby analizy wydajności lub dryfu danych)
W tym artykule pokazano, jak utworzyć usługę Azure Pipeline, która kompiluje i wdraża model uczenia maszynowego w usłudze Azure Machine Edukacja.
W tym samouczku użyto zestawu Azure Machine Edukacja Python SDK w wersji 2 i rozszerzenia uczenia maszynowego platformy Azure w wersji 2.
Wymagania wstępne
- Ukończ tworzenie zasobów, aby rozpocząć pracę :
- Tworzenie obszaru roboczego
- Tworzenie klastra obliczeniowego opartego na chmurze do użycia na potrzeby trenowania modelu
- Rozszerzenie usługi Azure Machine Edukacja dla usługi Azure Pipelines. To rozszerzenie można zainstalować z witryny Marketplace programu Visual Studio pod adresem https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.azureml-v2.
Krok 1. Pobieranie kodu
Rozwidlenie następującego repozytorium w usłudze GitHub:
https://github.com/azure/azureml-examples
Krok 2. Logowanie się do usługi Azure Pipelines
Zaloguj się do usługi Azure Pipelines. Po zalogowaniu przeglądarka przejdzie do https://dev.azure.com/my-organization-name
pulpitu nawigacyjnego usługi Azure DevOps i wyświetli go.
W wybranej organizacji utwórz projekt. Jeśli nie masz żadnych projektów w organizacji, zobaczysz ekran Tworzenie projektu, aby rozpocząć pracę . W przeciwnym razie wybierz przycisk Nowy projekt w prawym górnym rogu pulpitu nawigacyjnego.
Krok 3. Tworzenie połączenia z usługą
Możesz użyć istniejącego połączenia usługi.
Do uwierzytelniania w witrynie Azure Portal potrzebne jest połączenie usługi Azure Resource Manager.
W usłudze Azure DevOps wybierz pozycję Projekt Ustawienia i otwórz stronę Połączenia z usługą.
Wybierz pozycję + Nowe połączenie z usługą i wybierz pozycję Azure Resource Manager.
Wybierz domyślną metodę uwierzytelniania, jednostkę usługi (automatyczną).
Utwórz połączenie usługi. Ustaw preferowany poziom zakresu, subskrypcję, grupę zasobów i nazwę połączenia.
Krok 4. Tworzenie potoku
Przejdź do obszaru Potoki, a następnie wybierz pozycję Nowy potok.
Wykonaj kroki kreatora, wybierając najpierw usługę GitHub jako lokalizację kodu źródłowego.
Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź poświadczenia usługi GitHub.
Po wyświetleniu listy repozytoriów wybierz repozytorium.
Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.
Wybierz potok Starter. Zaktualizujesz szablon potoku początkowego.
Krok 5. Skompilowanie potoku YAML w celu przesłania zadania usługi Azure Machine Edukacja
Usuń potok startowy i zastąp go następującym kodem YAML. W tym potoku wykonasz następujące działania:
- Użyj zadania wersji języka Python, aby skonfigurować środowisko Python 3.8 i zainstalować wymagania dotyczące zestawu SDK.
- Użyj zadania powłoki Bash, aby uruchomić skrypty powłoki bash dla zestawu AZURE Machine Edukacja SDK i interfejsu wiersza polecenia.
- Użyj zadania interfejsu wiersza polecenia platformy Azure, aby przesłać zadanie usługi Azure Machine Edukacja.
Wybierz poniższe karty w zależności od tego, czy używasz połączenia usługi Azure Resource Manager, czy ogólnego połączenia z usługą. W potoku YAML zastąp wartość zmiennych zasobami.
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. Oczekiwanie na ukończenie zadania Edukacja maszyny platformy Azure
W kroku 5 dodano zadanie do przesyłania zadania usługi Azure Machine Edukacja. W tym kroku dodasz kolejne zadanie, które oczekuje na ukończenie zadania usługi Azure Machine Edukacja.
Jeśli używasz połączenia usługi Azure Resource Manager, możesz użyć rozszerzenia "Maszyna Edukacja". To rozszerzenie można przeszukać w witrynie Marketplace rozszerzeń usługi Azure DevOps lub przejść bezpośrednio do rozszerzenia. Zainstaluj rozszerzenie "Machine Edukacja".
Ważne
Nie instaluj rozszerzenia machine Edukacja (wersja klasyczna) przez pomyłkę. Jest to starsze rozszerzenie, które nie zapewnia tej samej funkcjonalności.
W oknie Przegląd potoku dodaj zadanie serwera. W części kroków zadania wybierz pozycję Pokaż asystenta i wyszukaj pozycję AzureML. Wybierz zadanie Oczekiwania zadania usługi AzureML i wypełnij informacje dotyczące zadania.
Zadanie ma cztery dane wejściowe: Service Connection
, Azure Resource Group Name
i AzureML Workspace Name
AzureML Job Name
. Wypełnij te dane wejściowe. Wynikowy kod YAML dla tych kroków jest podobny do następującego przykładu:
Uwaga
- Zadanie oczekiwania zadania Edukacja maszyny azure jest uruchamiane w zadaniu serwera, które nie korzysta z kosztownych zasobów puli agentów i nie wymaga dodatkowych opłat. Zadania serwera (wskazywane przez
pool: server
program ) są uruchamiane na tej samej maszynie co potok. Aby uzyskać więcej informacji, zobacz Zadania serwera. - Jedno zadanie oczekiwania zadania Edukacja maszyny azure może czekać tylko na jedno zadanie. Musisz skonfigurować oddzielne zadanie dla każdego zadania, które chcesz zaczekać.
- Zadanie oczekiwania zadania Edukacja maszyny platformy Azure może poczekać maksymalnie 2 dni. Jest to sztywny limit ustawiony przez usługę 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. Przesyłanie potoku i weryfikowanie przebiegu potoku
Wybierz pozycję Zapisz i uruchom. Potok będzie czekać na ukończenie zadania usługi Azure Machine Edukacja i zakończy zadanie podrzędne z WaitForJobCompletion
tym samym stanem co zadanie usługi Azure Machine Edukacja. Na przykład: Azure Machine Edukacja job == Azure DevOps Task under job Succeeded
under job Succeeded
Azure Machine Edukacja Failed
job == Azure DevOps Task under WaitForJobCompletion
job Azure Machine Edukacja job Cancelled
== Azure DevOps Task under job Failed
(Zadanie usługi Azure DevOps w ramach zadania podrzędnego Azure DevOps== Zadanie usługi Azure DevOps w ramach WaitForJobCompletion
WaitForJobCompletion
zadania)Cancelled
Napiwek
Pełne zadanie usługi Azure Machine Edukacja można wyświetlić w usłudze Azure Machine Edukacja Studio.
Czyszczenie zasobów
Jeśli nie zamierzasz nadal używać potoku, usuń projekt usługi Azure DevOps. W witrynie Azure Portal usuń grupę zasobów i wystąpienie usługi Azure Machine Edukacja.