Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Aby zautomatyzować cykl życia uczenia maszynowego, możesz użyć potoku Azure DevOps. 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 (na przykład na potrzeby analizy wydajności lub dryfu danych).
W tym artykule opisano, jak utworzyć potok w Azure, który buduje model uczenia maszynowego i wdraża go w Azure Machine Learning.
W tym samouczku są używane Azure Machine Learning Python SDK w wersji 2 i Azure CLI rozszerzenie ML w wersji 2.
Wymagania wstępne
- Ukończ samouczek Tworzenie zasobów, aby rozpocząć pracę:
- Utwórz obszar roboczy.
- Utwórz klaster obliczeniowy oparty na chmurze do użycia na potrzeby trenowania modelu.
- Python 3.10 lub nowsza zainstalowana do lokalnego uruchamiania skryptów Azure ML SDK v2.
- Zainstaluj rozszerzenie Azure Machine Learning dla Azure Pipelines. To rozszerzenie można zainstalować z witryny Visual Studio marketplace.
Krok 1. Pobieranie kodu
Sforkuj repozytorium poniżej z GitHub:
https://github.com/azure/azureml-examples
Krok 2. Tworzenie projektu
Zaloguj się do Azure. Wyszukaj i wybierz Azure DevOps organizacje. Wybierz pozycję Wyświetl moje organizacje. Wybierz organizację, której chcesz użyć.
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 panelu.
Krok 3. Tworzenie połączenia z usługą
Możesz użyć istniejącego połączenia usługi.
Aby uwierzytelnić się za pomocą portalu Azure, potrzebne jest połączenie Azure Resource Manager.
W Azure DevOps wybierz pozycję Project settings, a następnie wybierz pozycję Połączenia z usługami.
Wybierz Utwórz połączenie z usługą wybierz pozycję Azure Resource Manager, a następnie wybierz pozycję Dalej.
Użyj wartości domyślnych dla typu tożsamości i poświadczeń.
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ę Utwórz potok.
Wybierz GitHub jako lokalizację kodu źródłowego.
Możesz zostać przekierowany do GitHub, aby się zalogować. Jeśli tak, wprowadź swoje dane logowania do GitHub.
Po wyświetleniu listy repozytoriów wybierz repozytorium.
Być może nastąpi przekierowanie do GitHub w celu zainstalowania aplikacji Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.
Wybierz Starter pipeline. Zaktualizuj szablon potoku początkowego.
Krok 5: Utwórz potok YAML do przesyłania zadania w Azure Machine Learning
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 Python, aby skonfigurować Python 3.10 i zainstalować wymagania dotyczące zestawu SDK.
- Użyj zadania Bash, aby uruchomić skrypty Bash dla Azure Machine Learning SDK i CLI.
- Użyj zadania Azure CLI, aby przesłać zadanie Azure Machine Learning.
Wybierz jedną z poniższych kart, 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 pliku konfiguracyjnym YAML zastąp wartości zmiennych wartościami odpowiadającymi Twoim zasobom.
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"
Krok 6. Poczekaj na ukończenie zadania Azure Machine Learning
W kroku 5 dodano zadanie do przesłania zadania Azure Machine Learning. W tym kroku dodasz kolejne zadanie, które czeka na ukończenie zadania Azure Machine Learning.
Ważne
Oba mechanizmy oczekiwania w tym kroku (zadanie AzureMLJobWaitTask@1 na karcie Azure Resource Manager i rejestracja webhooka InvokeRESTAPI@1 na karcie Ogólne) zależą od wysłania powiadomienia RunTerminated przez Azure Machine Learning z powrotem do Azure DevOps po zakończeniu zadania. Ta ścieżka powiadomienia jest obecnie badana i może nie zostać ukończona zgodnie z oczekiwaniami, powodując przekroczenie limitu czasu zadania serwera WaitFor* zamiast odzwierciedlać stan zadania Azure Machine Learning. Jeśli wystąpi to zachowanie, pobierz status zadania z pracy agenta przy użyciu polecenia az ml job show --query status, aż zwrócony zostanie stan końcowy (Completed, Failed, lub Canceled), a następnie zakończ zadanie z pasującym stanem.
Jeśli używasz połączenia usługi Resource Manager, możesz użyć rozszerzenia Machine Learning. To rozszerzenie można wyszukać w Marketplace rozszerzeń Azure DevOps lub przejść bezpośrednio do strony rozszerzenia. Zainstaluj rozszerzenie Machine Learning.
Ważne
Nie instaluj rozszerzenia Machine Learning (wersja klasyczna). 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, a następnie wyszukaj pozycję AzureML. Wybierz zadanie AzureML Job Wait, a następnie podaj informacje dotyczące tego zadania.
Zadanie ma cztery dane wejściowe: Service Connection, Azure Resource Group Name, AzureML Workspace Name i AzureML Job Name. Podaj te dane wejściowe. Wynikowy kod YAML dla tych kroków jest podobny do następującego przykładu:
Uwaga
- Zadanie oczekiwania w Azure Machine Learning jest uruchamiane na serwerze, który nie korzysta z zasobów kosztownej puli agentów i nie wymaga dodatkowych opłat. Zadania serwera (wskazywane przez
pool: server) działają na tej samej maszynie co potok. Aby uzyskać więcej informacji, zobacz Zadania serwera. - Jedno zadanie oczekiwania w Azure Machine Learning może czekać tylko na jedno zadanie. Musisz skonfigurować oddzielne zadanie dla każdej pracy, na którą chcesz czekać.
- Zadanie oczekiwania dla zadań Azure Machine Learning może trwać maksymalnie dwa dni. Ten limit jest twardym limitem ustawionym przez potoki Azure DevOps.
- 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)
Krok 7: Prześlij potok i sprawdź przebieg jego działania.
Wybierz pozycję Zapisz i uruchom. Gdy mechanizm oczekiwania w kroku 6 działa zgodnie z projektem, potok czeka na ukończenie zadania Azure Machine Learning i kończy zadanie w WaitForJobCompletion o tym samym stanie, co zadanie Azure Machine Learning. Na przykład:
Azure Machine Learning zadanie
Succeeded== Azure DevOps Etap wWaitForJobCompletionzadaniuSucceededAzure Machine Learning Zadanie
Failed== Azure DevOps Zadanie w ramachWaitForJobCompletionZadaniaFailedAzure Machine Learning zadanie
Cancelled== Azure DevOps zadanie w ramachWaitForJobCompletionzadaniaCancelled
Uwaga
Ze względu na problem wywołany w kroku 6, zadanie WaitFor* może zostać zakończone z powodu przekroczenia limitu czasu zamiast odzwierciedlać stanu zadania Azure Machine Learning. Użyj Azure Machine Learning studio, aby potwierdzić rzeczywisty wynik zadania do momentu przywrócenia ścieżki powiadomienia.
Wskazówka
Pełne zadanie Azure Machine Learning można wyświetlić w Azure Machine Learning studio.
Czyszczenie zasobów
Jeśli nie planujesz kontynuować korzystania z potoku, usuń projekt Azure DevOps. W portalu Azure usuń tę grupę zasobów i instancję Azure Machine Learning.