Wdrażanie istniejących zadań potoku w punktach końcowych wsadowych
DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)
Punkty końcowe usługi Batch umożliwiają wdrażanie składników potoku, zapewniając wygodny sposób operacjonalizacji potoków w usłudze Azure Machine Learning. Punkty końcowe usługi Batch akceptują składniki potoku do wdrożenia. Jeśli jednak masz już zadanie potoku, które działa pomyślnie, usługa Azure Machine Learning może zaakceptować to zadanie jako dane wejściowe punktu końcowego wsadowego i automatycznie utworzyć składnik potoku. W tym artykule dowiesz się, jak używać istniejącego zadania potoku jako danych wejściowych do wdrożenia wsadowego.
Dowiesz się, jak wykonywać następujące czynności:
- Uruchamianie i tworzenie zadania potoku, które chcesz wdrożyć
- Tworzenie wdrożenia wsadowego na podstawie istniejącego zadania
- Testowanie wdrożenia
Informacje o tym przykładzie
W tym przykładzie wdrożymy potok składający się z prostego zadania polecenia, które wyświetla tekst "hello world!". Zamiast rejestrować składnik potoku przed wdrożeniem, wskazujemy istniejące zadanie potoku do użycia na potrzeby wdrożenia. Usługa Azure Machine Learning automatycznie utworzy składnik potoku i wdroży go jako wdrożenie składnika potoku punktu końcowego wsadowego.
Przykład w tym artykule jest oparty na przykładach kodu zawartych w repozytorium azureml-examples . Aby uruchomić polecenia lokalnie bez konieczności kopiowania lub wklejania kodu YAML i innych plików, użyj następujących poleceń, aby sklonować repozytorium i przejść do folderu dla języka kodowania:
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Pliki dla tego przykładu znajdują się w następujących elementach:
cd endpoints/batch/deploy-pipelines/hello-batch
Wymagania wstępne
Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Obszar roboczy usługi Azure Machine Learning. Aby utworzyć obszar roboczy, zobacz Zarządzanie obszarami roboczymi usługi Azure Machine Learning.
Następujące uprawnienia w obszarze roboczym usługi Azure Machine Learning:
- Do tworzenia punktów końcowych i wdrożeń wsadowych lub zarządzania nimi: użyj roli właściciela, współautora lub niestandardowej, która została przypisana
Microsoft.MachineLearningServices/workspaces/batchEndpoints/*
do uprawnień. - Aby utworzyć wdrożenia usługi Azure Resource Manager w grupie zasobów obszaru roboczego: użyj roli właściciel, współautor lub niestandardowa, która została przypisana
Microsoft.Resources/deployments/write
do uprawnienia w grupie zasobów, w której wdrożono obszar roboczy.
- Do tworzenia punktów końcowych i wdrożeń wsadowych lub zarządzania nimi: użyj roli właściciela, współautora lub niestandardowej, która została przypisana
Interfejs wiersza polecenia usługi Azure Machine Learning lub zestaw AZURE Machine Learning SDK dla języka Python:
Uruchom następujące polecenie, aby zainstalować interfejs wiersza polecenia platformy Azure i
ml
rozszerzenie usługi Azure Machine Learning:az extension add -n ml
Wdrożenia składników potoku dla punktów końcowych wsadowych są wprowadzane w wersji 2.7
ml
rozszerzenia dla interfejsu wiersza polecenia platformy Azure. Użyj polecenia ,az extension update --name ml
aby pobrać najnowszą wersję.
Nawiązywanie połączenia z obszarem roboczym
Obszar roboczy to zasób najwyższego poziomu dla usługi Azure Machine Learning. Zapewnia scentralizowane miejsce do pracy ze wszystkimi artefaktami tworzonymi podczas korzystania z usługi Azure Machine Learning. W tej sekcji nawiąż połączenie z obszarem roboczym, w którym wykonujesz zadania wdrażania.
W poniższym poleceniu wprowadź identyfikator subskrypcji, nazwę obszaru roboczego, nazwę grupy zasobów i lokalizację:
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Uruchamianie zadania potoku, które chcesz wdrożyć
W tej sekcji rozpoczniemy od uruchomienia zadania potoku:
Następujący pipeline-job.yml
plik zawiera konfigurację zadania potoku:
pipeline-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
experiment_name: hello-pipeline-batch
display_name: hello-pipeline-batch-job
description: This job demonstrates how to run the a pipeline component in a pipeline job. You can use this example to test a component in an standalone job before deploying it in an endpoint.
compute: batch-cluster
component: hello-component/hello.yml
Utwórz zadanie potoku:
JOB_NAME=$(az ml job create -f pipeline-job.yml --query name -o tsv)
Tworzenie punktu końcowego wsadowego
Przed wdrożeniem zadania potoku musimy wdrożyć punkt końcowy wsadowy w celu hostowania wdrożenia.
Podaj nazwę punktu końcowego. Nazwa punktu końcowego partii musi być unikatowa w każdym regionie, ponieważ nazwa jest używana do konstruowania identyfikatora URI wywołania. Aby zapewnić unikatowość, dołącz wszystkie końcowe znaki do nazwy określonej w poniższym kodzie.
ENDPOINT_NAME="hello-batch"
Konfigurowanie punktu końcowego:
Plik
endpoint.yml
zawiera konfigurację punktu końcowego.endpoint.yml
$schema: https://azuremlschemas.azureedge.net/latest/batchEndpoint.schema.json name: hello-batch description: A hello world endpoint for component deployments. auth_mode: aad_token
Utwórz punkt końcowy:
az ml batch-endpoint create --name $ENDPOINT_NAME -f endpoint.yml
Wykonaj zapytanie dotyczące identyfikatora URI punktu końcowego:
az ml batch-endpoint show --name $ENDPOINT_NAME
Wdrażanie zadania potoku
Aby wdrożyć składnik potoku, musimy utworzyć wdrożenie wsadowe z istniejącego zadania.
Musimy poinformować usługę Azure Machine Learning o nazwie zadania, które chcemy wdrożyć. W naszym przypadku to zadanie jest wskazane w następującej zmiennej:
echo $JOB_NAME
Skonfiguruj wdrożenie.
Plik
deployment-from-job.yml
zawiera konfigurację wdrożenia. Zwróć uwagę, że używamy kluczajob_definition
zamiastcomponent
wskazywać, że to wdrożenie zostało utworzone na podstawie zadania potoku:deployment-from-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json name: hello-batch-from-job endpoint_name: hello-pipeline-batch type: pipeline job_definition: azureml:job_name_placeholder settings: continue_on_step_failure: false default_compute: batch-cluster
Napiwek
Ta konfiguracja zakłada, że masz klaster obliczeniowy o nazwie
batch-cluster
. Możesz zastąpić tę wartość nazwą klastra.Utwórz wdrożenie:
Uruchom następujący kod, aby utworzyć wdrożenie wsadowe w punkcie końcowym wsadowym i ustawić je jako domyślne wdrożenie.
az ml batch-deployment create --endpoint $ENDPOINT_NAME --set job_definition=azureml:$JOB_NAME -f deployment-from-job.yml
Napiwek
Zwróć uwagę na użycie polecenia
--set job_definition=azureml:$JOB_NAME
. Ponieważ nazwy zadań są unikatowe, polecenie--set
służy tutaj do zmiany nazwy zadania podczas uruchamiania go w obszarze roboczym.Wdrożenie jest gotowe do użycia.
Testowanie wdrożenia
Po utworzeniu wdrożenia można przystąpić do odbierania zadań. Wdrożenie domyślne można wywołać w następujący sposób:
JOB_NAME=$(az ml batch-endpoint invoke -n $ENDPOINT_NAME --query name -o tsv)
Możesz monitorować postęp wyświetlania i przesyłać strumieniowo dzienniki przy użyciu:
az ml job stream -n $JOB_NAME
Czyszczenie zasobów
Po zakończeniu usuń skojarzone zasoby z obszaru roboczego:
Uruchom następujący kod, aby usunąć punkt końcowy wsadowy i jego bazowe wdrożenie. --yes
służy do potwierdzania usunięcia.
az ml batch-endpoint delete -n $ENDPOINT_NAME --yes