Udostępnij za pośrednictwem


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 ich operacjonalizacji w usłudze Azure Machine Learning. 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 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

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

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

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.5/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 Learning, 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 Learning 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