In dit artikel leert u hoe u een door AutoML getraind machine learning-model implementeert op een onlineeindpunt (realtime deductie). Geautomatiseerde machine learning, ook wel geautomatiseerd ML of AutoML genoemd, is het proces van het automatiseren van de tijdrovende, iteratieve taken voor het ontwikkelen van een machine learning-model. Zie Wat is geautomatiseerde machine learning (AutoML)?voor meer informatie.
In dit artikel leert u hoe u met AutoML getraind machine learning-model implementeert op online-eindpunten met behulp van:
Implementeren vanuit Azure Machine Learning-studio en geen code
Het implementeren van een door AutoML getraind model vanaf de pagina Geautomatiseerde ML is een ervaring zonder code. Dat wil gezegd, u hoeft geen scorescript en omgeving voor te bereiden. Beide worden automatisch gegenereerd.
Ga naar de pagina Geautomatiseerde ML in de studio
Selecteer uw experiment en voer deze uit
Het tabblad Modellen kiezen
Selecteer het model dat u wilt implementeren
Zodra u een model selecteert, wordt de knop Implementeren weergegeven met een vervolgkeuzelijst
Selecteer De optie Implementeren naar realtime-eindpunt
Het systeem genereert het model en de omgeving die nodig zijn voor de implementatie.
Voltooi de wizard om het model te implementeren op een online-eindpunt
Handmatig implementeren vanuit de studio of opdrachtregel
Als u meer controle wilt over de implementatie, kunt u de trainingsartefacten downloaden en implementeren.
Ga als volgt te werk om de onderdelen te downloaden die u nodig hebt voor implementatie:
Ga naar uw geautomatiseerde ML-experiment en voer deze uit in uw machine learning-werkruimte
Het tabblad Modellen kiezen
Selecteer het model dat u wilt gebruiken. Zodra u een model selecteert, wordt de knop Downloaden ingeschakeld
Kies Downloaden
U ontvangt een zip-bestand met:
Een conda-omgevingsspecificatiebestand met de naam conda_env_<VERSION>.yml
Een Python-scorebestand met de naam scoring_file_<VERSION>.py
Het model zelf, in een Python-bestand .pkl met de naam model.pkl
Als u deze bestanden wilt implementeren, kunt u de studio of de Azure CLI gebruiken.
Ga naar de pagina Modellen in Azure Machine Learning-studio
Selecteer de optie + Model registreren
Het model registreren dat u hebt gedownload van geautomatiseerde ML-uitvoering
Ga naar de pagina Omgevingen, selecteer Aangepaste omgeving en selecteer + Optie Maken om een omgeving voor uw implementatie te maken. De gedownloade Conda Yaml gebruiken om een aangepaste omgeving te maken
Selecteer het model en selecteer in de vervolgkeuzelijst Implementeren de optie Implementeren naar realtime-eindpunt
Voltooi alle stappen in de wizard om een online-eindpunt en implementatie te maken
Als u een implementatie wilt maken vanuit de CLI, hebt u de Azure CLI nodig met de ML v2-extensie. Voer de volgende opdracht uit om te bevestigen dat u beide hebt:
Als u toegang hebt tot meerdere Azure-abonnementen, kunt u uw actieve abonnement instellen:
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
Stel de standaardresourcegroep en werkruimte in op de locatie waar u de implementatie wilt maken:
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
Het scorebestand in een eigen map plaatsen
Maak een map met de naam src/ en plaats het scorebestand dat u erin hebt gedownload. Deze map wordt geüpload naar Azure en bevat alle broncode die nodig is om deductie uit te voeren. Voor een AutoML-model is er slechts één scorebestand.
Het yaml-bestand voor eindpunt en implementatie maken
Als u een online-eindpunt wilt maken vanaf de opdrachtregel, moet u een endpoint.yml en een deployment.yml-bestand maken. De volgende code, die afkomstig is uit de opslagplaats Azure Machine Learning-voorbeelden , toont de eindpunten/online/beheerd/sample/, waarmee alle vereiste invoer wordt vastgelegd:
U moet dit bestand wijzigen om de bestanden te gebruiken die u hebt gedownload van de pagina AutoML-modellen.
Maak een bestand automl_endpoint.yml en automl_deployment.yml plak de inhoud van het bovenstaande voorbeeld.
Wijzig de waarde van het name eindpunt. De naam van het eindpunt moet uniek zijn binnen de Azure-regio. De naam van een eindpunt moet beginnen met een hoofdletter of kleine letter en mag alleen bestaan uit '-'s en alfanumerieke tekens.
Wijzig in het automl_deployment bestand de waarde van de sleutels op de volgende paden:
Pad
Wijzig in
model:path
Het pad naar het bestand dat model.pkl u hebt gedownload.
code_configuration:code:path
De map waarin u het scorebestand hebt geplaatst.
code_configuration:scoring_script
De naam van het Python-scorebestand (scoring_file_<VERSION>.py).
environment:conda_file
Een bestands-URL voor het gedownloade Conda-omgevingsbestand (conda_env_<VERSION>.yml).
Notitie
Zie voor een volledige beschrijving van de YAML-referentie voor online-eindpunten.
Maak een map met de naam src/ en plaats het scorebestand dat u erin hebt gedownload. Deze map wordt geüpload naar Azure en bevat alle broncode die nodig is om deductie uit te voeren. Voor een AutoML-model is er slechts één scorebestand.
Verbinding maken naar Azure Machine Learning-werkruimte
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
Configureer werkruimtegegevens en haal een ingang op voor de werkruimte:
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Het eindpunt en de implementatie maken
Vervolgens maken we de beheerde online-eindpunten en -implementaties.
Online-eindpunt configureren:
Tip
name: De naam van het eindpunt. Deze moet uniek zijn in de Azure-regio. De naam van een eindpunt moet beginnen met een hoofdletter of kleine letter en mag alleen bestaan uit '-'s en alfanumerieke tekens. Zie eindpuntlimieten voor meer informatie over de naamgevingsregels.
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. A key verloopt niet, maar aml_token verloopt wel. Zie Verifiëren bij een online-eindpunt voor meer informatie over verificatie.
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
Maak het eindpunt:
Met behulp van de MLClient eerder gemaakte maken we nu het eindpunt in de werkruimte. Met deze opdracht wordt het maken van het eindpunt gestart en wordt er een bevestigingsantwoord geretourneerd terwijl het maken van het eindpunt wordt voortgezet.
ml_client.begin_create_or_update(endpoint)
Online-implementatie configureren:
Een implementatie is een set resources die vereist is voor het hosten van het model dat de werkelijke deductie uitvoert. We maken een implementatie voor ons eindpunt met behulp van de ManagedOnlineDeployment klasse.
In het bovenstaande voorbeeld wordt ervan uitgegaan dat de bestanden die u hebt gedownload van de pagina AutoML-modellen zich in de src map bevinden. U kunt de parameters in de code aanpassen aan uw situatie.
Parameter
Wijzig in
model:path
Het pad naar het bestand dat model.pkl u hebt gedownload.
code_configuration:code:path
De map waarin u het scorebestand hebt geplaatst.
code_configuration:scoring_script
De naam van het Python-scorebestand (scoring_file_<VERSION>.py).
environment:conda_file
Een bestands-URL voor het gedownloade Conda-omgevingsbestand (conda_env_<VERSION>.yml).
De implementatie maken:
Met behulp van de MLClient eerder gemaakte maken we nu de implementatie in de werkruimte. Met deze opdracht wordt het maken van de implementatie gestart en wordt er een bevestigingsantwoord geretourneerd terwijl de implementatie wordt gemaakt.