Dela via


Distribuera och poängsätta en maskininlärningsmodell med hjälp av en onlineslutpunkt

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

I den här artikeln lär du dig att distribuera din modell till en onlineslutpunkt för användning i realtidsinferens. Du börjar med att distribuera en modell på den lokala datorn för att felsöka eventuella fel. Sedan distribuerar och testar du modellen i Azure, visar distributionsloggarna och övervakar serviceavtalet (SLA). I slutet av den här artikeln har du en skalbar HTTPS/REST-slutpunkt som du kan använda för slutsatsdragning i realtid.

Onlineslutpunkter är slutpunkter som används för inferens i realtid. Det finns två typer av onlineslutpunkter: hanterade onlineslutpunkter och Kubernetes onlineslutpunkter. Mer information om skillnaderna finns i Hanterade onlineslutpunkter jämfört med Kubernetes onlineslutpunkter.

Med hanterade onlineslutpunkter kan du distribuera användningsklara maskininlärningsmodeller. Hanterade onlineslutpunkter körs skalbart och helt hanterat på datorer med kraftfulla processorer och grafikkort i Azure. Hanterade onlineslutpunkter tar hand om servering, skalning, skydd och övervakning av dina modeller. Den här hjälpen frigör dig från kostnaderna för att konfigurera och hantera den underliggande infrastrukturen.

Huvudexemplet i den här artikeln använder hanterade onlineslutpunkter för distribution. Om du vill använda Kubernetes i stället kan du läsa anteckningarna i det här dokumentet som är infogade i den hanterade onlineslutpunktsdiskussionen.

Förutsättningar

GÄLLER FÖR: Azure CLI ml-tillägget v2 (aktuellt)

  • Azure CLI och ml tillägget till Azure CLI har installerats och konfigurerats. Mer information finns i Installera och konfigurera CLI (v2).

  • Ett Bash-gränssnitt eller ett kompatibelt gränssnitt, till exempel ett gränssnitt på ett Linux-system eller Windows-undersystem för Linux. Azure CLI-exemplen i den här artikeln förutsätter att du använder den här typen av gränssnitt.

  • En Azure Machine Learning-arbetsyta. Anvisningar för hur du skapar en arbetsyta finns i Konfigurera.

  • Rollbaserad åtkomstkontroll i Azure (Azure RBAC) används för att ge åtkomst till åtgärder i Azure Machine Learning. Om du vill utföra stegen i den här artikeln måste ditt användarkonto tilldelas rollen Ägare eller Deltagare för Azure Machine Learning-arbetsytan, eller så måste en anpassad roll tillåta Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Om du använder Azure Machine Learning Studio för att skapa och hantera onlineslutpunkter eller distributioner behöver du den extra behörigheten Microsoft.Resources/deployments/write från resursgruppens ägare. Mer information finns i Hantera åtkomst till Azure Machine Learning-arbetsytor.

  • (Valfritt) Om du vill distribuera lokalt måste du installera Docker Engine på den lokala datorn. Vi rekommenderar starkt det här alternativet, vilket gör det enklare att felsöka problem.

  • Se till att du har tillräckligt med kvoter för virtuella datorer (VM) allokerade för distribution. Azure Machine Learning reserverar 20% av dina beräkningsresurser för att utföra uppgraderingar på vissa vm-versioner. Om du till exempel begär 10 instanser i en distribution måste du ha en kvot på 12 för varje antal kärnor för den virtuella datorns version. Om du inte tar hänsyn till de extra beräkningsresurserna resulterar det i ett fel. Vissa VM-versioner är undantagna från den extra kvotreservationen. Mer information om kvotallokering finns i kvotallokering för virtuella datorer för distribution.

  • Du kan också använda kvoten från den delade kvotpoolen i Azure Machine Learning under en begränsad tid. Azure Machine Learning tillhandahåller en delad kvotpool från vilken användare i olika regioner kan komma åt kvoten för att utföra testning under en begränsad tid, beroende på tillgänglighet. När du använder studion för att distribuera Llama-2-, Phi-, Nemotron-, Mistral-, Dolly- och Deci-DeciLM-modeller från modellkatalogen till en hanterad onlineslutpunkt, ger Azure Machine Learning dig åtkomst till dess delade kvotpool under en kort tid så att du kan utföra testning. Mer information om den delade kvotpoolen finns i Delad kvot för Azure Machine Learning.

Förbereda systemet

Ange miljövariabler

Om du inte redan har angett standardinställningarna för Azure CLI sparar du standardinställningarna. Kör den här koden för att undvika att skicka in värdena för din prenumeration, arbetsyta och resursgrupp flera gånger:

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Klona exempellagringsplatsen

Om du vill följa med i den här artikeln klonar du först lagringsplatsen azureml-examples och ändrar sedan till lagringsplatsens azureml-examples/cli-katalog :

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli

Använd --depth 1 för att endast klona den senaste incheckningen till lagringsplatsen, vilket minskar tiden för att slutföra åtgärden.

Kommandona i den här självstudien finns i filerna deploy-local-endpoint.sh och deploy-managed-online-endpoint.sh i cli-mappen. YAML-konfigurationsfilerna finns i underkatalogen endpoints/online/managed/sample/ .

Kommentar

YAML-konfigurationsfilerna för Kubernetes onlineslutpunkter finns i underkatalogen endpoints/online/kubernetes/ .

Definiera slutpunkten

Om du vill definiera en onlineslutpunkt anger du slutpunktsnamnet och autentiseringsläget. Mer information om hanterade onlineslutpunkter finns i Onlineslutpunkter.

Ange ett slutpunktsnamn

Kör följande kommando för att ange slutpunktsnamnet. Ersätt <YOUR_ENDPOINT_NAME> med ett namn som är unikt i Azure-regionen. Mer information om namngivningsreglerna finns i Slutpunktsgränser.

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Konfigurera slutpunkten

Följande kodfragment visar filen endpoints/online/managed/sample/endpoint.yml :

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: my-endpoint
auth_mode: key

Referensen för YAML-formatet för slutpunkten beskrivs i följande tabell. Information om hur du anger dessa attribut finns i YAML-referensen för onlineslutpunkten. Information om begränsningar relaterade till hanterade slutpunkter finns i Azure Machine Learning online-slutpunkter och batchslutpunkter.

Nyckel beskrivning
$schema (Valfritt) YAML-schemat. Om du vill se alla tillgängliga alternativ i YAML-filen kan du visa schemat i föregående kodfragment i en webbläsare.
name Namnet på slutpunkten.
auth_mode Används key för nyckelbaserad autentisering.
Används aml_token för tokenbaserad autentisering i Azure Machine Learning.
Använd aad_token för Microsoft Entra-tokenbaserad autentisering (förhandsversion).
Mer information om autentisering finns i Autentisera klienter för onlineslutpunkter.

Definiera distributionen

En distribution är en uppsättning resurser som krävs för att vara värd för den modell som utför den faktiska inferensen. I det här exemplet distribuerar du en scikit-learn modell som utför regression och använder ett bedömningsskript score.py för att köra modellen på en specifik indatabegäran.

Mer information om nyckelattributen för en distribution finns i Onlinedistributioner.

Konfigurera en distribution

Distributionskonfigurationen använder platsen för den modell som du vill distribuera.

Följande kodfragment visar filen endpoints/online/managed/sample/blue-deployment.yml , med alla nödvändiga indata för att konfigurera en distribution:

$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.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

Filen blue-deployment.yml anger följande distributionsattribut:

  • model: Anger modellens egenskaper direkt med parametern path (varifrån filer kan laddas upp). CLI laddar automatiskt upp modellfilerna och registrerar modellen med ett automatiskt genererat namn.
  • environment: Använder infogade definitioner som innehåller var du kan ladda upp filer från. CLI laddar automatiskt upp filen conda.yaml och registrerar miljön. Senare använder distributionen parametern image för basavbildningen för att skapa miljön. I det här exemplet är det mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Beroendena conda_file installeras ovanpå basavbildningen.
  • code_configuration: Laddar upp de lokala filerna, till exempel Python-källan för bedömningsmodellen, från utvecklingsmiljön under distributionen.

Mer information om YAML-schemat finns i YAML-referensen för onlineslutpunkten.

Kommentar

Så här använder du Kubernetes-slutpunkter i stället för hanterade onlineslutpunkter som beräkningsmål:

  1. Skapa och koppla kubernetes-klustret som beräkningsmål till din Azure Machine Learning-arbetsyta med hjälp av Azure Machine Learning-studio.
  2. Använd endpoint YAML för att rikta in dig på Kubernetes istället för den hanterade endpoint YAML. Du måste redigera YAML för att ändra värdet compute för till namnet på ditt registrerade beräkningsmål. Du kan använda den här deployment.yaml som har andra egenskaper som gäller för en Kubernetes-distribution.

Alla kommandon som används i den här artikeln för hanterade onlineslutpunkter gäller även för Kubernetes-slutpunkter, förutom följande funktioner som inte gäller för Kubernetes-slutpunkter:

Förstå bedömningsskriptet

Formatet för bedömningsskriptet för onlineslutpunkter är samma format som används i föregående version av CLI och i Python SDK.

Bedömningsskriptet som anges i code_configuration.scoring_script måste ha en init() funktion och en run() funktion.

I det här exemplet används score.py-filen från lagringsplatsen som du klonade eller laddade ned tidigare:

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()

Funktionen init() anropas när containern initieras eller startas. Initieringen sker vanligtvis strax efter att distributionen har skapats eller uppdaterats. Funktionen init är platsen för att skriva logik för globala initieringsåtgärder som att cachelagra modellen i minnet (som visas i den här score.py filen).

Funktionen run() anropas varje gång slutpunkten anropas. Den gör den faktiska poängsättningen och förutsägelsen. I den här score.py filen run() extraherar funktionen data från en JSON-indata, anropar scikit-learn-modellens predict() metod och returnerar sedan förutsägelseresultatet.

Distribuera och felsöka lokalt med hjälp av en lokal slutpunkt

Vi rekommenderar starkt att du testar att köra slutpunkten lokalt för att verifiera och felsöka din kod och konfiguration innan du distribuerar till Azure. Azure CLI och Python SDK stöder lokala slutpunkter och distributioner, men det gör inte Azure Machine Learning Studio- och ARM-mallar.

Om du vill distribuera lokalt måste Docker Engine installeras och köras. Docker Engine startar vanligtvis när datorn startas. Om den inte gör det kan du felsöka Docker Engine.

Du kan använda Azure Machine Learning-inferens HTTP-server Python-paketet för att felsöka ditt poängskript lokalt utan Docker Engine. Felsökning med slutsatsdragningsservern hjälper dig att felsöka bedömningsskriptet innan du distribuerar till lokala slutpunkter så att du kan felsöka utan att påverkas av konfigurationerna av distributionscontainer.

Mer information om felsökning av onlineslutpunkter lokalt innan du distribuerar till Azure finns i Felsökning av onlineslutpunkter.

Distribuera modellen lokalt

Skapa först en slutpunkt. Om du vill kan du hoppa över det här steget för en lokal slutpunkt. Du kan skapa distributionen direkt (nästa steg), vilket i sin tur skapar nödvändiga metadata. Att distribuera modeller lokalt är användbart i utvecklings- och testsyfte.

az ml online-endpoint create --local -n $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml

Skapa nu en distribution med namnet blue under slutpunkten.

az ml online-deployment create --local -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml

Flaggan --local instruerar CLI att distribuera slutpunkten i Docker-miljön.

Dricks

Använd Visual Studio Code till att testa och felsöka dina slutpunkter lokalt. Mer information finns i Felsöka onlineslutpunkter lokalt i Visual Studio Code.

Kontrollera att den lokala distributionen lyckades

Kontrollera distributionsstatusen för att se om modellen distribuerades utan fel:

az ml online-endpoint show -n $ENDPOINT_NAME --local

Utdata bör se ut ungefär som följande JSON. Parametern provisioning_state är Succeeded.

{
  "auth_mode": "key",
  "location": "local",
  "name": "docs-endpoint",
  "properties": {},
  "provisioning_state": "Succeeded",
  "scoring_uri": "http://localhost:49158/score",
  "tags": {},
  "traffic": {}
}

Följande tabell innehåller möjliga värden för provisioning_state:

Värde beskrivning
Creating Resursen skapas.
Updating Resursen uppdateras.
Deleting Resursen tas bort.
Succeeded Åtgärden för att skapa eller uppdatera lyckades.
Failed Åtgärden för att skapa, uppdatera eller ta bort misslyckades.

Anropa den lokala slutpunkten för att poängsätta data med hjälp av din modell

Anropa slutpunkten för att poängsätta modellen med hjälp invoke av kommandot och skicka frågeparametrar som lagras i en JSON-fil:

az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json

Om du vill använda en REST-klient (t.ex. curl) måste du ha bedömnings-URI:n. Kör för att hämta bedömnings-URI az ml online-endpoint show --local -n $ENDPOINT_NAME:n. Leta upp attributet i scoring_uri de returnerade data.

Granska loggarna för utdata från anropsåtgärden

I exemplet score.py fil run() loggar metoden utdata till konsolen.

Du kan visa dessa utdata med hjälp get-logs av kommandot :

az ml online-deployment get-logs --local -n blue --endpoint $ENDPOINT_NAME

Distribuera din onlineslutpunkt till Azure

Distribuera sedan din onlineslutpunkt till Azure. Som bästa praxis för produktion rekommenderar vi att du registrerar den modell och miljö som du använder i distributionen.

Registrera din modell och miljö

Vi rekommenderar att du registrerar din modell och miljö innan du distribuerar till Azure så att du kan ange deras registrerade namn och versioner under distributionen. När du har registrerat dina tillgångar kan du återanvända dem utan att behöva ladda upp dem varje gång du skapar distributioner. Den här metoden ökar reproducerbarheten och spårbarheten.

Till skillnad från distribution till Azure stöder inte lokal distribution användning av registrerade modeller och miljöer. I stället använder lokal distribution lokala modellfiler och använder endast miljöer med lokala filer.

För distribution till Azure kan du använda antingen lokala eller registrerade tillgångar (modeller och miljöer). I det här avsnittet i artikeln använder distributionen till Azure registrerade tillgångar, men du har möjlighet att använda lokala tillgångar i stället. Ett exempel på en distributionskonfiguration som laddar upp lokala filer som ska användas för lokal distribution finns i Konfigurera en distribution.

Om du vill registrera modellen och miljön använder du formuläret model: azureml:my-model:1 eller environment: azureml:my-env:1.

För registrering kan du extrahera YAML-definitionerna för model och environment till separata YAML-filer i mappen endpoints/online/managed/sample och använda kommandona az ml model create och az ml environment create. Om du vill veta mer om dessa kommandon kör az ml model create -h du och az ml environment create -h.

  1. Skapa en YAML-definition för modellen. Ge filen namnet model.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
    name: my-model
    path: ../../model-1/model/
    
  2. Registrera modellen:

    az ml model create -n my-model -v 1 -f endpoints/online/managed/sample/model.yml
    
  3. Skapa en YAML-definition för miljön. Ge filen namnet environment.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: my-env
    image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    conda_file: ../../model-1/environment/conda.yaml
    
  4. Registrera miljön:

    az ml environment create -n my-env -v 1 -f endpoints/online/managed/sample/environment.yml
    

Mer information om hur du registrerar din modell som en tillgång finns i Registrera en modell med hjälp av Azure CLI eller Python SDK. Mer information om hur du skapar en miljö finns i Skapa en anpassad miljö.

Viktigt!

När du definierar en anpassad miljö för distributionen azureml-inference-server-http kontrollerar du att paketet ingår i conda-filen. Det här paketet är viktigt för att slutsatsdragningsservern ska fungera korrekt. Om du inte känner till hur du skapar en egen anpassad miljö använder du en av våra utvalda miljöer, till exempel minimal-py-inference (för anpassade modeller som inte använder mlflow) eller mlflow-py-inference (för modeller som använder mlflow). Du hittar de här utvalda miljöerna på fliken Miljöer i din instans av Azure Machine Learning Studio.

Konfigurera en distribution som använder registrerade tillgångar

Distributionskonfigurationen använder den registrerade modell som du vill distribuera och din registrerade miljö.

Använd registrerade tillgångar (modell och miljö) i distributionsdefinitionen. Följande kodfragment visar filen endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml , med alla nödvändiga indata för att konfigurera en distribution:

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model: azureml:my-model:1
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: azureml:my-env:1
instance_type: Standard_DS3_v2
instance_count: 1

Använda olika typer och avbildningar av PROCESSOR- och GPU-instanser

Du kan ange typer och avbildningar för CPU- eller GPU-instanser i distributionsdefinitionen för både lokal distribution och distribution till Azure.

Din distributionsdefinition i blue-deployment-with-registered-assets.yml-filen använde en instans av typen allmänt bruk Standard_DS3_v2 och docker-avbildningen mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest utan GPU. För GPU-beräkning väljer du en GPU-beräkningstypversion och en GPU Docker-avbildning.

Se hanterade onlineslutpunkters SKU-lista för att få information om stöd för allmän användning och GPU-instanstyper. En lista över Azure Machine Learning CPU- och GPU-basavbildningar finns i Grundavbildningar för Azure Machine Learning.

Kommentar

Information om hur du använder Kubernetes i stället för hanterade slutpunkter som beräkningsmål finns i Introduktion till Kubernetes-beräkningsmål.

Distribuera sedan din onlineslutpunkt till Azure.

Distribuera till Azure

  1. Skapa slutpunkten i Azure-molnet:

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Skapa distributionen med namnet blue under slutpunkten:

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
    

    Det kan ta upp till 15 minuter att skapa distributionen, beroende på om den underliggande miljön eller avbildningen skapas för första gången. Efterföljande distributioner som använder samma miljö bearbetas snabbare.

    Om du föredrar att inte blockera CLI-konsolen kan du lägga till flaggan --no-wait i kommandot. Det här alternativet stoppar dock den interaktiva visningen av distributionsstatusen.

    Flaggan --all-traffic i koden az ml online-deployment create som används för att skapa distributionen allokerar 100 % av slutpunktstrafiken till den nyligen skapade blå distributionen. Att använda den här flaggan är användbart i utvecklings- och testsyfte, men för produktion kanske du vill dirigera trafik till den nya distributionen via ett explicit kommando. Använd till exempel az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Information om hur du felsöker fel i distributionen finns i Felsöka distributioner av onlineslutpunkter.

Kontrollera statusen för onlineslutpunkten

  1. show Använd kommandot för att visa information i provisioning_state för slutpunkten och distributionen:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Visa en lista över alla slutpunkter i arbetsytan i tabellformat med hjälp list av kommandot :

    az ml online-endpoint list --output table
    

Kontrollera statusen för onlinedistributionen

Kontrollera loggarna för att se om modellen distribuerades utan fel.

Om du vill se loggutdata från en container använder du följande CLI-kommando:

az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME

Som standard hämtas loggarna från inferensservercontainern. Om du vill se loggar från containern för lagringsinitieraren lägger du till --container storage-initializer flaggan. Mer information om distributionsloggar finns i Hämta containerloggar.

Anropa slutpunkten för att poängsätta data med hjälp av din modell

  1. Använd antingen kommandot invoke eller valfri REST-klient för att anropa slutpunkten och poängsätta vissa data:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. Hämta nyckeln som används för att autentisera till slutpunkten:

    Du kan styra vilka Microsoft Entra-säkerhetsobjekt som kan hämta autentiseringsnyckeln genom att tilldela dem till en anpassad roll som tillåter Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action och Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Mer information om hur du hanterar auktorisering till arbetsytor finns i Hantera åtkomst till en Azure Machine Learning-arbetsyta.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. Använd curl för att poängsätta data.

    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
    

    Observera att du använder show och get-credentials kommandon för att hämta autentiseringsuppgifterna. Observera också att du använder --query flaggan för att endast filtrera de attribut som behövs. Mer information om flaggan finns i --query Fråga azure CLI-kommandoutdata.

  4. Om du vill se anropsloggarna kör du get-logs igen.

(Valfritt) Uppdatera distributionen

Om du vill uppdatera koden, modellen eller miljön uppdaterar du YAML-filen. az ml online-endpoint update Kör sedan kommandot .

Om du uppdaterar antalet instanser (för att skala distributionen) tillsammans med andra modellinställningar (till exempel kod, modell eller miljö) i ett enda update kommando utförs skalningsåtgärden först. De andra uppdateringarna tillämpas härnäst. Det är en bra idé att utföra dessa åtgärder separat i en produktionsmiljö.

Så här förstår du hur update det fungerar:

  1. Öppna filen online/model-1/onlinescoring/score.py.

  2. Ändra den sista raden i init() funktionen: Efter logging.info("Init complete")lägger du till logging.info("Updated successfully").

  3. Spara filen.

  4. Kör följande kommando:

    az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
    

    Det är deklarativt att uppdatera med YAML. Det vill säga ändringar i YAML återspeglas i de underliggande Resource Manager-resurserna (slutpunkter och distributioner). En deklarativ metod underlättar GitOps: Alla ändringar av slutpunkter och distributioner (till och med instance_count) går igenom YAML.

    Du kan använda allmänna uppdateringsparametrar, till exempel parametern --set , med CLI-kommandot update för att åsidosätta attribut i YAML eller för att ange specifika attribut utan att skicka dem i YAML-filen. Användning för --set enkla attribut är särskilt värdefullt i utvecklings- och testscenarier. Om du till exempel vill skala upp instance_count värdet för den första distributionen kan du använda --set instance_count=2 flaggan. Men eftersom YAML inte uppdateras underlättar inte den här tekniken GitOps.

    Det är inte obligatoriskt att ange YAML-filen. Om du till exempel vill testa olika samtidighetsinställningar för en viss distribution kan du prova något i stil med az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Den här metoden behåller all befintlig konfiguration men uppdaterar endast de angivna parametrarna.

  5. Eftersom du har ändrat init() funktionen, som körs när slutpunkten skapas eller uppdateras, visas meddelandet Updated successfully i loggarna. Hämta loggarna genom att köra:

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    

Kommandot update fungerar också med lokala distributioner. Använd samma az ml online-deployment update kommando med --local flaggan.

Kommentar

Uppdateringen av distributionen i det här avsnittet är ett exempel på en löpande uppdatering på plats.

  • För en hanterad onlineslutpunkt uppdateras distributionen till den nya konfigurationen med 20% av noderna i taget. Om distributionen har 10 noder uppdateras alltså 2 noder åt gången.
  • För en Kubernetes online-slutpunkt skapar systemet iterativt en ny distributionsinstans med den nya konfigurationen och tar bort den gamla.
  • För produktionsanvändning bör du överväga blågrön distribution, vilket är ett säkrare alternativ för att uppdatera en webbtjänst.

(Valfritt) Konfigurera automatisk skalning

Med autoskalning körs automatiskt rätt mängd resurser för att hantera arbetsbelastningen i appen. Hanterade onlineslutpunkter stöder automatisk skalning genom integrering med autoskalningsfunktionen i Azure Monitor. Information om hur du konfigurerar autoskalning finns i Autoskalning av onlineslutpunkter.

(Valfritt) Övervaka serviceavtal med hjälp av Azure Monitor

Om du vill visa mått och ange aviseringar baserat på ditt serviceavtal följer du stegen som beskrivs i Övervaka onlineslutpunkter.

(Valfritt) Integrera med Log Analytics

Kommandot get-logs för CLI eller get_logs -metoden för SDK:t innehåller endast de senaste hundra raderna med loggar från en automatiskt vald instans. Log Analytics är dock ett sätt att lagra och analysera loggar på ett korrekt sätt. Mer information om hur du använder loggning finns i Använda loggar.

Ta bort slutpunkten och distributionen

Använd följande kommando för att ta bort slutpunkten och alla dess underliggande distributioner:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait