Jak wdrażać potoki z punktami końcowymi wsadowymi

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Składniki potoku można wdrażać w punkcie końcowym wsadowym, zapewniając wygodny sposób operacjonalizacji ich w usłudze Azure Machine Edukacja. W tym artykule dowiesz się, jak utworzyć wdrożenie wsadowe zawierające prosty potok. Dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie i rejestrowanie składnika potoku
  • Tworzenie punktu końcowego wsadowego i wdrażanie składnika potoku
  • Testowanie wdrożenia

Informacje o tym przykładzie

W tym przykładzie wdrożymy składnik potoku składający się z prostego zadania polecenia, które wyświetla tekst "hello world!". Ten składnik nie wymaga żadnych danych wejściowych ani wyjściowych i jest najprostszym scenariuszem wdrażania potoku.

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

Postępuj zgodnie z instrukcjami w notesach Jupyter

Następnie możesz skorzystać z wersji zestawu SDK języka Python w tym przykładzie, otwierając notes sdk-deploy-and-test.ipynb w sklonowanym repozytorium.

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>

Tworzenie składnika potoku

Punkty końcowe usługi Batch mogą wdrażać modele lub składniki potoku. Składniki potoku są wielokrotnego użytku i można usprawnić praktykę uczenia maszynowego przy użyciu udostępnionych rejestrów w celu przeniesienia tych składników z jednego obszaru roboczego do innego.

Składnik potoku w tym przykładzie zawiera jeden krok, który wyświetla tylko komunikat "hello world" w dziennikach. Nie wymaga żadnych danych wejściowych ani wyjściowych.

Plik hello-component/hello.yml zawiera konfigurację składnika potoku:

hello-component/hello.yml

$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponent.schema.json
name: hello_batch
display_name: Hello Batch component
version: 1
type: pipeline
jobs:
  main_job:
    type: command
    component:
      code: src
      environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
      command: >-
        python hello.py

Zarejestruj składnik:

az ml component create -f hello-component/hello.yml

Tworzenie punktu końcowego wsadowego

  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 składnika potoku

Aby wdrożyć składnik potoku, musimy utworzyć wdrożenie wsadowe. Wdrożenie to zestaw zasobów wymaganych do hostowania zasobu, który wykonuje rzeczywistą pracę.

  1. Utwórz klaster obliczeniowy. Punkty końcowe i wdrożenia usługi Batch są uruchamiane w klastrach obliczeniowych. Mogą one działać w dowolnym klastrze obliczeniowym usługi Azure Machine Edukacja, który już istnieje w obszarze roboczym. W związku z tym wiele wdrożeń wsadowych może współużytkować tę samą infrastrukturę obliczeniową. W tym przykładzie będziemy pracować nad klastrem obliczeniowym usługi Azure Machine Edukacja o nazwie batch-cluster. Sprawdźmy, czy środowisko obliczeniowe istnieje w obszarze roboczym lub utwórz je w inny sposób.

    az ml compute create -n batch-cluster --type amlcompute --min-instances 0 --max-instances 5
    
  2. Konfigurowanie wdrożenia:

    Plik deployment.yml zawiera konfigurację wdrożenia. Możesz sprawdzić pełny schemat YAML punktu końcowego wsadowego pod kątem dodatkowych właściwości.

    deployment.yml

    $schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
    name: hello-batch-dpl
    endpoint_name: hello-pipeline-batch
    type: pipeline
    component: azureml:hello_batch@latest
    settings:
        default_compute: batch-cluster
    
  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 -f deployment.yml --set-default
    

    Napiwek

    Zwróć uwagę na użycie flagi --set-default , aby wskazać, że to nowe wdrożenie jest teraz domyślne.

  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)

Napiwek

W tym przykładzie potok nie ma danych wejściowych ani wyjściowych. Jeśli jednak składnik potoku wymaga niektórych elementów, można je wskazać w czasie wywołania. Aby dowiedzieć się, jak wskazać dane wejściowe i wyjściowe, zobacz Tworzenie zadań i danych wejściowych dla punktów końcowych wsadowych lub zobacz samouczek Jak wdrożyć potok w celu przeprowadzania oceniania wsadowego przy użyciu przetwarzania wstępnego (wersja zapoznawcza).

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

(Opcjonalnie) Usuń zasoby obliczeniowe, chyba że planujesz ponownie użyć klastra obliczeniowego z późniejszymi wdrożeniami.

az ml compute delete -n batch-cluster

Następne kroki