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
ml
Azure 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żyjaz 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
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 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ę.
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
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
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.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
- Jak wdrożyć potok trenowania z punktami końcowymi wsadowymi)
- Jak wdrożyć potok w celu przeprowadzania oceniania wsadowego przy użyciu przetwarzania wstępnego
- Tworzenie punktów końcowych wsadowych na podstawie zadań potoku
- Tworzenie zadań i danych wejściowych dla punktów końcowych wsadowych
- Rozwiązywanie problemów z punktami końcowymi usługi Batch