Delen via


Een machine learning-model implementeren en beoordelen met behulp van een online-eindpunt

VAN TOEPASSING OP:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

In dit artikel leert u hoe u uw model implementeert op een online-eindpunt voor gebruik in realtime deductie. U begint met het implementeren van een model op uw lokale computer om fouten op te sporen. Vervolgens implementeert en test u het model in Azure, bekijkt u de implementatielogboeken en bewaakt u de SLA (Service Level Agreement). Aan het einde van dit artikel hebt u een schaalbaar HTTPS/REST-eindpunt dat u kunt gebruiken voor realtime deductie.

Online-eindpunten zijn eindpunten die worden gebruikt voor realtime deductie. Er zijn twee soorten online-eindpunten: beheerde online-eindpunten en Kubernetes-online-eindpunten. Zie Wat zijn Azure Machine Learning-eindpunten voor meer informatie over eindpunten en verschillen tussen beheerde online-eindpunten en Kubernetes Online-eindpunten?

Met beheerde online-eindpunten kunt u uw Machine Learning modellen op een kant-en-klare manier implementeren. Beheerde online-eindpunten werken met krachtige CPU- en GPU-machines in Azure op een schaalbare, volledig beheerde manier. Beheerde online-eindpunten zorgen voor het leveren, schalen, beveiligen en bewaken van uw modellen, waardoor u geen last meer hebt van de overhead van het instellen en beheren van de onderliggende infrastructuur.

Het belangrijkste voorbeeld in dit document maakt gebruik van beheerde online-eindpunten voor implementatie. Als u In plaats daarvan Kubernetes wilt gebruiken, raadpleegt u de notities in dit document die inline zijn met de discussie over beheerde online-eindpunten.

Vereisten

VAN TOEPASSING OP: Azure CLI ml-extensie v2 (huidige)

Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:

  • Op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) wordt gebruikt om toegang te verlenen tot bewerkingen in Azure Machine Learning. Als u de stappen in dit artikel wilt uitvoeren, moet aan uw gebruikersaccount de rol eigenaar of inzender voor de Azure Machine Learning-werkruimte zijn toegewezen, of een aangepaste rol die toestaat Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Als u de studio gebruikt om online-eindpunten/implementaties te maken/beheren, hebt u een extra machtiging Microsoft.Resources/deployments/write nodig van de eigenaar van de resourcegroep. Zie Toegang tot een Azure Machine Learning-werkruimte beheren voor meer informatie.

  • (Optioneel) Als u lokaal wilt implementeren, moet u Docker Engine installeren op uw lokale computer. We raden deze optie ten zeerste aan , dus het is eenvoudiger om problemen op te sporen.

  • Zorg ervoor dat er voldoende VM-quotum (virtuele machine) is toegewezen voor implementatie. Azure Machine Learning reserveert 20% van uw rekenresources voor het uitvoeren van upgrades op sommige VM-SKU's. Als u bijvoorbeeld 10 exemplaren in een implementatie aanvraagt, moet u een quotum hebben voor 12 voor elk aantal kernen voor de VM-SKU. Als er geen rekening wordt gehouden met de extra rekenresources, treedt er een fout op. Er zijn enkele VM-SKU's die zijn vrijgesteld van de extra quotumreservering. Zie quotatoewijzing voor virtuele machines voor implementatie voor meer informatie over quotumtoewijzing.

  • U kunt ook een quotum van de gedeelde quotumgroep van Azure Machine Learning gedurende een beperkte tijd gebruiken. Azure Machine Learning biedt een gedeelde quotumgroep van waaruit gebruikers in verschillende regio's toegang hebben tot het quotum voor het uitvoeren van tests gedurende een beperkte tijd, afhankelijk van de beschikbaarheid. Wanneer u de studio gebruikt voor het implementeren van Llama-2, Phi, Nemotron, Mistral, Dolly en Deci-DeciLM-modellen uit de modelcatalogus naar een beheerd online-eindpunt, kunt u met Azure Machine Learning gedurende korte tijd toegang krijgen tot de gedeelde quotumpool, zodat u tests kunt uitvoeren. Zie het gedeelde quotum van Azure Machine Learning voor meer informatie over de gedeelde quotumgroep.

Uw systeem voorbereiden

Omgevingsvariabelen instellen

Als u de standaardinstellingen voor de Azure CLI nog niet hebt ingesteld, slaat u de standaardinstellingen op. Voer deze code uit om te voorkomen dat de waarden voor uw abonnement, werkruimte en resourcegroep meerdere keren worden doorgegeven:

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

De opslagplaats met voorbeelden klonen

Als u dit artikel wilt volgen, kloont u eerst de opslagplaats met voorbeelden (azureml-examples). Voer vervolgens de volgende code uit om naar de map van cli/ de opslagplaats te gaan:

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

Tip

Gebruik --depth 1 dit om alleen de meest recente doorvoering naar de opslagplaats te klonen, waardoor de bewerking minder lang duurt.

De opdrachten in deze zelfstudie bevinden zich in de bestanden deploy-local-endpoint.sh en deploy-managed-online-endpoint.sh in de cli map en de YAML-configuratiebestanden bevinden zich in de endpoints/online/managed/sample/ submap.

Notitie

De YAML-configuratiebestanden voor Online Kubernetes-eindpunten bevinden zich in de endpoints/online/kubernetes/ submap.

Het eindpunt definiëren

Als u een online-eindpunt wilt definiëren, geeft u de eindpuntnaam en verificatiemodus op. Zie Online-eindpunten voor meer informatie over beheerde online-eindpunten.

Een eindpuntnaam instellen

Voer de volgende opdracht uit om de naam van uw eindpunt in te stellen. Vervang door YOUR_ENDPOINT_NAME een naam die uniek is in de Azure-regio. Zie eindpuntlimieten voor meer informatie over de naamgevingsregels.

Voer voor Linux deze opdracht uit:

export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"

Het eindpunt configureren

In het volgende fragment ziet u de eindpunten/online/managed/sample/endpoint.yml bestand:

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

De verwijzing voor de YAML-indeling van het eindpunt wordt beschreven in de volgende tabel. Zie de YAML-referentie voor het online-eindpunt voor meer informatie over het opgeven van deze kenmerken. Zie limieten voor online-eindpunten voor informatie over limieten met betrekking tot beheerde eindpunten.

Toets Beschrijving
$schema (Optioneel) Het YAML-schema. Als u alle beschikbare opties in het YAML-bestand wilt zien, kunt u het schema bekijken in het voorgaande codefragment in een browser.
name De naam van het eindpunt.
auth_mode Gebruiken key voor verificatie op basis van sleutels.
Gebruiken aml_token voor verificatie op basis van tokens op basis van Azure Machine Learning.
Gebruiken aad_token voor verificatie op basis van Microsoft Entra-tokens (preview).
Zie Clients verifiëren voor online-eindpunten voor meer informatie over verificatie.

De implementatie definiëren

Een implementatie is een set resources die vereist is voor het hosten van het model dat de werkelijke deductie uitvoert. In dit voorbeeld implementeert u een scikit-learn-model dat regressie uitvoert en een scorescript score.py gebruikt om het model uit te voeren op een bepaalde invoeraanvraag.

Zie Online-implementaties voor meer informatie over de belangrijkste kenmerken van een implementatie.

Een implementatie configureren

Uw implementatieconfiguratie maakt gebruik van de locatie van het model dat u wilt implementeren.

In het volgende fragment ziet u de eindpunten/online/managed/sample/blue-deployment.yml bestand, met alle vereiste invoer voor het configureren van een implementatie:

blue-deployment.yml

$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-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

In het bestand blue-deployment.yml worden de volgende implementatiekenmerken opgegeven:

  • model - geeft de modeleigenschappen inline op met behulp van de path (waar bestanden moeten worden geüpload). De CLI uploadt automatisch de modelbestanden en registreert het model met een automatisch gegenereerde naam.
  • environment - met behulp van inlinedefinities waaruit bestanden moeten worden geüpload, uploadt de CLI het conda.yaml bestand automatisch en registreert de omgeving. Later maakt de implementatie gebruik van de image (in dit voorbeeld) mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestvoor de basisinstallatiekopieën en worden de conda_file afhankelijkheden boven op de basisinstallatiekopieën geïnstalleerd.
  • code_configuration - tijdens de implementatie worden de lokale bestanden, zoals de Python-bron voor het scoremodel, geüpload vanuit de ontwikkelomgeving.

Zie de YAML-referentie voor het online-eindpunt voor meer informatie over het YAML-schema.

Notitie

Kubernetes-eindpunten gebruiken in plaats van beheerde online-eindpunten als rekendoel:

  1. Maak en koppel uw Kubernetes-cluster als rekendoel aan uw Azure Machine Learning-werkruimte met behulp van Azure Machine Learning-studio.
  2. Gebruik het EINDPUNT YAML om Kubernetes te targeten, in plaats van op de YAML van het beheerde eindpunt. U moet de YAML bewerken om de waarde te wijzigen in compute de naam van uw geregistreerde rekendoel. U kunt deze deployment.yaml gebruiken met aanvullende eigenschappen die van toepassing zijn op een Kubernetes-implementatie.

Alle opdrachten die in dit artikel worden gebruikt voor beheerde online-eindpunten zijn ook van toepassing op Kubernetes-eindpunten, met uitzondering van de volgende mogelijkheden die niet van toepassing zijn op Kubernetes-eindpunten:

Inzicht in het scorescript

Tip

De indeling van het scorescript voor online-eindpunten is dezelfde indeling die wordt gebruikt in de vorige versie van de CLI en in de Python SDK.

Het scorescript dat is opgegeven, code_configuration.scoring_script moet een init() functie en een run() functie hebben.

In dit voorbeeld wordt het score.py-bestand gebruikt: 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()

De init() functie wordt aangeroepen wanneer de container wordt geïnitialiseerd of gestart. Initialisatie vindt meestal kort nadat de implementatie is gemaakt of bijgewerkt. De init functie is de plaats om logica te schrijven voor globale initialisatiebewerkingen, zoals het opslaan van het model in het geheugen (zoals wordt weergegeven in dit score.py bestand).

De run() functie wordt aangeroepen telkens wanneer het eindpunt wordt aangeroepen en voert de werkelijke score en voorspelling uit. In dit score.py bestand extraheert de run() functie gegevens uit een JSON-invoer, roept de methode van predict() het scikit-learn-model aan en retourneert het voorspellingsresultaat.

Lokaal implementeren en fouten opsporen met behulp van een lokaal eindpunt

U wordt ten zeerste aangeraden uw eindpunt lokaal uit te voeren om uw code en configuratie te valideren en fouten op te sporen voordat u in Azure implementeert. Azure CLI en Python SDK ondersteunen lokale eindpunten en implementaties, terwijl Azure Machine Learning-studio en ARM-sjabloon dat niet doen.

Als u lokaal wilt implementeren, moet Docker Engine worden geïnstalleerd en uitgevoerd. Docker Engine wordt doorgaans gestart wanneer de computer wordt gestart. Als dat niet het probleem is, kunt u problemen met Docker Engine oplossen.

Tip

U kunt het Python-pakket van azure Machine Learning-deductieserver gebruiken om lokaal fouten in uw scorescript op te sporen zonder Docker Engine. Foutopsporing met de deductieserver helpt u bij het opsporen van fouten in het scorescript voordat u implementeert op lokale eindpunten, zodat u fouten kunt opsporen zonder dat dit wordt beïnvloed door de configuraties van de implementatiecontainer.

Zie Online-eindpunten opsporen voor meer informatie over het lokaal opsporen van fouten in online-eindpunten voordat u implementeert in Azure.

Het model lokaal implementeren

Maak eerst een eindpunt. Optioneel kunt u voor een lokaal eindpunt deze stap overslaan en rechtstreeks de implementatie (volgende stap) maken. Hierdoor worden de vereiste metagegevens gemaakt. Het lokaal implementeren van modellen is handig voor ontwikkelings- en testdoeleinden.

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

Maak nu een implementatie met de naam blue onder het eindpunt.

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

Met --local de vlag wordt de CLI om het eindpunt in de Docker-omgeving te implementeren.

Tip

Gebruik Visual Studio Code om uw eindpunten lokaal te testen en fouten op te sporen. Zie voor meer informatie debug online eindpunten lokaal in Visual Studio Code.

Controleer of de lokale implementatie is geslaagd

Controleer de implementatiestatus om te zien of het model zonder fouten is geïmplementeerd:

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

De uitvoer moet er ongeveer uitzien als in de volgende JSON. Het provisioning_state is Succeeded.

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

De volgende tabel bevat de mogelijke waarden voor provisioning_state:

Weergegeven als Beschrijving
Maken De resource wordt gemaakt.
Bijwerken De resource wordt bijgewerkt.
Verwijderen De resource wordt verwijderd.
Geslaagd De bewerking voor maken/bijwerken is voltooid.
Mislukt De bewerking maken/bijwerken/verwijderen is mislukt.

Het lokale eindpunt aanroepen om gegevens te scoren met behulp van uw model

Roep het eindpunt aan om het model te scoren met behulp van de invoke opdracht en queryparameters door te geven die zijn opgeslagen in een JSON-bestand:

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

Als u een REST-client (zoals curl) wilt gebruiken, moet u de score-URI hebben. Voer de score-URI uit az ml online-endpoint show --local -n $ENDPOINT_NAMEom de score-URI op te halen. Zoek het scoring_uri kenmerk in de geretourneerde gegevens.

Bekijk de logboeken voor uitvoer van de aanroepbewerking

In het voorbeeldbestand score.py registreert de run() methode uitvoer naar de console.

U kunt deze uitvoer weergeven met behulp van de get-logs opdracht:

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

Uw online-eindpunt implementeren in Azure

Implementeer vervolgens uw online-eindpunt in Azure. Als best practice voor productie raden we u aan het model en de omgeving te registreren die u in uw implementatie gaat gebruiken.

Uw model en omgeving registreren

U wordt aangeraden uw model en omgeving te registreren vóór de implementatie in Azure, zodat u hun geregistreerde namen en versies tijdens de implementatie kunt opgeven. Door uw assets te registreren, kunt u ze opnieuw gebruiken zonder ze telkens opnieuw te hoeven uploaden wanneer u implementaties maakt, waardoor de reproduceerbaarheid en traceerbaarheid toenemen.

Notitie

In tegenstelling tot implementatie in Azure biedt lokale implementatie geen ondersteuning voor het gebruik van geregistreerde modellen en omgevingen. In plaats daarvan maakt lokale implementatie gebruik van lokale modelbestanden en maakt alleen gebruik van omgevingen met lokale bestanden. Voor implementatie naar Azure kunt u lokale of geregistreerde assets (modellen en omgevingen) gebruiken. In deze sectie van het artikel maakt de implementatie in Azure gebruik van geregistreerde assets, maar in plaats daarvan hebt u de mogelijkheid om lokale assets te gebruiken. Zie Een implementatie configureren voor een voorbeeld van een implementatieconfiguratie waarmee lokale bestanden worden geüpload die moeten worden gebruikt voor lokale implementatie.

Als u het model en de omgeving wilt registreren, gebruikt u het formulier model: azureml:my-model:1 of environment: azureml:my-env:1. Voor registratie kunt u de YAML-definities van model en environment in afzonderlijke YAML-bestanden extraheren en de opdrachten az ml model create en az ml environment creategebruiken. Voor meer informatie over deze opdrachten voert u de opdracht uit az ml model create -h en az ml environment create -h.

  1. Maak een YAML-definitie voor het model:

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

    az ml model create -n my-model -v 1 -f ./model.yaml
    
  3. Maak een YAML-definitie voor de omgeving:

    $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. Registreer de omgeving:

    az ml environment create -n my-env -v 1 -f ./environment.yaml
    

Zie Uw model registreren als een asset in Machine Learning met behulp van de CLI voor meer informatie over het registreren van uw model als een asset. Zie Azure Machine Learning-omgevingen beheren met de CLI & SDK (v2) voor meer informatie over het maken van een omgeving.

Een implementatie configureren die gebruikmaakt van geregistreerde assets

Uw implementatieconfiguratie maakt gebruik van het geregistreerde model dat u wilt implementeren en uw geregistreerde omgeving.

Gebruik de geregistreerde assets (model en omgeving) in uw implementatiedefinitie. Het volgende codefragment toont het endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml bestand, met alle vereiste invoer voor het configureren van een implementatie:

blue-deployment-with-registered-assets.yml

$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

Verschillende typen CPU- en GPU-exemplaren en -installatiekopieën gebruiken

U kunt de typen CPU- of GPU-exemplaren en -installatiekopieën in uw implementatiedefinitie opgeven voor zowel lokale implementatie als implementatie in Azure.

Uw implementatiedefinitie in het blue-deployment-with-registered-assets.yml-bestand heeft een exemplaar voor algemeen gebruik Standard_DS3_v2 en een niet-GPU Docker-installatiekopie mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latestgebruikt. Kies voor GPU-rekenkracht een GPU-rekentype-SKU en een GPU Docker-installatiekopie.

Zie Beheerde online-eindpunten die vm-SKU's ondersteunen voor ondersteunde typen algemeen gebruik en GPU-exemplaren. Zie Basisinstallatiekopieën van Azure Machine Learning CPU en GPU voor een lijst met basisinstallatiekopieën van Azure Machine Learning.

Notitie

Als u Kubernetes wilt gebruiken in plaats van beheerde eindpunten, als rekendoel, raadpleegt u Inleiding tot Kubernetes-rekendoel.

Implementeer vervolgens uw online-eindpunt in Azure.

Implementeren op Azure

  1. Maak het eindpunt in de Azure-cloud.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  2. Maak de implementatie met de naam blue onder het eindpunt.

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

    Het maken van de implementatie kan maximaal 15 minuten duren, afhankelijk van of de onderliggende omgeving of installatiekopie voor het eerst wordt gebouwd. Volgende implementaties die dezelfde omgeving gebruiken, worden sneller verwerkt.

    Tip

    • Als u de CLI-console liever niet blokkeert, kunt u de vlag --no-wait toevoegen aan de opdracht. Met deze optie wordt echter de interactieve weergave van de implementatiestatus gestopt.

    Belangrijk

    De --all-traffic vlag in de code az ml online-deployment create die wordt gebruikt om de implementatie te maken, wijst 100% van het eindpuntverkeer toe aan de zojuist gemaakte blauwe implementatie. Hoewel dit handig is voor ontwikkelings- en testdoeleinden, kunt u voor productie verkeer naar de nieuwe implementatie routeren via een expliciete opdracht. Bijvoorbeeld: az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Zie Problemen met online-eindpuntimplementaties oplossen om fouten in uw implementatie op te sporen.

De status van het eindpunt controleren

  1. Gebruik de show opdracht om informatie weer te geven in het provisioning_state eindpunt en de implementatie:

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  2. Geef alle eindpunten in de werkruimte weer in een tabelindeling met behulp van de list opdracht:

    az ml online-endpoint list --output table
    

De status van de online-implementatie controleren

Controleer de logboeken om te zien of het model zonder fouten is geïmplementeerd.

  1. Gebruik de volgende CLI-opdracht om logboekuitvoer van een container weer te geven:

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

    Logboeken worden standaard opgehaald uit de container van de deductieserver. Voeg de --container storage-initializer vlag toe om logboeken uit de container voor de opslag-initialisatiefunctie weer te geven. Zie Containerlogboeken ophalen voor meer informatie over implementatielogboeken.

Het eindpunt aanroepen om gegevens te scoren met behulp van uw model

  1. Gebruik de invoke opdracht of een REST-client van uw keuze om het eindpunt aan te roepen en enkele gegevens te scoren:

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  2. Haal de sleutel op die wordt gebruikt om te verifiëren bij het eindpunt:

    Tip

    U kunt bepalen welke Microsoft Entra-beveiligingsprinciplen de verificatiesleutel kunnen ophalen door ze toe te wijzen aan een aangepaste rol waarmee Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action en Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Zie Toegang tot een Azure Machine Learning-werkruimte beheren voor meer informatie over het beheren van autorisatie voor werkruimten.

    ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
    
  3. Gebruik curl om gegevens te beoordelen.

    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
    

    U ziet dat u show en opdrachten gebruikt om get-credentials de verificatiereferenties op te halen. U ziet ook dat u de --query vlag gebruikt om alleen de kenmerken te filteren die nodig zijn. Zie De uitvoer van de Azure CLI-opdracht opvragen voor meer informatie over de --query vlag.

  4. Als u de aanroeplogboeken wilt zien, voert u de opdracht opnieuw uit get-logs .

(Optioneel) De implementatie bijwerken

Als u de code, het model of de omgeving wilt bijwerken, werkt u het YAML-bestand bij en voert u de az ml online-endpoint update opdracht uit.

Notitie

Als u het aantal exemplaren bijwerkt (om uw implementatie te schalen) samen met andere modelinstellingen (zoals code, model of omgeving) in één update opdracht, wordt de schaalbewerking eerst uitgevoerd en worden de andere updates toegepast. Het is een goede gewoonte om deze bewerkingen afzonderlijk uit te voeren in een productieomgeving.

Ga als volgt te werk om te begrijpen hoe update het werkt:

  1. Open het bestand online/model-1/onlinescoring/score.py.

  2. De laatste regel van de init() functie wijzigen: Na logging.info("Init complete"), toevoegen logging.info("Updated successfully").

  3. Sla het bestand op.

  4. Voer deze opdracht uit:

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

    Notitie

    Bijwerken met behulp van YAML is declaratief. Dat wil gezegd, wijzigingen in de YAML worden doorgevoerd in de onderliggende Azure Resource Manager-resources (eindpunten en implementaties). Een declaratieve benadering faciliteert GitOps: alle wijzigingen in eindpunten en implementaties (zelfs instance_count) doorlopen de YAML.

    Tip

    • U kunt algemene updateparameters, zoals de --set parameter, gebruiken met de CLI-opdracht update om kenmerken in uw YAML te overschrijven of om specifieke kenmerken in te stellen zonder deze door te geven in het YAML-bestand. Het gebruik --set van één kenmerk is vooral waardevol in ontwikkelings- en testscenario's. Als u bijvoorbeeld de waarde voor de instance_count eerste implementatie omhoog wilt schalen, kunt u de --set instance_count=2 vlag gebruiken. Omdat de YAML echter niet wordt bijgewerkt, faciliteert deze techniek GitOps niet.
    • Het opgeven van het YAML-bestand is NIET verplicht. Als u bijvoorbeeld een andere gelijktijdigheidsinstelling voor een bepaalde implementatie wilt testen, kunt u iets proberen als az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Hiermee blijft alle bestaande configuratie behouden, maar worden alleen de opgegeven parameters bijgewerkt.
  5. Omdat u de init() functie hebt gewijzigd, die wordt uitgevoerd wanneer het eindpunt wordt gemaakt of bijgewerkt, wordt het bericht Updated successfully in de logboeken weergegeven. Haal de logboeken op door het volgende uit te voeren:

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

De update opdracht werkt ook met lokale implementaties. Gebruik dezelfde az ml online-deployment update opdracht met de --local vlag.

Notitie

De update voor de implementatie in deze sectie is een voorbeeld van een in-place rolling update.

  • Voor een beheerd online-eindpunt wordt de implementatie bijgewerkt naar de nieuwe configuratie met 20% knooppunten tegelijk. Als de implementatie 10 knooppunten heeft, worden twee knooppunten tegelijk bijgewerkt.
  • Voor een Online-eindpunt van Kubernetes maakt het systeem iteratief een nieuw implementatie-exemplaar met de nieuwe configuratie en verwijdert het oude exemplaar.
  • Voor productiegebruik moet u een blauwgroene implementatie overwegen, die een veiliger alternatief biedt voor het bijwerken van een webservice.

(Optioneel) Automatische schaalaanpassing configureren

Automatisch schalen wordt uitgevoerd met de juiste hoeveelheid resources om de belasting van uw toepassing te verwerken. Beheerde online-eindpunten bieden ondersteuning voor automatisch schalen via integratie met de functie voor automatische schaalaanpassing van Azure Monitor. Als u automatische schaalaanpassing wilt configureren, raadpleegt u Online-eindpunten automatisch schalen.

(Optioneel) SLA bewaken met behulp van Azure Monitor

Als u metrische gegevens wilt weergeven en waarschuwingen wilt instellen op basis van uw SLA, voert u de stappen uit die worden beschreven in Online-eindpunten bewaken.

(Optioneel) Integreren met Log Analytics

De get-logs opdracht voor CLI of de get_logs methode voor SDK biedt alleen de laatste honderd regels logboeken van een automatisch geselecteerd exemplaar. Log Analytics biedt echter een manier om logboeken duurzaam op te slaan en te analyseren. Zie Online-eindpunten bewaken voor meer informatie over het gebruik van logboekregistratie.

Het eindpunt en de implementatie verwijderen

Verwijder het eindpunt en alle onderliggende implementaties:

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