Z tego artykułu dowiesz się, jak wdrożyć model w punkcie końcowym online do użycia w wnioskowaniu w czasie rzeczywistym. Zacznij od wdrożenia modelu na komputerze lokalnym w celu debugowania błędów. Następnie wdrożysz i przetestujesz model na platformie Azure, wyświetlisz dzienniki wdrażania i będziesz monitorować umowę dotyczącą poziomu usług (SLA). Po zakończeniu tego artykułu będziesz mieć skalowalny punkt końcowy HTTPS/REST, którego można użyć do wnioskowania w czasie rzeczywistym.
Punkty końcowe online to punkty końcowe, które są używane do wnioskowania w czasie rzeczywistym. Istnieją dwa typy punktów końcowych online: zarządzane punkty końcowe online i punkty końcowe online platformy Kubernetes. Aby uzyskać więcej informacji na temat punktów końcowych i różnic między zarządzanymi punktami końcowymi online i punktami końcowymi online platformy Kubernetes, zobacz Co to są punkty końcowe usługi Azure Machine Learning?
Zarządzane punkty końcowe online ułatwiają wdrażanie modeli uczenia maszynowego jako „gotowych do użytku”. Zarządzane punkty końcowe online współpracują z maszynami o zaawansowanych procesorach CPU i GPU na platformie Azure w sposób skalowalny i w pełni zarządzany. Zarządzane punkty końcowe online oferują obsługę, skalowanie, zabezpieczanie i monitorowanie modeli, uwalniając Cię od konieczności konfigurowania infrastruktury bazowej i zarządzania nią.
Głównym przykładem tego dokumentu jest użycie zarządzanych punktów końcowych online do wdrożenia. Aby zamiast tego użyć platformy Kubernetes, zapoznaj się z uwagami w tym dokumencie, które są wbudowane w dyskusję na temat zarządzanego punktu końcowego online.
W przykładach interfejsu wiersza polecenia w tym artykule założono, że używasz powłoki Bash (lub zgodnej). Na przykład z systemu Linux lub Podsystem Windows dla systemu Linux.
Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*korzystanie z usługi . Jeśli używasz programu Studio do tworzenia/zarządzania punktami końcowymi/wdrożeniami online, musisz mieć dodatkowe uprawnienie "Microsoft.Resources/deployments/write" od właściciela grupy zasobów. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
(Opcjonalnie) Aby wdrożyć lokalnie, należy zainstalować aparat platformy Docker na komputerze lokalnym. Zdecydowanie zalecamy tę opcję, więc łatwiej jest debugować problemy.
Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:
Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego, aby je utworzyć.
Aby zainstalować zestaw PYTHON SDK w wersji 2, użyj następującego polecenia:
pip install azure-ai-ml azure-identity
Aby zaktualizować istniejącą instalację zestawu SDK do najnowszej wersji, użyj następującego polecenia:
Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*korzystanie z usługi . Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
(Opcjonalnie) Aby wdrożyć lokalnie, należy zainstalować aparat platformy Docker na komputerze lokalnym. Zdecydowanie zalecamy tę opcję, więc łatwiej jest debugować problemy.
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 Learning.
Obszar roboczy usługi Azure Machine Learning i wystąpienie obliczeniowe. Jeśli nie masz tych zasobów i chcesz je utworzyć, wykonaj kroki opisane w artykule Szybki start: tworzenie zasobów obszaru roboczego.
Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*korzystanie z usługi . Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
Uwaga
Rozszerzenie interfejsu wiersza polecenia platformy Azure i interfejsu wiersza polecenia do uczenia maszynowego są używane w tych krokach, ale nie są one głównym celem. Są one używane bardziej jako narzędzia, przekazując szablony na platformę Azure i sprawdzając stan wdrożeń szablonów.
Przed wykonaniem kroków opisanych w tym artykule upewnij się, że masz następujące wymagania wstępne:
W przykładach interfejsu wiersza polecenia w tym artykule założono, że używasz powłoki Bash (lub zgodnej). Na przykład z systemu Linux lub Podsystem Windows dla systemu Linux.
Kontrola dostępu na podstawie ról platformy Azure (Azure RBAC): jest używana do udzielania dostępu do operacji w usłudze Azure Machine Learning. Aby wykonać kroki opisane w tym artykule, konto użytkownika musi mieć przypisaną rolę właściciela lub współautora dla obszaru roboczego usługi Azure Machine Learning lub rolę niestandardową zezwalającą na Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*korzystanie z usługi . Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
Upewnij się, że masz wystarczający przydział maszyny wirtualnej przydzielony do wdrożenia. Usługa Azure Machine Learning rezerwuje 20% zasobów obliczeniowych na potrzeby przeprowadzania uaktualnień na niektórych jednostkach SKU maszyn wirtualnych. Jeśli na przykład zażądasz 10 wystąpień we wdrożeniu, musisz mieć limit przydziału 12 dla każdej liczby rdzeni dla jednostki SKU maszyny wirtualnej. Nie można uwzględnić dodatkowych zasobów obliczeniowych w wyniku błędu. Istnieje kilka jednostek SKU maszyn wirtualnych, które są wykluczone z dodatkowej rezerwacji przydziału. Aby uzyskać więcej informacji na temat alokacji przydziału, zobacz Alokacja przydziału maszyn wirtualnych dla wdrożenia.
Alternatywnie możesz użyć limitu przydziału z udostępnionej puli przydziałów usługi Azure Machine Learning przez ograniczony czas. Usługa Azure Machine Learning udostępnia udostępnioną pulę przydziałów, z której użytkownicy w różnych regionach mogą uzyskiwać dostęp do limitu przydziału w celu przeprowadzania testów przez ograniczony czas, w zależności od dostępności.
Gdy używasz programu Studio do wdrażania modeli Llama-2, Phi, Nemotron, Mistral, Dolly i Deci-DeciLM z katalogu modeli do zarządzanego punktu końcowego online, usługa Azure Machine Learning umożliwia dostęp do udostępnionej puli przydziałów przez krótki czas, aby można było przeprowadzić testowanie. Aby uzyskać więcej informacji na temat udostępnionej puli przydziałów, zobacz Przydział udostępniony usługi Azure Machine Learning.
Jeśli nie ustawiono jeszcze ustawień domyślnych dla interfejsu wiersza polecenia platformy Azure, zapisz ustawienia domyślne. Aby uniknąć wielokrotnego przekazywania wartości dla subskrypcji, obszaru roboczego i grupy zasobów, uruchom następujący kod:
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Klonowanie repozytorium przykładów
Aby skorzystać z tego artykułu, najpierw sklonuj repozytorium przykładów (azureml-examples). Następnie uruchom następujący kod, aby przejść do katalogu repozytorium cli/ :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Napiwek
Użyj --depth 1 polecenia , aby sklonować tylko najnowsze zatwierdzenie do repozytorium, co skraca czas na ukończenie operacji.
Polecenia w tym samouczku znajdują się w plikach deploy-local-endpoint.sh i deploy-managed-online-endpoint.sh katalogu, a pliki konfiguracji YAML znajdują się w podkatalogu cliendpoints/online/managed/sample/ .
Uwaga
Pliki konfiguracji YAML dla punktów końcowych online platformy Kubernetes znajdują się w podkatalogu endpoints/online/kubernetes/ .
Klonowanie repozytorium przykładów
Aby uruchomić przykłady trenowania, najpierw sklonuj repozytorium przykładów (azureml-examples) i przejdź do azureml-examples/sdk/python/endpoints/online/managed katalogu:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Napiwek
Użyj --depth 1 polecenia , aby sklonować tylko najnowsze zatwierdzenie do repozytorium, co skraca czas na ukończenie operacji.
Informacje przedstawione w tym artykule są oparte na notesie online-endpoints-simple-deployment.ipynb . Zawiera on tę samą zawartość co ten artykuł, chociaż kolejność kodów jest nieco inna.
Nawiązywanie połączenia z obszarem roboczym usługi Azure Machine Learning
Obszar roboczy to zasób najwyższego poziomu dla usługi Azure Machine Learning, który zapewnia scentralizowane miejsce do pracy ze wszystkimi artefaktami tworzonymi podczas korzystania z usługi Azure Machine Learning. W tej sekcji połączysz się z obszarem roboczym, w którym będziesz wykonywać zadania wdrażania. Aby kontynuować, otwórz online-endpoints-simple-deployment.ipynb notes.
Zaimportuj wymagane biblioteki:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Uwaga
Jeśli używasz punktu końcowego online platformy Kubernetes, zaimportuj azure.ai.ml.entities klasę KubernetesOnlineEndpoint i KubernetesOnlineDeployment z biblioteki.
Konfigurowanie szczegółów obszaru roboczego i uzyskiwanie dojścia do obszaru roboczego:
Aby nawiązać połączenie z obszarem roboczym, potrzebujesz parametrów identyfikatora — subskrypcji, grupy zasobów i nazwy obszaru roboczego. Te szczegóły są używane w sekcji MLClient z azure.ai.ml , aby uzyskać dojście do wymaganego obszaru roboczego usługi Azure Machine Learning. W tym przykładzie użyto domyślnego uwierzytelniania platformy Azure.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Jeśli na komputerze lokalnym zainstalowano usługę Git, możesz wykonać instrukcje klonowania repozytorium przykładów. W przeciwnym razie postępuj zgodnie z instrukcjami, aby pobrać pliki z repozytorium przykładów.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Napiwek
Użyj --depth 1 polecenia , aby sklonować tylko najnowsze zatwierdzenie do repozytorium, co skraca czas na ukończenie operacji.
Pobieranie plików z repozytorium przykładów
Jeśli sklonujesz repozytorium przykładów, maszyna lokalna ma już kopie plików w tym przykładzie i możesz przejść do następnej sekcji. Jeśli nie sklonujesz repozytorium, możesz pobrać je na komputer lokalny.
Przejdź do <> przycisku Kod na stronie, a następnie wybierz pozycję Pobierz plik ZIP z karty Lokalne .
Znajdź folder /cli/endpoints/online/model-1/model i plik /cli/endpoints/online/model-1/onlinescoring/score.py.
Ustawianie zmiennych środowiskowych
Ustaw następujące zmienne środowiskowe, ponieważ są one używane w przykładach w tym artykule. Zastąp wartości identyfikatorem subskrypcji platformy Azure, regionem świadczenia usługi Azure, w którym znajduje się obszar roboczy, grupą zasobów zawierającą obszar roboczy i nazwą obszaru roboczego:
export SUBSCRIPTION_ID="your Azure subscription ID"
export LOCATION="Azure region where your workspace is located"
export RESOURCE_GROUP="Azure resource group that contains your workspace"
export WORKSPACE="Azure Machine Learning workspace name"
Kilka przykładów szablonów wymaga przekazania plików do magazynu obiektów blob platformy Azure dla obszaru roboczego. W poniższych krokach wykonasz zapytanie dotyczące obszaru roboczego i zapisz te informacje w zmiennych środowiskowych używanych w przykładach:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Napiwek
Użyj --depth 1 polecenia , aby sklonować tylko najnowsze zatwierdzenie do repozytorium, co skraca czas na ukończenie operacji.
Definiowanie punktu końcowego
Aby zdefiniować punkt końcowy online, określ nazwę punktu końcowego i tryb uwierzytelniania. Aby uzyskać więcej informacji na temat zarządzanych punktów końcowych online, zobacz Punkty końcowe online.
Aby ustawić nazwę punktu końcowego, uruchom następujące polecenie. Zastąp YOUR_ENDPOINT_NAME ciąg nazwą unikatową w regionie świadczenia usługi Azure. Aby uzyskać więcej informacji na temat reguł nazewnictwa, zobacz Limity punktów końcowych.
W przypadku systemu Linux uruchom następujące polecenie:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Konfigurowanie punktu końcowego
Poniższy fragment kodu przedstawia plik endpoints/online/managed/sample/endpoint.yml :
Dokumentacja formatu YAML punktu końcowego została opisana w poniższej tabeli. Aby dowiedzieć się, jak określić te atrybuty, zobacz dokumentację YAML punktu końcowego online. Aby uzyskać informacje o limitach związanych z zarządzanymi punktami końcowymi, zobacz limity dla punktów końcowych online.
Key
opis
$schema
(Opcjonalnie) Schemat YAML. Aby wyświetlić wszystkie dostępne opcje w pliku YAML, możesz wyświetlić schemat w poprzednim fragmencie kodu w przeglądarce.
name
Nazwa punktu końcowego.
auth_mode
Służy key do uwierzytelniania opartego na kluczach. Służy aml_token do uwierzytelniania opartego na tokenach usługi Azure Machine Learning. Służy aad_token do uwierzytelniania opartego na tokenach firmy Microsoft (wersja zapoznawcza). Aby uzyskać więcej informacji na temat uwierzytelniania, zobacz Uwierzytelnianie klientów dla punktów końcowych online.
Konfigurowanie punktu końcowego
Najpierw zdefiniuj nazwę punktu końcowego online, a następnie skonfiguruj punkt końcowy.
Nazwa punktu końcowego musi być unikatowa w regionie świadczenia usługi Azure. Aby uzyskać więcej informacji na temat reguł nazewnictwa, zobacz Limity punktów końcowych.
# Define an endpoint name
endpoint_name = "my-endpoint"
# Example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Poprzedni kod używa key do uwierzytelniania opartego na kluczach. Aby użyć uwierzytelniania opartego na tokenach usługi Azure Machine Learning, użyj polecenia aml_token. Aby użyć uwierzytelniania opartego na tokenach firmy Microsoft (wersja zapoznawcza), użyj polecenia aad_token. Aby uzyskać więcej informacji na temat uwierzytelniania, zobacz Uwierzytelnianie klientów dla punktów końcowych online.
Konfigurowanie punktu końcowego
Podczas wdrażania na platformie Azure z poziomu programu Studio utworzysz punkt końcowy i wdrożenie, które ma zostać dodane. W tym czasie zostanie wyświetlony monit o podanie nazw punktu końcowego i wdrożenia.
Ustawianie nazwy punktu końcowego
Aby ustawić nazwę punktu końcowego, uruchom następujące polecenie. Zastąp YOUR_ENDPOINT_NAME ciąg nazwą unikatową w regionie świadczenia usługi Azure. Aby uzyskać więcej informacji na temat reguł nazewnictwa, zobacz Limity punktów końcowych.
W przypadku systemu Linux uruchom następujące polecenie:
Wdrożenie to zestaw zasobów wymaganych do hostowania modelu, który wykonuje rzeczywiste wnioskowanie. W tym przykładzie wdrożysz model scikit-learn, który wykonuje regresję i używa skryptu oceniania score.py do wykonania modelu na danym żądaniu wejściowym.
Aby dowiedzieć się więcej o kluczowych atrybutach wdrożenia, zobacz Wdrożenia online.
Konfigurowanie wdrożenia
Konfiguracja wdrożenia używa lokalizacji modelu, który chcesz wdrożyć.
Poniższy fragment kodu przedstawia pliki endpoints/online/managed/sample/blue-deployment.yml z wszystkimi wymaganymi danymi wejściowymi w celu skonfigurowania wdrożenia:
Plik blue-deployment.yml określa następujące atrybuty wdrożenia:
model - określa właściwości modelu w tekście przy użyciu path (gdzie przekazywać pliki z). Interfejs wiersza polecenia automatycznie przekazuje pliki modelu i rejestruje model przy użyciu automatycznie wygenerowanej nazwy.
environment — przy użyciu wbudowanych definicji, które obejmują miejsce przekazywania plików, interfejs wiersza polecenia automatycznie przekazuje conda.yaml plik i rejestruje środowisko. Później w celu skompilowania środowiska wdrożenie używa image elementu (w tym przykładzie jest to mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) dla obrazu podstawowego, a conda_file zależności są instalowane na podstawie obrazu podstawowego.
code_configuration — podczas wdrażania pliki lokalne, takie jak źródło języka Python dla modelu oceniania, są przekazywane ze środowiska deweloperskiego.
Aby uzyskać więcej informacji na temat schematu YAML, zobacz dokumentację YAML punktu końcowego online.
Uwaga
Aby użyć punktów końcowych platformy Kubernetes zamiast zarządzanych punktów końcowych online jako celu obliczeniowego:
Utwórz i dołącz klaster Kubernetes jako docelowy obiekt obliczeniowy do obszaru roboczego usługi Azure Machine Learning przy użyciu usługi Azure Machine Learning Studio.
Użyj kodu YAML punktu końcowego, aby zastosować rozwiązanie Kubernetes zamiast zarządzanego punktu końcowego YAML. Musisz edytować plik YAML, aby zmienić wartość compute na nazwę zarejestrowanego docelowego obiektu obliczeniowego. Możesz użyć tego pliku deployment.yaml , który ma dodatkowe właściwości dotyczące wdrożenia platformy Kubernetes.
Wszystkie polecenia używane w tym artykule dla zarządzanych punktów końcowych online dotyczą również punktów końcowych platformy Kubernetes, z wyjątkiem następujących możliwości, które nie mają zastosowania do punktów końcowych platformy Kubernetes:
Model - określa właściwości modelu w tekście przy użyciu path (gdzie przekazywać pliki z). Zestaw SDK automatycznie przekazuje pliki modelu i rejestruje model przy użyciu automatycznie wygenerowanej nazwy.
Environment — przy użyciu wbudowanych definicji, które obejmują miejsce przekazywania plików, zestaw SDK automatycznie przekazuje conda.yaml plik i rejestruje środowisko. Później w celu skompilowania środowiska wdrożenie używa image elementu (w tym przykładzie jest to mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) dla obrazu podstawowego, a conda_file zależności są instalowane na podstawie obrazu podstawowego.
CodeConfiguration — podczas wdrażania pliki lokalne, takie jak źródło języka Python dla modelu oceniania, są przekazywane ze środowiska deweloperskiego.
Podczas wdrażania na platformie Azure utworzysz punkt końcowy i wdrożenie, które ma zostać dodane. W tym czasie zostanie wyświetlony monit o podanie nazw punktu końcowego i wdrożenia.
Format skryptu oceniania dla punktów końcowych online jest taki sam, jak w poprzedniej wersji interfejsu wiersza polecenia i w zestawie SDK języka Python.
Skrypt oceniania określony w pliku code_configuration.scoring_script musi mieć init() funkcję i run() funkcję.
Skrypt oceniania musi mieć init() funkcję i run() funkcję.
Skrypt oceniania musi mieć init() funkcję i run() funkcję.
Skrypt oceniania musi mieć init() funkcję i run() funkcję. W tym artykule jest używany plik score.py.
W przypadku korzystania z szablonu do wdrożenia należy najpierw przekazać pliki oceniania do magazynu obiektów blob platformy Azure, a następnie zarejestrować go:
Poniższy kod używa polecenia interfejsu wiersza polecenia az storage blob upload-batch platformy Azure do przekazania plików oceniania:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
Poniższy kod rejestruje kod przy użyciu szablonu:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
Funkcja jest wywoływana init() po zainicjowaniu lub uruchomieniu kontenera. Inicjowanie zwykle występuje wkrótce po utworzeniu lub zaktualizowaniu wdrożenia. Funkcja init jest miejscem do zapisu logiki dla globalnych operacji inicjowania, takich jak buforowanie modelu w pamięci (jak pokazano w tym pliku score.py ).
Funkcja run() jest wywoływana za każdym razem, gdy punkt końcowy jest wywoływany, i wykonuje rzeczywiste ocenianie i przewidywanie. W tym pliku run() score.py funkcja wyodrębnia dane z danych wejściowych JSON, wywołuje metodę modelu predict() scikit-learn, a następnie zwraca wynik przewidywania.
Wdrażanie i debugowanie lokalnie przy użyciu lokalnego punktu końcowego
Zdecydowanie zalecamy przetestowanie punktu końcowego lokalnie w celu zweryfikowania i debugowania kodu i konfiguracji przed wdrożeniem na platformie Azure. Interfejs wiersza polecenia platformy Azure i zestaw SDK języka Python obsługują lokalne punkty końcowe i wdrożenia, podczas gdy usługa Azure Machine Learning Studio i szablon usługi ARM nie są obsługiwane.
Aby można było wdrażać lokalnie, aparat platformy Docker musi być zainstalowany i uruchomiony. Aparat platformy Docker zwykle uruchamia się po uruchomieniu komputera. Jeśli tak nie jest, możesz rozwiązać problemy z aparatem platformy Docker.
Napiwek
Aby debugować skrypt oceniania lokalnie bez aparatu platformy Docker, możesz użyć pakietu HTTP serwera HTTP wnioskowania usługi Azure Machine Learning. Debugowanie za pomocą serwera wnioskowania ułatwia debugowanie skryptu oceniania przed wdrożeniem w lokalnych punktach końcowych, dzięki czemu można debugować bez wpływu na konfiguracje kontenera wdrożenia.
Aby uzyskać więcej informacji na temat lokalnego debugowania punktów końcowych online przed wdrożeniem na platformie Azure, zobacz Debugowanie punktów końcowych online.
Lokalne wdrażanie modelu
Najpierw utwórz punkt końcowy. Opcjonalnie w przypadku lokalnego punktu końcowego możesz pominąć ten krok i bezpośrednio utworzyć wdrożenie (następny krok), co z kolei spowoduje utworzenie wymaganych metadanych. Lokalne wdrażanie modeli jest przydatne do celów programistycznych i testowych.
Studio nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Szablon nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Teraz utwórz wdrożenie o nazwie blue w punkcie końcowym.
Flaga local=True kieruje zestaw SDK do wdrożenia punktu końcowego w środowisku platformy Docker.
Studio nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Szablon nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Studio nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Szablon nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Poniższa tabela zawiera możliwe wartości dla elementu provisioning_state:
Wartość
Opis
Tworzenie
Zasób jest tworzony.
Aktualizacji
Zasób jest aktualizowany.
Usuwanie
Zasób jest usuwany.
Powodzenie
Operacja tworzenia/aktualizacji powiodła się.
Nie działa
Operacja tworzenia/aktualizowania/usuwania nie powiodła się.
Wywoływanie lokalnego punktu końcowego w celu oceny danych przy użyciu modelu
Wywołaj punkt końcowy, aby ocenić model przy użyciu invoke polecenia i przekazać parametry zapytania przechowywane w pliku JSON:
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Jeśli chcesz użyć klienta REST (na przykład curl), musisz mieć identyfikator URI oceniania. Aby uzyskać identyfikator URI oceniania, uruchom polecenie az ml online-endpoint show --local -n $ENDPOINT_NAME. W zwracanych danych znajdź scoring_uri atrybut .
Wywołaj punkt końcowy, aby ocenić model przy użyciu invoke polecenia i przekazać parametry zapytania przechowywane w pliku JSON.
Jeśli chcesz użyć klienta REST (na przykład curl), musisz mieć identyfikator URI oceniania. Aby uzyskać identyfikator URI oceniania, uruchom następujący kod. W zwracanych danych znajdź scoring_uri atrybut .
Studio nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Szablon nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Przejrzyj dzienniki pod kątem danych wyjściowych operacji invoke
W przykładowym pliku run() score.py metoda rejestruje dane wyjściowe w konsoli programu .
Studio nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Szablon nie obsługuje lokalnych punktów końcowych. Zobacz karty interfejsu wiersza polecenia platformy Azure lub języka Python, aby uzyskać instrukcje testowania punktu końcowego lokalnie.
Wdrażanie punktu końcowego online na platformie Azure
Następnie wdróż punkt końcowy online na platformie Azure. Najlepszym rozwiązaniem w środowisku produkcyjnym jest zarejestrowanie modelu i środowiska, które będzie używane we wdrożeniu.
Rejestrowanie modelu i środowiska
Zalecamy zarejestrowanie modelu i środowiska przed wdrożeniem na platformie Azure, aby można było określić ich zarejestrowane nazwy i wersje podczas wdrażania. Zarejestrowanie zasobów umożliwia ich ponowne użycie bez konieczności ich przekazywania za każdym razem, gdy tworzysz wdrożenia, co zwiększa powtarzalność i możliwość śledzenia.
Uwaga
W przeciwieństwie do wdrożenia na platformie Azure wdrożenie lokalne nie obsługuje używania zarejestrowanych modeli i środowisk. Zamiast tego wdrożenie lokalne używa plików modelu lokalnego i używa środowisk tylko z plikami lokalnymi.
W przypadku wdrożenia na platformie Azure można użyć zasobów lokalnych lub zarejestrowanych (modeli i środowisk). W tej sekcji artykułu wdrożenie na platformie Azure używa zarejestrowanych zasobów, ale zamiast tego masz możliwość korzystania z zasobów lokalnych. Aby zapoznać się z przykładem konfiguracji wdrożenia, która przekazuje pliki lokalne do użycia na potrzeby wdrożenia lokalnego, zobacz Konfigurowanie wdrożenia.
Aby zarejestrować model i środowisko, użyj formularza model: azureml:my-model:1 lub environment: azureml:my-env:1.
W celu rejestracji można wyodrębnić definicje YAML plików model YAML i environment do oddzielnych plików YAML oraz użyć poleceń az ml model create i az ml environment create. Aby dowiedzieć się więcej o tych poleceniach, uruchom az ml model create -h polecenie i az ml environment create -h.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Zarejestruj środowisko:
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Rejestracja modelu to jednostka logiczna w obszarze roboczym, która może zawierać jeden plik modelu lub katalog wielu plików. Najlepszym rozwiązaniem dla środowiska produkcyjnego jest zarejestrowanie modelu i środowiska. Przed utworzeniem punktu końcowego i wdrożenia w tym artykule należy zarejestrować folder modelu zawierający model.
Aby zarejestrować przykładowy model, wykonaj następujące kroki:
Na lewym pasku nawigacyjnym wybierz stronę Modele .
Wybierz pozycję Zarejestruj, a następnie wybierz pozycję Z plików lokalnych.
Wybierz nieokreślony typ dla typu modelu.
Wybierz pozycję Przeglądaj, a następnie wybierz pozycję Przeglądaj folder.
\azureml-examples\cli\endpoints\online\model-1\model Wybierz folder z lokalnej kopii sklonowanego lub pobranego wcześniej repozytorium. Po wyświetleniu monitu wybierz pozycję Przekaż i poczekaj na zakończenie przekazywania.
Po zakończeniu przekazywania folderu wybierz pozycję Dalej .
Wprowadź przyjazną nazwę modelu. W krokach w tym artykule założono, że model nosi nazwę model-1.
Wybierz przycisk Dalej, a następnie zarejestruj się, aby ukończyć rejestrację.
Na lewym pasku nawigacyjnym wybierz stronę Środowiska .
Wybierz pozycję Utwórz.
Na stronie "Ustawienia" podaj nazwę, taką jak my-env środowisko.
W polu "Wybierz źródło środowiska" wybierz pozycję Użyj istniejącego obrazu platformy Docker z opcjonalnym źródłem conda.
Wybierz przycisk Dalej , aby przejść do strony "Dostosuj".
Skopiuj zawartość \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml pliku z lokalnej kopii sklonowanego lub pobranego wcześniej repozytorium.
Wklej zawartość do pola tekstowego.
Wybierz przycisk Dalej , dopóki nie zostanie wyświetlona strona "Przegląd".
Wybierz pozycję Utwórz.
Aby uzyskać więcej informacji na temat tworzenia środowiska w programie Studio, zobacz Tworzenie środowiska.
Aby zarejestrować model przy użyciu szablonu, musisz najpierw przekazać plik modelu do magazynu obiektów blob platformy Azure. W poniższym przykładzie użyto az storage blob upload-batch polecenia , aby przekazać plik do domyślnego magazynu dla obszaru roboczego:
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
Po przekazaniu pliku użyj szablonu, aby utworzyć rejestrację modelu. W poniższym przykładzie modelUri parametr zawiera ścieżkę do modelu:
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Częścią środowiska jest plik conda, który określa zależności modelu potrzebne do hostowania modelu. W poniższym przykładzie pokazano, jak odczytać zawartość pliku conda do zmiennych środowiskowych:
W poniższym przykładzie pokazano, jak używać szablonu do rejestrowania środowiska. Zawartość pliku conda z poprzedniego kroku jest przekazywana do szablonu przy użyciu parametru condaFile :
Użyj zarejestrowanych zasobów (modelu i środowiska) w definicji wdrożenia. Poniższy fragment kodu przedstawia endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml plik z wszystkimi wymaganymi danymi wejściowymi do skonfigurowania wdrożenia:
Podczas wdrażania z poziomu programu Studio utworzysz punkt końcowy i wdrożenie, które zostanie do niego dodane. W tym czasie zostanie wyświetlony monit o podanie nazw punktu końcowego i wdrożenia.
Można określić typy i obrazy wystąpienia procesora CPU lub procesora GPU w definicji wdrożenia zarówno dla lokalnego wdrożenia, jak i wdrożenia na platformie Azure.
Definicja wdrożenia w pliku blue-deployment-with-registered-assets.yml używa wystąpienia typu Standard_DS3_v2 ogólnego przeznaczenia i obrazu mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestplatformy Docker spoza procesora GPU. W przypadku obliczeń procesora GPU wybierz jednostkę SKU typu obliczeniowego procesora GPU i obraz platformy Docker procesora GPU.
Aby uzyskać informacje o obsługiwanych typach wystąpień ogólnego przeznaczenia i procesora GPU, zobacz Zarządzane punkty końcowe online obsługiwane jednostki SKU maszyn wirtualnych. Aby uzyskać listę obrazów podstawowych procesora CPU i procesora GPU usługi Azure Machine Learning, zobacz Obrazy podstawowe usługi Azure Machine Learning.
Uwaga
Aby użyć platformy Kubernetes, zamiast zarządzanych punktów końcowych, jako celu obliczeniowego, zobacz Wprowadzenie do docelowego środowiska obliczeniowego Kubernetes.
Typy i obrazy wystąpień procesora CPU lub procesora GPU można określić w konfiguracji wdrożenia zarówno dla lokalnego wdrożenia, jak i wdrożenia na platformie Azure.
Wcześniej skonfigurowano wdrożenie, które używało wystąpienia typu Standard_DS3_v2 ogólnego przeznaczenia i obrazu mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestplatformy Docker spoza procesora GPU. W przypadku obliczeń procesora GPU wybierz jednostkę SKU typu obliczeniowego procesora GPU i obraz platformy Docker procesora GPU.
Aby uzyskać informacje o obsługiwanych typach wystąpień ogólnego przeznaczenia i procesora GPU, zobacz Zarządzane punkty końcowe online obsługiwane jednostki SKU maszyn wirtualnych. Aby uzyskać listę obrazów podstawowych procesora CPU i procesora GPU usługi Azure Machine Learning, zobacz Obrazy podstawowe usługi Azure Machine Learning.
Uwaga
Aby użyć platformy Kubernetes, zamiast zarządzanych punktów końcowych, jako celu obliczeniowego, zobacz Wprowadzenie do docelowego środowiska obliczeniowego Kubernetes.
W przypadku wdrażania programu Studio na platformie Azure zostanie wyświetlony monit o określenie właściwości obliczeniowych (typ wystąpienia i liczba wystąpień) oraz środowisko do użycia na potrzeby wdrożenia.
Poprzednia rejestracja środowiska określa obraz mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 platformy Docker spoza procesora GPU, przekazując wartość do environment-version.json szablonu przy użyciu parametru dockerImage . W przypadku obliczeń procesora GPU podaj wartość obrazu platformy Docker procesora GPU do szablonu (przy użyciu dockerImage parametru) i podaj jednostkę SKU typu obliczeniowego procesora GPU do online-endpoint-deployment.json szablonu (przy użyciu parametru skuName ).
Aby uzyskać informacje o obsługiwanych typach wystąpień ogólnego przeznaczenia i procesora GPU, zobacz Zarządzane punkty końcowe online obsługiwane jednostki SKU maszyn wirtualnych. Aby uzyskać listę obrazów podstawowych procesora CPU i procesora GPU usługi Azure Machine Learning, zobacz Obrazy podstawowe usługi Azure Machine Learning.
Następnie wdróż punkt końcowy online na platformie Azure.
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Utwórz wdrożenie o nazwie blue w punkcie końcowym.
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
Tworzenie wdrożenia może potrwać do 15 minut, w zależności od tego, czy bazowe środowisko lub obraz jest kompilowany po raz pierwszy. Kolejne wdrożenia korzystające z tego samego środowiska są przetwarzane szybciej.
Napiwek
Jeśli nie chcesz blokować konsoli interfejsu wiersza polecenia, możesz dodać flagę --no-wait do polecenia . Jednak ta opcja spowoduje zatrzymanie interaktywnego wyświetlania stanu wdrożenia.
Ważne
Flaga --all-traffic w kodzie az ml online-deployment create użytym do utworzenia wdrożenia przydziela 100% ruchu punktu końcowego do nowo utworzonego niebieskiego wdrożenia. Chociaż jest to przydatne w celach programistycznych i testowych, w środowisku produkcyjnym możesz chcieć kierować ruch do nowego wdrożenia za pomocą jawnego polecenia. Na przykład az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".
Utwórz punkt końcowy:
Korzystając ze zdefiniowanych endpoint wcześniej i MLClient utworzonych wcześniej, możesz teraz utworzyć punkt końcowy w obszarze roboczym. To polecenie uruchamia tworzenie punktu końcowego i zwraca odpowiedź potwierdzenia, gdy tworzenie punktu końcowego będzie kontynuowane.
Korzystając z zdefiniowanego blue_deployment_with_registered_assets wcześniej elementu i utworzonego MLClient wcześniej, możesz teraz utworzyć wdrożenie w obszarze roboczym. To polecenie uruchamia tworzenie wdrożenia i zwraca odpowiedź potwierdzenia, gdy tworzenie wdrożenia będzie kontynuowane.
Jeśli nie chcesz blokować konsoli języka Python, możesz dodać flagę no_wait=True do parametrów. Jednak ta opcja spowoduje zatrzymanie interaktywnego wyświetlania stanu wdrożenia.
Tworzenie zarządzanego punktu końcowego i wdrożenia w trybie online
Użyj programu Studio, aby utworzyć zarządzany punkt końcowy online bezpośrednio w przeglądarce. Podczas tworzenia zarządzanego punktu końcowego online w programie Studio należy zdefiniować początkowe wdrożenie. Nie można utworzyć pustego zarządzanego punktu końcowego online.
Jednym ze sposobów utworzenia zarządzanego punktu końcowego online w programie Studio jest strona Modele . Ta metoda umożliwia również łatwe dodawanie modelu do istniejącego zarządzanego wdrożenia online. Aby wdrożyć model o nazwie model-1 zarejestrowanej wcześniej w sekcji Rejestrowanie modelu i środowiska :
Na lewym pasku nawigacyjnym wybierz stronę Modele .
Wybierz model o nazwie model-1 , sprawdzając okrąg obok jego nazwy.
Wybierz pozycję Wdróż>punkt końcowy w czasie rzeczywistym.
Ta akcja powoduje otwarcie okna, w którym można określić szczegóły dotyczące punktu końcowego.
Wprowadź unikatową nazwę punktu końcowego w regionie świadczenia usługi Azure. Aby uzyskać więcej informacji na temat reguł nazewnictwa, zobacz Limity punktów końcowych.
Zachowaj wybór domyślny: Zarządzany dla typu obliczeniowego.
Zachowaj wybór domyślny: uwierzytelnianie oparte na kluczach dla typu uwierzytelniania. Aby uzyskać więcej informacji na temat uwierzytelniania, zobacz Uwierzytelnianie klientów dla punktów końcowych online.
Wybierz pozycję Dalej, dopóki nie zostanie wyświetlona strona "Wdrożenie". W tym miejscu przełącz diagnostykę usługi Application Insights na wartość Włączone, aby umożliwić wyświetlanie grafów działań punktu końcowego w studio później i analizowanie metryk i dzienników przy użyciu usługi Application Insights.
Wybierz przycisk Dalej , aby przejść do strony "Kod i środowisko". W tym miejscu wybierz następujące opcje:
Wybierz skrypt oceniania na potrzeby wnioskowania: Przeglądaj i wybierz \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py plik z sklonowanego lub pobranego wcześniej repozytorium.
Wybierz sekcję środowiska: wybierz pozycję Środowiska niestandardowe, a następnie wybierz utworzone wcześniej środowisko my-env:1.
Wybierz pozycję Dalej, akceptując wartości domyślne, dopóki nie zostanie wyświetlony monit o utworzenie wdrożenia.
Przejrzyj ustawienia wdrożenia i wybierz przycisk Utwórz .
Alternatywnie możesz utworzyć zarządzany punkt końcowy online na stronie Punkty końcowe w programie Studio.
Na lewym pasku nawigacyjnym wybierz stronę Punkty końcowe .
Wybierz + Utwórz.
Ta akcja spowoduje otwarcie okna umożliwiającego wybranie modelu i określenie szczegółów dotyczących punktu końcowego i wdrożenia. Wprowadź ustawienia punktu końcowego i wdrożenia zgodnie z wcześniejszym opisem, a następnie utwórz wdrożenie.
Wyświetl listę wszystkich punktów końcowych w obszarze roboczym w formacie tabeli przy użyciu list metody :
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
Metoda zwraca listę (iterator) ManagedOnlineEndpoint jednostek.
Aby uzyskać więcej informacji, określ więcej parametrów. Na przykład wyświetl listę punktów końcowych, takich jak tabela:
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Wyświetlanie zarządzanych punktów końcowych online
Wszystkie zarządzane punkty końcowe online można wyświetlić na stronie Punkty końcowe . Przejdź do strony Szczegóły punktu końcowego, aby znaleźć krytyczne informacje, w tym identyfikator URI punktu końcowego, stan, narzędzia do testowania, monitory aktywności, dzienniki wdrożenia i przykładowy kod użycia:
Na lewym pasku nawigacyjnym wybierz pozycję Punkty końcowe. W tym miejscu można wyświetlić listę wszystkich punktów końcowych w obszarze roboczym.
(Opcjonalnie) Utwórz filtr w typie obliczeniowym, aby wyświetlić tylko zarządzane typy obliczeniowe.
Wybierz nazwę punktu końcowego, aby wyświetlić stronę Szczegóły punktu końcowego.
Napiwek
Szablony są przydatne do wdrażania zasobów, ale nie mogą być używane do wyświetlania, wyświetlania ani wywoływania zasobów. Aby wykonać te operacje, użyj interfejsu wiersza polecenia platformy Azure, zestawu PYTHON SDK lub programu Studio. Poniższy kod używa interfejsu wiersza polecenia platformy Azure.
show Użyj polecenia , aby wyświetlić informacje w provisioning_state obszarze dla punktu końcowego i wdrożenia:
az ml online-endpoint show -n $ENDPOINT_NAME
Wyświetl listę wszystkich punktów końcowych w obszarze roboczym w formacie tabeli przy użyciu list polecenia :
az ml online-endpoint list --output table
Sprawdzanie stanu wdrożenia online
Sprawdź dzienniki, aby sprawdzić, czy model został wdrożony bez błędu.
Aby wyświetlić dane wyjściowe dziennika z kontenera, użyj następującego polecenia interfejsu wiersza polecenia:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Domyślnie dzienniki są pobierane z kontenera serwera wnioskowania. Aby wyświetlić dzienniki z kontenera inicjatora magazynu, dodaj flagę --container storage-initializer . Aby uzyskać więcej informacji na temat dzienników wdrażania, zobacz Pobieranie dzienników kontenera.
Dane wyjściowe dziennika można wyświetlić przy użyciu get_logs metody :
Domyślnie dzienniki są pobierane z kontenera serwera wnioskowania. Aby wyświetlić dzienniki z kontenera inicjatora magazynu, dodaj container_type="storage-initializer" opcję . Aby uzyskać więcej informacji na temat dzienników wdrażania, zobacz Pobieranie dzienników kontenera.
Aby wyświetlić dane wyjściowe dziennika, wybierz kartę Dzienniki na stronie punktu końcowego. Jeśli masz wiele wdrożeń w punkcie końcowym, użyj listy rozwijanej, aby wybrać wdrożenie, którego dziennik chcesz wyświetlić.
Domyślnie dzienniki są pobierane z serwera wnioskowania. Aby wyświetlić dzienniki z kontenera inicjatora magazynu, użyj interfejsu wiersza polecenia platformy Azure lub zestawu SDK języka Python (zobacz każdą kartę, aby uzyskać szczegółowe informacje). Dzienniki z kontenera inicjatora magazynu zawierają informacje o tym, czy kod i dane modelu zostały pomyślnie pobrane do kontenera. Aby uzyskać więcej informacji na temat dzienników wdrażania, zobacz Pobieranie dzienników kontenera.
Napiwek
Szablony są przydatne do wdrażania zasobów, ale nie mogą być używane do wyświetlania, wyświetlania ani wywoływania zasobów. Aby wykonać te operacje, użyj interfejsu wiersza polecenia platformy Azure, zestawu PYTHON SDK lub programu Studio. Poniższy kod używa interfejsu wiersza polecenia platformy Azure.
Aby wyświetlić dane wyjściowe dziennika z kontenera, użyj następującego polecenia interfejsu wiersza polecenia:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Domyślnie dzienniki są pobierane z kontenera serwera wnioskowania. Aby wyświetlić dzienniki z kontenera inicjatora magazynu, dodaj flagę --container storage-initializer . Aby uzyskać więcej informacji na temat dzienników wdrażania, zobacz Pobieranie dzienników kontenera.
Wywoływanie punktu końcowego w celu oceny danych przy użyciu modelu
invoke Użyj wybranego polecenia lub klienta REST, aby wywołać punkt końcowy i ocenić niektóre dane:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Pobierz klucz używany do uwierzytelniania w punkcie końcowym:
Napiwek
Możesz kontrolować, które podmioty zabezpieczeń firmy Microsoft mogą uzyskać klucz uwierzytelniania, przypisując je do roli niestandardowej, która zezwala na Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action usługę i Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Aby uzyskać więcej informacji na temat zarządzania autoryzacją w obszarach roboczych, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Użyj narzędzia curl, aby ocenić dane.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Zwróć uwagę, że używasz show poleceń i get-credentials , aby uzyskać poświadczenia uwierzytelniania. Zwróć również uwagę, że używasz flagi --query do filtrowania tylko wymaganych atrybutów. Aby dowiedzieć się więcej na temat flagi, zobacz Zapytanie o dane wyjściowe polecenia interfejsu --query wiersza polecenia platformy Azure.
Aby wyświetlić dzienniki wywołania, uruchom get-logs ponownie polecenie .
Korzystając z utworzonego MLClient wcześniej pliku, uzyskaj dojście do punktu końcowego. Punkt końcowy można następnie wywołać przy użyciu invoke polecenia z następującymi parametrami:
endpoint_name - Nazwa punktu końcowego
request_file - Plik z danymi żądania
deployment_name - Nazwa określonego wdrożenia do testowania w punkcie końcowym
Wyślij przykładowe żądanie przy użyciu pliku json .
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Użyj karty Test na stronie szczegółów punktu końcowego, aby przetestować zarządzane wdrożenie online. Wprowadź przykładowe dane wejściowe i wyświetl wyniki.
Wybierz kartę Test na stronie szczegółów punktu końcowego.
Użyj listy rozwijanej, aby wybrać wdrożenie, które chcesz przetestować.
Szablony są przydatne do wdrażania zasobów, ale nie mogą być używane do wyświetlania, wyświetlania ani wywoływania zasobów. Aby wykonać te operacje, użyj interfejsu wiersza polecenia platformy Azure, zestawu PYTHON SDK lub programu Studio. Poniższy kod używa interfejsu wiersza polecenia platformy Azure.
invoke Użyj wybranego polecenia lub klienta REST, aby wywołać punkt końcowy i ocenić niektóre dane:
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
Jeśli chcesz zaktualizować kod, model lub środowisko, zaktualizuj plik YAML, a następnie uruchom az ml online-endpoint update polecenie .
Uwaga
Jeśli zaktualizujesz liczbę wystąpień (w celu skalowania wdrożenia) wraz z innymi ustawieniami modelu (takimi jak kod, model lub środowisko) w jednym update poleceniu, najpierw zostanie wykonana operacja skalowania, a następnie zostaną zastosowane inne aktualizacje. Dobrym rozwiązaniem jest oddzielne wykonywanie tych operacji w środowisku produkcyjnym.
Zmień ostatni wiersz init() funkcji: po logging.info("Init complete")pliku dodaj logging.info("Updated successfully")polecenie .
Zapisz plik.
Uruchom następujące polecenie:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
Uwaga
Aktualizowanie przy użyciu języka YAML jest deklaratywne. Oznacza to, że zmiany w yaML są odzwierciedlane w podstawowych zasobach usługi Azure Resource Manager (punktach końcowych i wdrożeniach). Podejście deklaratywne ułatwia metodykę GitOps: wszystkie zmiany w punktach końcowych i wdrożeniach (nawet instance_count) przechodzą przez kod YAML.
Napiwek
Możesz użyć ogólnych parametrów aktualizacji, takich jak --set parametr, za pomocą polecenia interfejsu wiersza polecenia update , aby zastąpić atrybuty w yaML lub ustawić określone atrybuty bez przekazywania ich w pliku YAML. Używanie --set dla pojedynczych atrybutów jest szczególnie przydatne w scenariuszach programowania i testowania. Na przykład, aby skalować wartość w górę instance_count dla pierwszego wdrożenia, możesz użyć flagi --set instance_count=2 . Jednak ze względu na to, że kod YAML nie jest aktualizowany, ta technika nie ułatwia metodyki GitOps.
Określanie pliku YAML nie jest obowiązkowe. Jeśli na przykład chcesz przetestować różne ustawienie współbieżności dla danego wdrożenia, możesz wypróbować coś takiego jak az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Zachowa to całą istniejącą konfigurację, ale zaktualizuje tylko określone parametry.
Ponieważ zmodyfikowano funkcję, która jest uruchamiana po utworzeniu init() lub zaktualizowaniu punktu końcowego, komunikat Updated successfully będzie wyświetlany w dziennikach. Pobierz dzienniki, uruchamiając polecenie:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Polecenie update działa również z wdrożeniami lokalnymi. Użyj tego samego az ml online-deployment update polecenia z flagą --local .
Jeśli chcesz zaktualizować kod, model lub środowisko, zaktualizuj konfigurację, a następnie uruchom MLClientmetodę "s online_deployments.begin_create_or_update " w celu utworzenia lub zaktualizowania wdrożenia.
Uwaga
Jeśli zaktualizujesz liczbę wystąpień (w celu skalowania wdrożenia) wraz z innymi ustawieniami modelu (takimi jak kod, model lub środowisko) w jednej begin_create_or_update metodzie, operacja skalowania zostanie wykonana najpierw, a następnie zostaną zastosowane inne aktualizacje. Dobrym rozwiązaniem jest oddzielne wykonywanie tych operacji w środowisku produkcyjnym.
Ponieważ zmodyfikowano funkcję, która jest uruchamiana po utworzeniu init() lub zaktualizowaniu punktu końcowego, komunikat Updated successfully będzie wyświetlany w dziennikach. Pobierz dzienniki, uruchamiając polecenie:
Metoda begin_create_or_update współpracuje również z wdrożeniami lokalnymi. Użyj tej samej metody z flagą local=True .
Obecnie studio umożliwia wprowadzanie aktualizacji tylko do liczby wystąpień wdrożenia. Skorzystaj z poniższych instrukcji, aby skalować pojedyncze wdrożenie w górę lub w dół, dostosowując liczbę wystąpień:
Otwórz stronę Szczegóły punktu końcowego i znajdź kartę wdrożenia, które chcesz zaktualizować.
Wybierz ikonę edycji (ikonę ołówka) obok nazwy wdrożenia.
Zaktualizuj liczbę wystąpień skojarzonych z wdrożeniem. Możesz wybrać opcję Domyślne lub Docelowe wykorzystanie dla opcji "Typ skalowania wdrożenia".
W przypadku wybrania opcji Domyślna ty określisz również wartość liczbową dla liczby wystąpień.
W przypadku wybrania opcji Wykorzystanie docelowe można określić wartości, które mają być używane dla parametrów podczas skalowania automatycznego wdrożenia.
Wybierz pozycję Aktualizuj , aby zakończyć aktualizowanie liczby wystąpień dla wdrożenia.
Obecnie nie ma możliwości zaktualizowania wdrożenia przy użyciu szablonu usługi ARM.
Uwaga
Aktualizacja wdrożenia w tej sekcji jest przykładem aktualizacji stopniowej w miejscu.
W przypadku zarządzanego punktu końcowego online wdrożenie jest aktualizowane do nowej konfiguracji z 20% węzłami naraz. Oznacza to, że jeśli wdrożenie ma 10 węzłów, aktualizowane są 2 węzły naraz.
W przypadku punktu końcowego online platformy Kubernetes system iteracyjnie tworzy nowe wystąpienie wdrożenia z nową konfiguracją i usuwa stary.
W przypadku użycia produkcyjnego należy rozważyć wdrożenie niebiesko-zielone, które oferuje bezpieczniejszą alternatywę dla aktualizowania usługi internetowej.
Automatyczne skalowanie uruchamia odpowiednią ilość zasobów na potrzeby obsługi obciążenia aplikacji. Zarządzane punkty końcowe online obsługują skalowanie automatyczne dzięki integracji z funkcją automatycznego skalowania usługi Azure Monitor. Aby skonfigurować skalowanie automatyczne, zobacz Jak automatycznie skalować punkty końcowe online.
(Opcjonalnie) Monitorowanie umowy SLA przy użyciu usługi Azure Monitor
get-logs Polecenie dla interfejsu get_logs wiersza polecenia lub metody zestawu SDK zawiera tylko kilkaset ostatnich wierszy dzienników z automatycznie wybranego wystąpienia. Jednak usługa Log Analytics umożliwia trwałe przechowywanie i analizowanie dzienników. Aby uzyskać więcej informacji na temat korzystania z rejestrowania, zobacz Monitorowanie punktów końcowych online.