In dit artikel leert u hoe u een nieuwe versie van een machine learning-model in productie implementeert zonder onderbrekingen te veroorzaken. U gebruikt een blauwgroene implementatiestrategie (ook wel een veilige implementatiestrategie genoemd) om een nieuwe versie van een webservice in productie te introduceren. Met deze strategie kunt u uw nieuwe versie van de webservice implementeren voor een kleine subset van gebruikers of aanvragen voordat u deze volledig uitrolt.
In dit artikel wordt ervan uitgegaan dat u online-eindpunten gebruikt, dat wil gezegd eindpunten die worden gebruikt voor onlinedeductie (realtime). 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 de verschillen tussen beheerde online-eindpunten en Kubernetes Online-eindpunten.
In het hoofdvoorbeeld in dit artikel worden beheerde online-eindpunten gebruikt voor implementatie. Als u in plaats daarvan Kubernetes-eindpunten wilt gebruiken, raadpleegt u de notities in dit document die inline zijn met de discussie over beheerde online-eindpunten.
In dit artikel leert u:
Een online-eindpunt definiëren met een implementatie met de naam 'blauw' voor versie 1 van een model
De blauwe implementatie schalen zodat er meer aanvragen kunnen worden verwerkt
Implementeer versie 2 van het model (de 'groene' implementatie genoemd) naar het eindpunt, maar verzend de implementatie geen live verkeer
De groene implementatie geïsoleerd testen
Een percentage liveverkeer naar de groene implementatie spiegelen om dit te valideren
Een klein percentage liveverkeer verzenden naar de groene implementatie
Al het liveverkeer verzenden naar de groene implementatie
De nu ongebruikte v1 blauwe implementatie verwijderen
Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:
De Azure CLI en de ml extensie voor de Azure CLI. Zie De CLI (v2) installeren, instellen en gebruiken voor meer informatie.
Belangrijk
In de CLI-voorbeelden in dit artikel wordt ervan uitgegaan dat u de Bash-shell (of compatibele) shell gebruikt. Bijvoorbeeld vanuit een Linux-systeem of Windows-subsysteem voor Linux.
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/*. 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.
Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:
Een Azure Machine Learning-werkruimte. Als u er nog geen hebt, gebruikt u de stappen in de quickstart: artikel Werkruimtebronnen maken om er een te maken.
Gebruik de volgende opdracht om de Python SDK v2 te installeren:
pip install azure-ai-ml azure-identity
Gebruik de volgende opdracht om een bestaande installatie van de SDK bij te werken naar de nieuwste versie:
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/*. 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.
Voordat u de stappen in dit artikel volgt, moet u ervoor zorgen dat u over de volgende vereisten beschikt:
Een Azure Machine Learning-werkruimte en een rekenproces. Als u deze niet hebt, gebruikt u de stappen in de quickstart: artikel Werkruimtebronnen maken om deze te maken.
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/*. Zie Toegang tot een Azure Machine Learning-werkruimte beheren voor meer informatie.
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>
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. Dit vermindert de tijd om de bewerking te voltooien.
De opdrachten in deze zelfstudie bevinden zich in het bestand deploy-safe-rollout-online-endpoints.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.
De opslagplaats met voorbeelden klonen
Als u de trainingsvoorbeelden wilt uitvoeren, kloont u eerst de opslagplaats met voorbeelden (azureml-examples). Ga vervolgens naar de azureml-examples/sdk/python/endpoints/online/managed map:
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Tip
Gebruik --depth 1 dit om alleen de meest recente doorvoering naar de opslagplaats te klonen. Dit vermindert de tijd om de bewerking te voltooien.
De informatie in dit artikel is gebaseerd op het notebook online-endpoints-safe-rollout.ipynb . Het bevat dezelfde inhoud als dit artikel, hoewel de volgorde van de codes iets anders is.
Verbinding maken met Azure Machine Learning-werkruimte
De werkruimte is de resource op het hoogste niveau voor Azure Machine Learning en biedt een centrale plek om te werken met alle artefacten die u maakt wanneer u Azure Machine Learning gebruikt. In deze sectie maken we verbinding met de werkruimte waar u implementatietaken uitvoert. Als u mee wilt doen, opent u uw online-endpoints-safe-rollout.ipynb notitieblok.
Importeer de vereiste bibliotheken:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration,
)
from azure.identity import DefaultAzureCredential
Notitie
Als u het online-eindpunt van Kubernetes gebruikt, importeert u de KubernetesOnlineEndpoint en KubernetesOnlineDeployment klasse uit de azure.ai.ml.entities bibliotheek.
Configureer werkruimtegegevens en haal een ingang op voor de werkruimte:
Als u verbinding wilt maken met een werkruimte, hebben we id-parameters nodig: een abonnement, resourcegroep en werkruimtenaam. We gebruiken deze gegevens in de MLClient van azure.ai.ml om een ingang te krijgen voor de vereiste Azure Machine Learning-werkruimte. In dit voorbeeld wordt de standaard Azure-verificatie gebruikt.
# enter details of your AML workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Als Git op uw lokale computer is geïnstalleerd, kunt u de instructies volgen om de opslagplaats met voorbeelden te klonen. Volg anders de instructies voor het downloaden van bestanden uit de opslagplaats met voorbeelden.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Tip
Gebruik --depth 1 dit om alleen de meest recente doorvoering naar de opslagplaats te klonen, waardoor de bewerking minder lang duurt.
Bestanden downloaden uit de voorbeeldenopslagplaats
Als u de opslagplaats met voorbeelden hebt gekloond, bevat uw lokale computer al kopieën van de bestanden voor dit voorbeeld en kunt u doorgaan naar de volgende sectie. Als u de opslagplaats niet hebt gekloond, kunt u deze downloaden naar uw lokale computer.
Ga naar de <> knop Code op de pagina en selecteer ZIP downloaden op het tabblad Lokaal .
Zoek de modelmap /cli/endpoints/online/model-1/model en het scorescript /cli/endpoints/online/model-1/onlinescoring/score.py voor een eerste model model-1.
Zoek de modelmap /cli/endpoints/online/model-2/model en het scorescript /cli/endpoints/online/model-2/onlinescoring/score.py voor een tweede model model-2.
Het eindpunt en de implementatie definiëren
Online-eindpunten worden gebruikt voor online (realtime)-deductie. Online-eindpunten bevatten implementaties die gereed zijn om gegevens van clients te ontvangen en antwoorden in realtime terug te sturen.
Een eindpunt definiëren
De volgende tabel bevat belangrijke kenmerken die moeten worden opgegeven wanneer u een eindpunt definieert.
De verificatiemethode voor het eindpunt. Kies tussen verificatie key op basis van sleutels en verificatie aml_tokenop basis van een Azure Machine Learning-token. Een sleutel verloopt niet, maar een token verloopt wel. Zie Verifiëren bij een online-eindpunt voor meer informatie over verificatie.
Beschrijving
Beschrijving van het eindpunt.
Tags
Woordenlijst met tags voor het eindpunt.
Verkeer
Regels voor het routeren van verkeer tussen implementaties. Vertegenwoordig het verkeer als een woordenlijst van sleutel-waardeparen, waarbij de sleutel de implementatienaam en waarde vertegenwoordigt het percentage verkeer naar die implementatie. U kunt het verkeer alleen instellen wanneer de implementaties onder een eindpunt zijn gemaakt. U kunt ook het verkeer voor een online-eindpunt bijwerken nadat de implementaties zijn gemaakt. Zie Een klein percentage liveverkeer toewijzen aan de nieuwe implementatie voor meer informatie over het gebruik van gespiegeld verkeer.
Een implementatie is een set resources die vereist is voor het hosten van het model dat de werkelijke deductie uitvoert. In de volgende tabel worden de belangrijkste kenmerken beschreven die moeten worden opgegeven wanneer u een implementatie definieert.
Kenmerk
Beschrijving
Naam
Vereist. Naam van de implementatie.
Naam Eeindpunt
Vereist. De naam van het eindpunt voor het maken van de implementatie onder.
Modelleren
Het model dat moet worden gebruikt voor de implementatie. Deze waarde kan een verwijzing zijn naar een bestaand versiemodel in de werkruimte of een inline modelspecificatie. In het voorbeeld hebben we een scikit-learn-model dat regressie uitvoert.
Codepad
Het pad naar de map in de lokale ontwikkelomgeving die alle Python-broncode bevat voor het scoren van het model. U kunt geneste mappen en pakketten gebruiken.
Scorescript
Python-code waarmee het model wordt uitgevoerd op een bepaalde invoeraanvraag. Deze waarde kan het relatieve pad naar het scorebestand in de broncodemap zijn. Het scorescript ontvangt gegevens die zijn verzonden naar een geïmplementeerde webservice en geeft deze door aan het model. Het script voert vervolgens het model uit en retourneert de reactie op de client. Het scorescript is specifiek voor uw model en moet inzicht hebben in de gegevens die het model als invoer verwacht en als uitvoer retourneert. In dit voorbeeld hebben we een score.py-bestand . Deze Python-code moet een init() functie en een run() functie hebben. De init() functie wordt aangeroepen nadat het model is gemaakt of bijgewerkt (u kunt deze bijvoorbeeld gebruiken om het model in het geheugen op te cachen). De run() functie wordt aangeroepen bij elke aanroep van het eindpunt om de werkelijke score en voorspelling uit te voeren.
Omgeving
Vereist. De omgeving voor het hosten van het model en de code. Deze waarde kan een verwijzing zijn naar een bestaande versieomgeving in de werkruimte of een inline-omgevingsspecificatie. De omgeving kan een Docker-installatiekopieën zijn met Conda-afhankelijkheden, een Dockerfile of een geregistreerde omgeving.
Type instantie
Vereist. De VM-grootte die moet worden gebruikt voor de implementatie. Zie de lijst met beheerde online-eindpunten voor SKU's voor de lijst met ondersteunde grootten.
Aantal exemplaren
Vereist. Het aantal exemplaren dat moet worden gebruikt voor de implementatie. Baseer de waarde op de workload die u verwacht. Voor hoge beschikbaarheid raden we u aan om de waarde ten minste 3in te stellen op . We reserveren een extra 20% voor het uitvoeren van upgrades. Zie limieten voor online-eindpunten voor meer informatie.
Stel eerst de naam van het eindpunt in en configureer deze. In dit artikel gebruikt u het eindpunten/online/managed/sample/endpoint.yml-bestand om het eindpunt te configureren. In het volgende fragment wordt de inhoud van het bestand weergegeven:
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 online-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. Gebruik de az ml online-endpoint get-credentials opdracht om het meest recente token op te halen.
Een online-eindpunt maken:
Stel de naam van uw eindpunt in:
Voer voor Unix deze opdracht uit (vervang door YOUR_ENDPOINT_NAME een unieke naam):
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Belangrijk
Eindpuntnamen moeten uniek zijn binnen een Azure-regio. In de Azure-regio westus2 kan er bijvoorbeeld slechts één eindpunt met de naam my-endpointzijn.
Maak het eindpunt in de cloud:
Voer de volgende code uit om het endpoint.yml bestand te gebruiken om het eindpunt te configureren:
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
De 'blauwe' implementatie maken
In dit artikel gebruikt u het bestand endpoints/online/managed/sample/blue-deployment.yml om de belangrijkste aspecten van de implementatie te configureren. In het volgende fragment wordt de inhoud van het bestand weergegeven:
Als u een implementatie wilt maken met de naam blue van uw eindpunt, voert u de volgende opdracht uit om het bestand te gebruiken om het blue-deployment.yml te configureren
az ml online-deployment create --name blue --endpoint-name $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
Belangrijk
De --all-traffic vlag in de az ml online-deployment create vlag wijst 100% van het eindpuntverkeer toe aan de zojuist gemaakte blauwe implementatie.
In het blue-deployment.yaml bestand geven we inline op path waar bestanden moeten worden geüpload. De CLI uploadt automatisch de bestanden en registreert het model en de omgeving. Als best practice voor productie moet u het model en de omgeving registreren en de geregistreerde naam en versie afzonderlijk opgeven in de YAML. Gebruik 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.
Gebruik de ManagedOnlineEndpoint klasse om een beheerd online-eindpunt te maken. Met deze klasse kunnen gebruikers de belangrijkste aspecten van het eindpunt configureren.
Configureer het eindpunt:
# Creating a unique endpoint name with current datetime to avoid conflicts
import random
online_endpoint_name = "endpt-moe-" + str(random.randint(0, 10000))
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
tags={"foo": "bar"},
)
Notitie
Als u een Online-eindpunt voor Kubernetes wilt maken, gebruikt u de KubernetesOnlineEndpoint klasse.
Gebruik de ManagedOnlineDeployment klasse om een implementatie te maken voor uw beheerde online-eindpunt. Met deze klasse kunnen gebruikers de belangrijkste aspecten van de implementatie configureren.
In de volgende tabel worden de kenmerken van een deployment:
In dit voorbeeld geven we inline de path (waar bestanden moeten worden geüpload) op. De SDK uploadt automatisch de bestanden en registreert het model en de omgeving. Als best practice voor productie moet u het model en de omgeving registreren en de geregistreerde naam en versie afzonderlijk in de codes opgeven.
Wanneer u een beheerd online-eindpunt in de Azure Machine Learning-studio maakt, moet u een eerste implementatie voor het eindpunt definiëren. Voordat u een implementatie kunt definiëren, moet u een geregistreerd model in uw werkruimte hebben. Laten we beginnen met het registreren van het model dat moet worden gebruikt voor de implementatie.
Uw model registreren
Een modelregistratie is een logische entiteit in de werkruimte. Deze entiteit kan één modelbestand of een map met meerdere bestanden bevatten. Als best practice voor productie moet u het model en de omgeving registreren. Bij het maken van het eindpunt en de implementatie in dit artikel wordt ervan uitgegaan dat u de modelmap hebt geregistreerd die het model bevat.
Voer de volgende stappen uit om het voorbeeldmodel te registreren:
Selecteer in de linkernavigatiebalk de pagina Modellen .
Selecteer Registreren en kies vervolgens Uit lokale bestanden.
Selecteer Niet-opgegeven type voor het modeltype.
Selecteer Bladeren en kies Bladeren in de map Bladeren.
Selecteer de \azureml-examples\cli\endpoints\online\model-1\model map in de lokale kopie van de opslagplaats die u eerder hebt gekloond of gedownload. Wanneer u hierom wordt gevraagd, selecteert u Uploaden en wacht u totdat het uploaden is voltooid.
Selecteer Volgende nadat het uploaden van de map is voltooid.
Voer een beschrijvende naam in voor het model. Bij de stappen in dit artikel wordt ervan uitgegaan dat het model de naam model-1heeft.
Selecteer Volgende en registreer u om de registratie te voltooien.
Herhaal de vorige stappen om een model-2 bestand te registreren bij de \azureml-examples\cli\endpoints\online\model-2\model map in de lokale kopie van de opslagplaats die u eerder hebt gekloond of gedownload.
Zie Een omgeving maken voor meer informatie over het maken van een omgeving in de studio.
Een beheerd online-eindpunt en de 'blauwe' implementatie maken
Gebruik de Azure Machine Learning-studio om rechtstreeks in uw browser een beheerd online-eindpunt te maken. Wanneer u een beheerd online-eindpunt in de studio maakt, moet u een eerste implementatie definiëren. U kunt geen leeg beheerd online-eindpunt maken.
Eén manier om een beheerd online-eindpunt in de studio te maken, is op de pagina Modellen . Deze methode biedt ook een eenvoudige manier om een model toe te voegen aan een bestaande beheerde online-implementatie. Ga als volgende te werk om het model te implementeren dat model-1 u eerder hebt geregistreerd in de sectie Uw model registreren:
Selecteer in de linkernavigatiebalk de pagina Modellen .
Selecteer het model met de naam model-1 door de cirkel naast de naam te controleren.
Selecteer Realtime-eindpunt implementeren>.
Met deze actie wordt een venster geopend waarin u details over uw eindpunt kunt opgeven.
Voer een eindpuntnaam in.
Behoud de standaardselecties: beheerd voor het rekentype en verificatie op basis van sleutels voor het verificatietype.
Selecteer Volgende totdat u bij de pagina Implementatie bent. Voer hier de volgende taken uit:
Geef de implementatie de naam 'blauw'.
Schakel het selectievakje in voor Application Insights-diagnostische gegevens en gegevensverzameling inschakelen, zodat u later grafieken van de activiteiten van uw eindpunt in de studio kunt bekijken.
Selecteer Volgende om naar de pagina Omgeving te gaan. Voer hier de volgende stappen uit:
Blader en selecteer in het vak Scorebestand en afhankelijkheden het \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py bestand in de opslagplaats die u eerder hebt gekloond of gedownload.
Begin te typen sklearn in het zoekvak boven de lijst met omgevingen en selecteer de azureML-sklearn-0.24 gecureerde omgeving.
Selecteer Volgende om naar de pagina Compute te gaan. Hier houdt u de standaardselectie voor de virtuele machine 'Standard_DS3_v2' en wijzigt u het aantal exemplaren in 1.
Selecteer Volgende om de standaardverkeerstoewijzing (100%) te accepteren voor de blauwe implementatie.
Controleer uw implementatie-instellingen en selecteer de knop Maken .
U kunt ook een beheerd online-eindpunt maken op de pagina Eindpunten in de studio.
Selecteer in de linkernavigatiebalk de pagina Eindpunten .
Selecteer + Maken.
Met deze actie wordt een venster geopend waarin u details over uw eindpunt en implementatie kunt opgeven. Voer instellingen in voor uw eindpunt en implementatie, zoals beschreven in de vorige stappen 5-11, waarbij standaardwaarden worden geaccepteerd totdat u wordt gevraagd om de implementatie te maken .
Uw bestaande implementatie bevestigen
Een manier om uw bestaande implementatie te bevestigen, is door uw eindpunt aan te roepen, zodat het uw model kan beoordelen voor een bepaalde invoeraanvraag. Wanneer u uw eindpunt aanroept via de CLI of Python SDK, kunt u ervoor kiezen om de naam op te geven van de implementatie die het binnenkomende verkeer ontvangt.
Notitie
In tegenstelling tot de CLI of Python SDK moet u Azure Machine Learning-studio een implementatie opgeven wanneer u een eindpunt aanroept.
Eindpunt aanroepen met implementatienaam
Als u het eindpunt aanroept met de naam van de implementatie die verkeer ontvangt, stuurt Azure Machine Learning het verkeer van het eindpunt rechtstreeks naar de opgegeven implementatie en retourneert de uitvoer. U kunt de --deployment-name optie voor CLI v2 of deployment_name de optie voor SDK v2 gebruiken om de implementatie op te geven.
Eindpunt aanroepen zonder implementatie op te geven
Als u het eindpunt aanroept zonder de implementatie op te geven die verkeer ontvangt, stuurt Azure Machine Learning het binnenkomende verkeer van het eindpunt naar de implementatie(s) in het eindpunt op basis van de instellingen voor verkeerbeheer.
Instellingen voor verkeersbeheer wijzen opgegeven percentages van binnenkomend verkeer toe aan elke implementatie in het eindpunt. Als uw verkeersregels bijvoorbeeld aangeven dat een bepaalde implementatie in uw eindpunt 40% van de tijd binnenkomend verkeer ontvangt, routeert Azure Machine Learning 40% van het verkeer van het eindpunt naar die implementatie.
Met behulp van het MLClient eerder gemaakte bestand krijgt u een ingang naar het eindpunt. Het eindpunt kan worden aangeroepen met behulp van de invoke opdracht met de volgende parameters:
endpoint_name - Naam van het eindpunt
request_file - Bestand met aanvraaggegevens
deployment_name - Naam van de specifieke implementatie die moet worden getest in een eindpunt
We verzenden een voorbeeldaanvraag met behulp van een json-bestand .
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Beheerde online-eindpunten weergeven
U kunt al uw beheerde online-eindpunten weergeven op de pagina Eindpunten . Ga naar de pagina Details van het eindpunt om kritieke informatie te vinden, waaronder de eindpunt-URI, status, testhulpprogramma's, activiteitsmonitoren, implementatielogboeken en voorbeeldcode voor verbruik:
Selecteer Eindpunten in de linkernavigatiebalk. Hier ziet u een lijst met alle eindpunten in de werkruimte.
(Optioneel) Maak een filter voor het rekentype om alleen beheerde rekentypen weer te geven.
Selecteer een eindpuntnaam om de pagina Details van het eindpunt weer te geven.
Het eindpunt testen met voorbeeldgegevens
Gebruik het tabblad Testen op de detailpagina van het eindpunt om uw beheerde online-implementatie te testen. Voer voorbeeldinvoer in en bekijk de resultaten.
Selecteer het tabblad Testen op de detailpagina van het eindpunt. De blauwe implementatie is al geselecteerd in de vervolgkeuzelijst.
az ml online-deployment update --name blue --endpoint-name $ENDPOINT_NAME --set instance_count=2
Notitie
U ziet dat we --set in de bovenstaande opdracht de implementatieconfiguratie overschrijven. U kunt het yaml-bestand ook bijwerken en doorgeven als invoer aan de update opdracht met behulp van de --file invoer.
Met behulp van de MLClient eerder gemaakte implementatie krijgen we een ingang voor de implementatie. De implementatie kan worden geschaald door de instance_count.
# Get the details for online endpoint
endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)
# existing traffic details
print(endpoint.traffic)
# Get the scoring URI
print(endpoint.scoring_uri)
Gebruik de volgende instructies om de implementatie omhoog of omlaag te schalen door het aantal exemplaren aan te passen:
Op de pagina Details van het eindpunt. Zoek de kaart voor de blauwe implementatie.
Selecteer het bewerkingspictogram in de koptekst van de kaart van de blauwe implementatie.
Wijzig het aantal exemplaren in 2.
Selecteer Bijwerken.
Een nieuw model implementeren, maar het verkeer nog niet verzenden
az ml online-deployment create --name green --endpoint-name $ENDPOINT_NAME -f endpoints/online/managed/sample/green-deployment.yml
Omdat er geen verkeer expliciet aan ons is greentoegewezen, is er geen verkeer toegewezen. U kunt controleren of u dit kunt doen met behulp van de opdracht:
az ml online-endpoint show -n $ENDPOINT_NAME --query traffic
De nieuwe implementatie testen
Hoewel green 0% van het verkeer is toegewezen, kunt u het rechtstreeks aanroepen door de --deployment naam op te geven:
az ml online-endpoint invoke --name $ENDPOINT_NAME --deployment-name green --request-file endpoints/online/model-2/sample-request.json
Als u een REST-client wilt gebruiken om de implementatie rechtstreeks aan te roepen zonder verkeersregels te doorlopen, stelt u de volgende HTTP-header in: azureml-model-deployment: <deployment-name> Het onderstaande codefragment gebruikt curl om de implementatie rechtstreeks aan te roepen. Het codefragment moet werken in Unix-/WSL-omgevingen:
# get the scoring uri
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
# use curl to invoke the endpoint
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --header "azureml-model-deployment: green" --data @endpoints/online/model-2/sample-request.json
Maak een nieuwe implementatie voor uw beheerde online-eindpunt en geef de implementatie greeneen naam:
# use MLClient to create green deployment
ml_client.online_deployments.begin_create_or_update(green_deployment).result()
Notitie
Als u een implementatie voor een Online-eindpunt voor Kubernetes maakt, gebruikt u de KubernetesOnlineDeployment klasse en geeft u een Kubernetes-exemplaartype op in uw Kubernetes-cluster.
De nieuwe implementatie testen
Hoewel green er 0% van het verkeer is toegewezen, kunt u het eindpunt en de implementatie nog steeds aanroepen met het json-bestand .
Maak een nieuwe implementatie om toe te voegen aan uw beheerde online-eindpunt en geef de implementatie greeneen naam.
Op de pagina Eindpuntdetails
Selecteer + Knop Implementatie toevoegen op de pagina Details van het eindpunt.
Selecteer Een model implementeren.
Selecteer Volgende om naar de pagina Model te gaan en selecteer het modelmodel-2.
Selecteer Volgende om naar de pagina Implementatie te gaan en de volgende taken uit te voeren:
Geef de implementatie de naam 'groen'.
Schakel diagnostische gegevens en gegevensverzameling van Application Insights in.
Selecteer Volgende om naar de pagina Omgeving te gaan. Voer hier de volgende stappen uit:
Blader en selecteer in het vak Scorebestand en afhankelijkheden het \azureml-examples\cli\endpoints\online\model-2\onlinescoring\score.py bestand in de opslagplaats die u eerder hebt gekloond of gedownload.
Begin te typen sklearn in het zoekvak boven de lijst met omgevingen en selecteer de azureML-sklearn-0.24 gecureerde omgeving.
Selecteer Volgende om naar de pagina Compute te gaan. Hier houdt u de standaardselectie voor de virtuele machine 'Standard_DS3_v2' en wijzigt u het aantal exemplaren in 1.
Selecteer Volgende om naar de pagina Verkeer te gaan. Houd hier de standaardverkeerstoewijzing aan de implementaties (100% verkeer naar 'blauw' en 0% verkeer naar 'groen').
Selecteer Volgende om uw implementatie-instellingen te controleren.
Selecteer Maken om de implementatie te maken.
U kunt ook de pagina Modellen gebruiken om een implementatie toe te voegen:
Selecteer in de linkernavigatiebalk de pagina Modellen .
Selecteer een model door de cirkel naast de modelnaam te controleren.
Selecteer Realtime-eindpunt implementeren>.
Kies ervoor om te implementeren naar een bestaand beheerd online-eindpunt.
Volg de vorige stappen 3 tot en met 9 om het maken van de groene implementatie te voltooien.
Notitie
Wanneer u een nieuwe implementatie toevoegt aan een eindpunt, kunt u de verkeersbalans tussen implementaties aanpassen op de pagina Verkeer. Op dit moment moet u echter de standaardverkeerstoewijzing voor de implementaties behouden (100% verkeer naar 'blauw' en 0% verkeer naar 'groen').
De nieuwe implementatie testen
Hoewel green er 0% van het verkeer is toegewezen, kunt u het eindpunt en de implementatie nog steeds aanroepen. Gebruik het tabblad Testen op de detailpagina van het eindpunt om uw beheerde online-implementatie te testen. Voer voorbeeldinvoer in en bekijk de resultaten.
Selecteer het tabblad Testen op de detailpagina van het eindpunt.
Selecteer de groene implementatie in de vervolgkeuzelijst.
Zodra u uw green implementatie hebt getest, kunt u een percentage van het liveverkeer naar de implementatie spiegelen (of kopiëren). Bij verkeerspiegeling (ook wel schaduwen genoemd) worden de resultaten die naar clients worden geretourneerd, niet gewijzigd. Aanvragen stromen nog steeds 100% naar de blue implementatie. Het gespiegelde percentage van het verkeer wordt gekopieerd en verzonden naar de green implementatie, zodat u metrische gegevens en logboekregistratie kunt verzamelen zonder dat dit van invloed is op uw clients. Spiegelen is handig als u een nieuwe implementatie wilt valideren zonder dat dit van invloed is op clients. U kunt spiegeling bijvoorbeeld gebruiken om te controleren of de latentie binnen acceptabele grenzen valt of om te controleren of er geen HTTP-fouten zijn. Het testen van de nieuwe implementatie met verkeerspiegeling/schaduwen wordt ook wel schaduwtests genoemd. De implementatie die het gespiegelde verkeer ontvangt (in dit geval de green implementatie) kan ook de schaduwimplementatie worden genoemd.
Spiegeling heeft de volgende beperkingen:
Spiegeling wordt ondersteund voor de CLI (v2) (versie 2.4.0 of hoger) en Python SDK (v2) (versie 1.0.0 of hoger). Als u een oudere versie van CLI/SDK gebruikt om een eindpunt bij te werken, verliest u de instelling voor spiegelverkeer.
Spiegeling wordt momenteel niet ondersteund voor Online-eindpunten van Kubernetes.
U kunt verkeer spiegelen naar slechts één implementatie in een eindpunt.
Het maximale percentage verkeer dat u kunt spiegelen is 50%. Deze limiet is om het effect op het quotum voor eindpuntbandbreedte (standaard 5 MBPS) te verminderen. Uw eindpuntbandbreedte wordt beperkt als u het toegewezen quotum overschrijdt. Zie Beheerde online-eindpunten bewaken voor informatie over het bewaken van bandbreedtebeperking.
Let ook op het volgende gedrag:
Een implementatie kan worden geconfigureerd om alleen live verkeer of gespiegeld verkeer te ontvangen, niet beide.
Wanneer u een eindpunt aanroept, kunt u de naam van alle implementaties ( zelfs een schaduwimplementatie) opgeven om de voorspelling te retourneren.
Wanneer u een eindpunt aanroept met de naam van de implementatie die binnenkomend verkeer ontvangt, spiegelt Azure Machine Learning geen verkeer naar de schaduwimplementatie. Azure Machine Learning spiegelt verkeer naar de schaduwimplementatie van verkeer dat naar het eindpunt wordt verzonden wanneer u geen implementatie opgeeft.
Nu gaan we de groene implementatie zo instellen dat 10% van het gespiegelde verkeer wordt ontvangen. Clients ontvangen nog steeds alleen voorspellingen van de blauwe implementatie.
Met de volgende opdracht wordt 10% van het verkeer naar de green implementatie gespiegeld:
az ml online-endpoint update --name $ENDPOINT_NAME --mirror-traffic "green=10"
U kunt spiegelverkeer testen door het eindpunt meerdere keren aan te roepen zonder een implementatie op te geven om het binnenkomende verkeer te ontvangen:
for i in {1..20} ; do
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
done
U kunt controleren of het specifieke percentage van het verkeer naar de green implementatie is verzonden door de logboeken van de implementatie te bekijken:
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Na het testen kunt u het gespiegelde verkeer instellen op nul om spiegeling uit te schakelen:
az ml online-endpoint update --name $ENDPOINT_NAME --mirror-traffic "green=0"
Met de volgende opdracht wordt 10% van het verkeer naar de green implementatie gespiegeld:
U kunt spiegelverkeer testen door het eindpunt meerdere keren aan te roepen zonder een implementatie op te geven om het binnenkomende verkeer te ontvangen:
# You can test mirror traffic by invoking the endpoint several times
for i in range(20):
ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
request_file="../model-1/sample-request.json",
)
U kunt controleren of het specifieke percentage van het verkeer naar de green implementatie is verzonden door de logboeken van de implementatie te bekijken:
10% van het verkeer naar de green implementatie spiegelen:
Selecteer Verkeer bijwerken op de pagina Details van het eindpunt.
Schuif de knop om gespiegeld verkeer in te schakelen.
Selecteer de groene implementatie in het vervolgkeuzemenu Implementatienaam.
Behoud de standaardverkeerstoewijzing van 10%.
Selecteer Bijwerken.
Op de pagina met eindpuntdetails wordt nu de toewijzing van gespiegeld verkeer van 10% aan de green implementatie weergegeven.
Als u gespiegeld verkeer wilt testen, raadpleegt u de Azure CLI- of Python-tabbladen om het eindpunt meerdere keren aan te roepen. Controleer of het specifieke percentage van het verkeer naar de green implementatie is verzonden door de logboeken van de implementatie te bekijken. U kunt de implementatielogboeken openen via het tabblad Implementatielogboeken van het eindpunt. U kunt ook metrische gegevens en logboeken gebruiken om de prestaties van het gespiegelde verkeer te bewaken. Zie Online-eindpunten bewaken voor meer informatie.
Na het testen kunt u spiegeling uitschakelen:
Selecteer Verkeer bijwerken op de pagina Details van het eindpunt.
Schuif de knop naast Gespiegeld verkeer opnieuw inschakelen om gespiegeld verkeer uit te schakelen.
Selecteer Bijwerken.
Een klein percentage liveverkeer toewijzen aan de nieuwe implementatie
Zodra u volledig tevreden bent met uw green implementatie, schakelt u al het verkeer naar de implementatie over.
Selecteer Verkeer bijwerken op de pagina Details van eindpunt.
Pas het implementatieverkeer aan door 100% toe te wijzen aan de groene implementatie en 0% aan de blauwe implementatie.
Selecteer Bijwerken.
De oude implementatie verwijderen
Gebruik de volgende stappen om een afzonderlijke implementatie te verwijderen uit een beheerd online-eindpunt. Het verwijderen van een afzonderlijke implementatie heeft gevolgen voor de andere implementaties in het beheerde online-eindpunt:
U kunt een implementatie waarvoor live verkeer is toegewezen, niet verwijderen. U moet eerst de verkeerstoewijzing instellen voor de implementatie op 0%, voordat u deze verwijdert.
Zoek op de pagina Details van het eindpunt de blauwe implementatie.
Selecteer het pictogram Verwijderen naast de implementatienaam.
Als u het eindpunt en de implementatie niet gaat gebruiken, moet u deze verwijderen. Door het eindpunt te verwijderen, verwijdert u ook alle onderliggende implementaties.
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
Als u het eindpunt en de implementatie niet gaat gebruiken, moet u deze verwijderen. Door het eindpunt te verwijderen, verwijdert u ook alle onderliggende implementaties.
Als u het eindpunt en de implementatie niet gaat gebruiken, moet u deze verwijderen. Door het eindpunt te verwijderen, verwijdert u ook alle onderliggende implementaties.
Manage data ingestion and preparation, model training and deployment, and machine learning solution monitoring with Python, Azure Machine Learning and MLflow.