Udostępnij za pośrednictwem


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 Edukacja. 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 Edukacja może zaakceptować to zadanie jako dane wejściowe punktu końcowego usługi Batch 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 Edukacja 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/wklejania kodu YAML i innych plików, najpierw sklonuj repozytorium, a następnie zmień katalogi na folder:

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

Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto. Wypróbuj bezpłatną lub płatną wersję usługi Azure Machine Edukacja.

  • Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Manage Azure Machine Edukacja workspaces (Zarządzanie obszarami roboczymi usługi Azure Machine Edukacja), aby je utworzyć.

  • Upewnij się, że masz następujące uprawnienia w obszarze roboczym:

    • Tworzenie punktów końcowych i wdrożeń wsadowych lub zarządzanie nimi: użyj roli właściciela, współautora lub niestandardowej, która zezwala na Microsoft.MachineLearningServices/workspaces/batchEndpoints/*usługę .

    • Tworzenie wdrożeń usługi ARM w grupie zasobów obszaru roboczego: użyj roli Właściciel, Współautor lub Niestandardowy, która umożliwia Microsoft.Resources/deployments/write korzystanie z grupy zasobów, w której wdrożono obszar roboczy.

  • Aby pracować z usługą Azure Machine Edukacja, należy zainstalować następujące oprogramowanie:

    Interfejs wiersza polecenia platformy mlAzure i rozszerzenie usługi Azure Machine Edukacja.

    az extension add -n ml
    

    Uwaga

    Wdrożenia składników potoku dla punktów końcowych usługi Batch zostały wprowadzone w wersji 2.7 rozszerzenia dla interfejsu ml wiersza polecenia platformy Azure. Użyj az extension update --name ml polecenia , aby pobrać ostatnią wersję.

Nawiązywanie połączenia z obszarem roboczym

Obszar roboczy jest zasobem najwyższego poziomu dla usługi Azure Machine Learning, który udostępnia scentralizowane miejsce do pracy z wszystkimi tworzonymi podczas korzystania usługi Azure Machine Learning artefaktami. W tej sekcji połączymy się z obszarem roboczym, w którym wykonasz zadania wdrażania.

Przekaż wartości identyfikatora subskrypcji, obszaru roboczego, lokalizacji i grupy zasobów w następującym kodzie:

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.

  1. 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"
    
  2. 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
    
  3. Utwórz punkt końcowy:

    az ml batch-endpoint create --name $ENDPOINT_NAME  -f endpoint.yml
    
  4. 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.

  1. Musimy poinformować usługę Azure Machine Edukacja nazwę zadania, które chcemy wdrożyć. W naszym przypadku to zadanie jest wskazane w następującej zmiennej:

    echo $JOB_NAME
    
  2. Skonfiguruj wdrożenie.

    Plik deployment-from-job.yml zawiera konfigurację wdrożenia. Zwróć uwagę, że używamy klucza job_definition zamiast component 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.

  3. 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.

  4. 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

Następne kroki