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:

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

  1. 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.
  2. 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 modelenvironment 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

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_stateelementu :

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"

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 --queryusł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:

  1. Otwórz plik online/model-1/onlinescoring/score.py.

  2. Zmień ostatni wiersz init() funkcji: po logging.info("Init complete")pliku dodaj logging.info("Updated successfully")element .

  3. Zapisz plik.

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

  5. Ponieważ funkcja została zmodyfikowana (init() 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 .

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:

  1. W usłudze Azure ML Studio przejdź do ustawień, wybierając ikonę koła zębatego.
  2. Wybierz kartę powiadomienia Email.
  3. Przełącz, aby włączyć lub wyłączyć powiadomienia e-mail dla określonego zdarzenia.

Zrzut ekranu przedstawiający ustawienia programu Azure ML Studio na karcie powiadomienia e-mail.

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: