Wdrażanie i ocenianie modelu uczenia maszynowego przy użyciu punktu końcowego online
DOTYCZY:Rozszerzenie uczenia maszynowego platformy Azure w wersji 2 (bieżąca)
Zestaw SDK języka Python azure-ai-ml w wersji 2 (bieżąca)
Dowiedz się, jak wdrożyć model za pomocą punktu końcowego online, więc nie musisz tworzyć podstawowej infrastruktury i zarządzać nią. Rozpoczniesz od wdrożenia modelu na komputerze lokalnym w celu debugowania błędów, a następnie wdrożysz go i przetestujesz na platformie Azure.
Dowiesz się również, jak wyświetlać dzienniki i monitorować umowę dotyczącą poziomu usług (SLA). Zaczynasz od modelu i kończysz się skalowalnym punktem końcowym HTTPS/REST, którego można użyć do oceniania online i w czasie rzeczywistym.
Punkty końcowe online to punkty końcowe używane do wnioskowania online (w czasie rzeczywistym). Istnieją dwa typy punktów końcowych online: zarządzane punkty końcowe online i punkty końcowe usługi Kubernetes online. 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 usługi Kubernetes online, 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 w sposób „gotowe 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, zobacz notatki w tym dokumencie w tekście z dyskusją na temat zarządzanego punktu końcowego online.
Porada
Aby utworzyć zarządzane punkty końcowe online w Azure Machine Learning studio, zobacz Korzystanie z zarządzanych punktów końcowych online w programie Studio.
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 Learning.
Interfejs wiersza polecenia platformy
ml
Azure i rozszerzenie do interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2).Ważne
Przykłady interfejsu wiersza polecenia w tym artykule zakładają, że używasz powłoki Bash (lub zgodnej). Na przykład z systemu Linux lub Podsystem Windows dla systemu Linux.
Obszar roboczy usługi Azure Machine Learning. Jeśli go nie masz, wykonaj kroki opisane w temacie Instalowanie, konfigurowanie i używanie interfejsu wiersza polecenia (wersja 2), aby go utworzyć.
Kontrola dostępu oparta na rolach platformy Azure (RBAC) platformy Azure służy 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/*
usługę . Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego 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>
(Opcjonalnie) Aby wdrożyć lokalnie, należy zainstalować aparat platformy Docker na komputerze lokalnym. Zdecydowanie zalecamy tę opcję, więc łatwiej jest debugować problemy.
Ważne
W przykładach w tym dokumencie założono, że używasz powłoki powłoki Bash. Na przykład z systemu Linux lub Podsystem Windows dla systemu Linux.
Przygotowywanie systemu
Klonowanie przykładowego repozytorium
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 samples:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Porada
Użyj --depth 1
polecenia , aby sklonować tylko najnowsze zatwierdzenie do repozytorium, co skraca czas na ukończenie operacji.
Ustawianie nazwy punktu końcowego
Aby ustawić nazwę punktu końcowego, uruchom następujące polecenie (zastąp YOUR_ENDPOINT_NAME
ciąg unikatową nazwą).
W przypadku systemu Unix uruchom następujące polecenie:
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Uwaga
Nazwy punktów końcowych muszą być unikatowe w regionie świadczenia usługi Azure. Na przykład w regionie świadczenia usługi Azure westus2
może istnieć tylko jeden punkt końcowy o nazwie my-endpoint
.
Definiowanie punktu końcowego i wdrożenia
Poniższy fragment kodu przedstawia plik endpoints/online/managed/sample/endpoint.yml :
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key
Uwaga
Pełny opis kodu YAML można znaleźć w dokumentacji yaML punktu końcowego online.
Dokumentacja formatu YAML punktu końcowego została opisana w poniższej tabeli. Aby dowiedzieć się, jak określić te atrybuty, zobacz przykład YAML w artykule Prepare your system or the online endpoint YAML reference (Przygotowanie systemu lub dokumentacja YAML punktu końcowego online). Aby uzyskać informacje o limitach związanych z zarządzanymi punktami końcowymi, zobacz Zarządzanie limitami przydziału zasobów i zwiększanie ich za pomocą usługi Azure Machine Learning.
Klucz | Opis |
---|---|
$schema |
(Opcjonalnie) Schemat YAML. Aby wyświetlić wszystkie dostępne opcje w pliku YAML, możesz wyświetlić schemat w poprzednim przykładzie w przeglądarce. |
name |
Nazwa punktu końcowego. Musi być unikatowa w regionie świadczenia usługi Azure. Reguły nazewnictwa są definiowane w ramach zarządzanych limitów punktów końcowych online. |
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. key nie wygasa, ale aml_token wygasa. (Pobierz najnowszy token przy użyciu az ml online-endpoint get-credentials polecenia ). |
Przykład zawiera wszystkie pliki potrzebne do wdrożenia modelu w punkcie końcowym online. Aby wdrożyć model, musisz mieć następujące elementy:
- Pliki modelu (lub nazwa i wersja modelu, który jest już zarejestrowany w obszarze roboczym). W tym przykładzie mamy model scikit-learn, który wykonuje regresję.
- Kod wymagany do oceny modelu. W tym przypadku mamy plik score.py .
- Środowisko, w którym działa model. Jak zobaczysz, środowisko może być obrazem platformy Docker z zależnościami Conda lub może być plikiem Dockerfile.
- Ustawienia umożliwiające określenie typu wystąpienia i pojemności skalowania.
Poniższy fragment kodu przedstawia plik endpoints/online/managed/sample/blue-deployment.yml z wszystkimi wymaganymi danymi wejściowymi:
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
path: ../../model-1/model/
code_configuration:
code: ../../model-1/onlinescoring/
scoring_script: score.py
environment:
conda_file: ../../model-1/environment/conda.yml
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
W tabeli opisano atrybuty elementu deployment
:
Klucz | Opis |
---|---|
name |
Nazwa wdrożenia. |
model |
W tym przykładzie określamy właściwości modelu w tekście: path . Pliki modelu są automatycznie przekazywane i rejestrowane przy użyciu automatycznie wygenerowanej nazwy. Aby zapoznać się z powiązanymi najlepszymi rozwiązaniami, zobacz poradę w następnej sekcji. |
code_configuration.code.path |
Katalog w lokalnym środowisku projektowym zawierającym cały kod źródłowy języka Python na potrzeby oceniania modelu. Można użyć zagnieżdżonych katalogów i pakietów. |
code_configuration.scoring_script |
Plik języka Python, który znajduje się w katalogu oceniania w code_configuration.code.path lokalnym środowisku deweloperskim. Ten kod w języku Python musi mieć init() funkcję i run() funkcję. Funkcja init() zostanie wywołana po utworzeniu lub zaktualizowaniu modelu (można jej użyć do buforowania modelu w pamięci, na przykład). Funkcja jest wywoływana run() przy każdym wywołaniu punktu końcowego, aby wykonać rzeczywiste ocenianie i przewidywanie. |
environment |
Zawiera szczegóły środowiska do hostowania modelu i kodu. W tym przykładzie mamy wbudowane definicje, które zawierająpath element . Użyjemy environment.docker.image tego obrazu. Zależności conda_file zostaną zainstalowane na podstawie obrazu. Aby uzyskać więcej informacji, zobacz poradę w następnej sekcji. |
instance_type |
Jednostka SKU maszyny wirtualnej, która będzie hostować wystąpienia wdrożenia. Aby uzyskać więcej informacji, zobacz Zarządzane punkty końcowe online obsługiwane jednostki SKU maszyn wirtualnych. |
instance_count |
Liczba wystąpień we wdrożeniu. W oparciu o oczekiwaną wartość obciążenia. W celu zapewnienia wysokiej dostępności zalecamy ustawienie instance_count wartości co najmniej 3 . Firma Microsoft zastrzega sobie dodatkowe 20% na potrzeby przeprowadzania uaktualnień. Aby uzyskać więcej informacji, zobacz Zarządzane limity przydziału punktów końcowych online. |
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ć rozwiązania Kubernetes zamiast zarządzanych punktów końcowych 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 Azure Machine Learning studio.
- Użyj kodu YAML punktu końcowego , aby zastosować platformę Kubernetes zamiast zarządzanego punktu końcowego YAML. Należy edytować kod YAML, aby zmienić wartość
target
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 (z wyjątkiem opcjonalnego monitorowania umowy SLA i integracji usługi Azure Log Analytics) mogą być używane z zarządzanymi punktami końcowymi lub punktami końcowymi kubernetes.
Rejestrowanie modelu i środowiska oddzielnie
W tym przykładzie określamy path
(gdzie mają być przekazywane pliki) w tekście. Interfejs wiersza polecenia automatycznie przekazuje pliki i rejestruje model i środowisko. Najlepszym rozwiązaniem dla środowiska produkcyjnego jest zarejestrowanie modelu i środowiska oraz określenie zarejestrowanej nazwy i wersji oddzielnie w języku YAML. Użyj formularza model: azureml:my-model:1
lub environment: azureml:my-env:1
.
W celu rejestracji można wyodrębnić definicje YAML i model
environment
do oddzielnych plików YAML i 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
.
Używanie różnych typów wystąpień procesora CPU i procesora GPU
Powyższy kod YAML używa typu ogólnego przeznaczenia (Standard_DS2_v2
) i obrazu platformy Docker spoza procesora GPU (w języku YAML zobacz image
atrybut). W przypadku obliczeń z procesorem 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 obiektu obliczeniowego kubernetes
Używanie więcej niż jednego modelu
Obecnie można określić tylko jeden model na wdrożenie w języku YAML. Jeśli masz więcej niż jeden model, podczas rejestrowania modelu skopiuj wszystkie modele jako pliki lub podkatalogi do folderu używanego do rejestracji. W skrypcie oceniania użyj zmiennej środowiskowej AZUREML_MODEL_DIR
, aby uzyskać ścieżkę do folderu głównego modelu. Podstawowa struktura katalogów zostaje zachowana. Aby zapoznać się z przykładem wdrażania wielu modeli w jednym wdrożeniu, zobacz Wdrażanie wielu modeli w jednym wdrożeniu.
Porada
Jeśli masz więcej niż 1500 plików do zarejestrowania, możesz rozważyć kompresowanie plików lub podkatalogów jako .tar.gz podczas rejestrowania modelu. Aby korzystać z modeli, możesz usunąć z niego pliki lub podkatalogi w funkcji init() ze skryptu oceniania. Alternatywnie podczas rejestrowania modelu ustaw azureml.unpack
właściwość na True
, która umożliwi automatyczne usuwanie. W obu przypadkach niekompresja odbywa się raz na etapie inicjowania.
Omówienie skryptu oceniania
Porada
Format skryptu oceniania dla punktów końcowych online jest taki sam format, który jest używany w poprzedniej wersji interfejsu wiersza polecenia i w zestawie SDK języka Python.
Jak wspomniano wcześniej, skrypt określony w code_configuration.scoring_script
pliku musi mieć init()
funkcję i run()
funkcję.
W tym przykładzie użyto pliku score.py: score.py
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. Tutaj napisz logikę dla globalnych operacji inicjowania, takich jak buforowanie modelu w pamięci (jak w tym przykładzie). Funkcja run()
jest wywoływana dla każdego wywołania punktu końcowego i powinna wykonywać rzeczywiste ocenianie i przewidywanie. W tym przykładzie wyodrębniamy dane z danych wejściowych JSON, wywołujemy metodę modelu predict()
scikit-learn, a następnie zwracamy wynik.
Wdrażanie i debugowanie lokalnie przy użyciu lokalnych punktów końcowych
Aby zaoszczędzić czas debugowania, zdecydowanie zalecamy przetestowanie punktu końcowego lokalnie. Aby uzyskać więcej informacji, zobacz Debugowanie punktów końcowych online lokalnie w Visual Studio Code.
Uwaga
- Aby wdrożyć lokalnie, należy zainstalować aparat platformy Docker .
- Aparat platformy Docker musi być uruchomiony. Aparat platformy Docker zwykle uruchamia się po uruchomieniu komputera. Jeśli tak nie jest, możesz rozwiązać problemy z aparatem platformy Docker.
Ważne
Celem wdrożenia lokalnego punktu końcowego jest zweryfikowanie i debugowanie kodu i konfiguracji przed wdrożeniem na platformie Azure. Wdrożenie lokalne ma następujące ograniczenia:
- Lokalne punkty końcowe nie obsługują reguł ruchu, uwierzytelniania ani ustawień sondy.
- Lokalne punkty końcowe obsługują tylko jedno wdrożenie na punkt końcowy.
- Lokalne punkty końcowe nie obsługują zarejestrowanych modeli. Aby użyć już zarejestrowanych modeli, możesz pobrać je przy użyciu interfejsu wiersza polecenia lub zestawu SDK i odwołać się do nich w definicji wdrożenia.
Porada
Możesz użyć pakietu http serwera HTTP serwera HTTP usługi Azure Machine Learning do debugowania skryptu oceniania lokalnie bez aparatu Platformy Docker. 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 wdrażania.
Wdrażanie modelu lokalnie
Najpierw utwórz punkt końcowy. Opcjonalnie dla 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.
az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Teraz utwórz wdrożenie o nazwie blue
w obszarze punktu końcowego.
az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
Flaga --local
przekierowuje interfejs wiersza polecenia do wdrożenia punktu końcowego w środowisku platformy Docker.
Porada
Użyj programu Visual Studio Code, aby przeprowadzić testowanie i debugowanie punktów końcowych lokalnie. Aby uzyskać więcej informacji, zobacz debugowanie punktów końcowych online lokalnie w Visual Studio Code.
Sprawdzanie, czy wdrożenie lokalne zakończyło się pomyślnie
Sprawdź stan, aby sprawdzić, czy model został wdrożony bez błędu:
az ml online-endpoint show -n $ENDPOINT_NAME --local
Dane wyjściowe powinny wyglądać podobnie do poniższego kodu JSON. Wartość provisioning_state
to Succeeded
.
{
"auth_mode": "key",
"location": "local",
"name": "docs-endpoint",
"properties": {},
"provisioning_state": "Succeeded",
"scoring_uri": "http://localhost:49158/score",
"tags": {},
"traffic": {}
}
Poniższa tabela zawiera możliwe wartości dla provisioning_state
elementu :
Stan | Opis |
---|---|
Tworzenie | Zasób jest tworzony. |
Aktualizowanie | Zasób jest aktualizowany. |
Usuwanie | Zasób jest usuwany. |
Powodzenie | Operacja tworzenia/aktualizacji zakończyła się pomyślnie. |
Niepowodzenie | 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 wygodnego polecenia invoke
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 zwróconych danych znajdź scoring_uri
atrybut . Przykładowe polecenia oparte na narzędziu curl są dostępne w dalszej części tego dokumentu.
Przejrzyj dzienniki pod kątem danych wyjściowych operacji wywołania
W przykładowym pliku run()
score.py metoda rejestruje pewne dane wyjściowe w konsoli.
Te dane wyjściowe można wyświetlić za pomocą get-logs
polecenia :
az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME
Wdrażanie punktu końcowego online na platformie Azure
Następnie wdróż punkt końcowy online na platformie Azure.
Wdróż na platformie Azure
Aby utworzyć punkt końcowy w chmurze, uruchom następujący kod:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Aby utworzyć wdrożenie o nazwie blue
w punkcie końcowym, uruchom następujący kod:
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
To wdrożenie 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 zakończą przetwarzanie szybciej.
Porada
- Jeśli nie chcesz blokować konsoli interfejsu wiersza polecenia, możesz dodać flagę
--no-wait
do polecenia . Spowoduje to jednak zatrzymanie interaktywnego wyświetlania stanu wdrożenia.
Ważne
Flaga --all-traffic
w powyższym az ml online-deployment create
obiekcie przydziela 100% ruchu do punktu końcowego do nowo utworzonego wdrożenia. Chociaż jest to przydatne w celach programistycznych i testowych, w środowisku produkcyjnym warto otworzyć ruch do nowego wdrożenia za pomocą jawnego polecenia. Na przykład az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100"
Porada
- Użyj opcji Rozwiązywanie problemów z wdrażaniem punktów końcowych online , aby debugować błędy.
Sprawdzanie stanu punktu końcowego
Polecenie show
zawiera informacje dotyczące provisioning_status
punktu końcowego i wdrożenia:
az ml online-endpoint show -n $ENDPOINT_NAME
Aby wyświetlić listę wszystkich punktów końcowych w obszarze roboczym w formacie tabeli, użyj 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:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Domyślnie dzienniki są pobierane z serwera wnioskowania. Aby wyświetlić dzienniki z inicjatora magazynu (instaluje on zasoby, takie jak model i kod do kontenera), 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
Możesz użyć invoke
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
W poniższym przykładzie pokazano, jak uzyskać klucz używany do uwierzytelniania w punkcie końcowym:
Porada
Możesz kontrolować, które podmioty zabezpieczeń usługi Azure Active Directory mogą uzyskać klucz uwierzytelniania, przypisując je do roli niestandardowej, która zezwala na Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
używanie usług i Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
. Aby uzyskać więcej informacji, 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)
Następnie 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żywamy show
poleceń i get-credentials
, aby uzyskać poświadczenia uwierzytelniania. Zwróć również uwagę, że używamy flagi --query
do filtrowania atrybutów tylko do tego, czego potrzebujemy. Aby dowiedzieć się więcej na temat --query
usługi , zobacz Query Azure CLI command output (Wykonywanie zapytań względem danych wyjściowych polecenia interfejsu wiersza polecenia platformy Azure).
Aby wyświetlić dzienniki wywołań, uruchom get-logs
ponownie polecenie .
Aby uzyskać informacje na temat uwierzytelniania przy użyciu tokenu, zobacz Uwierzytelnianie w punktach końcowych online.
(Opcjonalnie) Aktualizowanie wdrożenia
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ń oraz inne ustawienia modelu (kod, model lub środowisko) w jednym update
poleceniu: najpierw zostanie wykonana operacja skalowania, zostaną zastosowane inne aktualizacje. W środowisku produkcyjnym dobrym rozwiązaniem jest oddzielne wykonywanie tych operacji.
Aby zrozumieć, jak update
działa:
Otwórz plik online/model-1/onlinescoring/score.py.
Zmień ostatni wiersz
init()
funkcji: pologging.info("Init complete")
pliku dodajlogging.info("Updated successfully")
element .Zapisz plik.
Uruchom następujące polecenie:
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml
Uwaga
Aktualizacja przy użyciu języka YAML jest deklaratywna. Oznacza to, że zmiany w języku 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.Porada
update
Za pomocą polecenia możesz użyć parametru--set
w interfejsie wiersza polecenia platformy Azure, aby zastąpić atrybuty w języku YAML lub ustawić określone atrybuty bez przekazywania pliku YAML. Używanie--set
dla pojedynczych atrybutów jest szczególnie przydatne w scenariuszach programowania i testowania. Na przykład w celu skalowania w góręinstance_count
wartości pierwszego wdrożenia można użyć flagi--set instance_count=2
. Jednak ze względu na to, że kod YAML nie został zaktualizowany, ta technika nie ułatwia metodyki GitOps.Ponieważ funkcja została zmodyfikowana (
init()
jest uruchamiana po utworzeniuinit()
lub zaktualizowaniu punktu końcowego), komunikatUpdated 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
.
Uwaga
Powyżej przedstawiono przykład aktualizacji stopniowej w miejscu.
- W przypadku zarządzanego punktu końcowego online to samo wdrożenie jest aktualizowane przy użyciu nowej konfiguracji z 20% węzłami w czasie, tj. jeśli wdrożenie ma 10 węzłów, 2 węzły naraz zostaną zaktualizowane.
- W przypadku punktu końcowego usługi Kubernetes online system itereruje iterowanie tworzenia nowego wystąpienia wdrożenia przy użyciu nowej konfiguracji i usuwania starego.
- W przypadku użycia w środowisku produkcyjnym warto rozważyć wdrożenie niebieski-zielony, które oferuje bezpieczniejszą alternatywę.
(Opcjonalnie) Konfigurowanie skalowania automatycznego
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 How to autoscale online endpoints (Jak automatycznie skalować punkty końcowe online).
(Opcjonalnie) Monitorowanie umowy SLA przy użyciu usługi Azure Monitor
Aby wyświetlić metryki i ustawić alerty na podstawie umowy SLA, wykonaj kroki opisane w temacie Monitorowanie punktów końcowych online.
(Opcjonalnie) Integracja z usługą Log Analytics
get-logs
Polecenie interfejsu wiersza polecenia lub get_logs
metody zestawu SDK udostępnia tylko kilkaset 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
Jak skonfigurować wiadomości e-mail w programie Studio
Aby rozpocząć odbieranie wiadomości e-mail po zakończeniu zadania, punktu końcowego online lub punktu końcowego wsadowego lub w przypadku wystąpienia problemu (niepowodzenie, anulowane), wykonaj następujące kroki:
- W usłudze Azure ML Studio przejdź do ustawień, wybierając ikonę koła zębatego.
- Wybierz kartę powiadomienia Email.
- Przełącz, aby włączyć lub wyłączyć powiadomienia e-mail dla określonego zdarzenia.
Usuwanie punktu końcowego i wdrożenia
Jeśli nie używasz wdrożenia, należy go usunąć, uruchamiając następujący kod (usuwa punkt końcowy i wszystkie podstawowe wdrożenia):
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Następne kroki
Spróbuj bezpiecznie wdrożyć modele w następnym kroku:
Aby dowiedzieć się więcej, zapoznaj się z następującymi artykułami:
- Wdrażanie modeli przy użyciu interfejsu REST
- Tworzenie i używanie punktów końcowych online w programie Studio
- Jak automatycznie skalować zarządzane punkty końcowe online
- Używanie punktów końcowych wsadowych do oceniania wsadowego
- Uzyskiwanie dostępu do zasobów platformy Azure z punktu końcowego online przy użyciu tożsamości zarządzanej
- Rozwiązywanie problemów z wdrażaniem punktów końcowych online
- Włączanie izolacji sieci za pomocą zarządzanych punktów końcowych online
- Wyświetlanie kosztów punktu końcowego online zarządzanego przez usługę Azure Machine Learning