Distribuera MLflow-modeller som Azure-webbtjänster
GÄLLER FÖR:Python SDK azureml v1
I den här artikeln får du lära dig hur du distribuerar din MLflow-modell som en Azure-webbtjänst, så att du kan utnyttja och tillämpa Azure Machine Learnings funktioner för modellhantering och identifiering av dataavvikelser på dina produktionsmodeller. Se MLflow och Azure Machine Learning för ytterligare MLflow- och Azure Machine Learning-funktionsintegreringar.
Azure Machine Learning erbjuder distributionskonfigurationer för:
- Azure Container Instance (ACI) som är ett lämpligt val för en snabb distribution av dev-test.
- Azure Kubernetes Service (AKS) som rekommenderas för skalbara produktionsdistributioner.
Anteckning
Azure Machine Learning-slutpunkter (v2) ger en förbättrad och enklare distributionsupplevelse. Slutpunkter stöder både realtids- och batchinferensscenarier. Slutpunkter tillhandahåller ett enhetligt gränssnitt för att anropa och hantera modelldistributioner mellan beräkningstyper. Se Vad är Azure Machine Learning-slutpunkter?.
Tips
Informationen i det här dokumentet är främst avsedd för dataexperter och utvecklare som vill distribuera sin MLflow-modell till en Azure Machine Learning-webbtjänstslutpunkt. Om du är administratör som är intresserad av att övervaka resursanvändning och händelser från Azure Machine Learning, till exempel kvoter, slutförda träningskörningar eller slutförda modelldistributioner, kan du läsa Övervaka Azure Machine Learning.
MLflow med Azure Machine Learning-distribution
MLflow är ett bibliotek med öppen källkod för att hantera livscykeln för dina maskininlärningsexperiment. Integreringen med Azure Machine Learning gör att du kan utöka den här hanteringen utöver modellträning till distributionsfasen för din produktionsmodell.
Följande diagram visar att med MLflow-distributions-API:et och Azure Machine Learning kan du distribuera modeller som skapats med populära ramverk som PyTorch, Tensorflow, scikit-learn osv. som Azure-webbtjänster och hantera dem på din arbetsyta.
Förutsättningar
- En maskininlärningsmodell. Om du inte har en tränad modell hittar du notebook-exemplet som passar bäst för ditt beräkningsscenario på den här lagringsplatsen och följer instruktionerna.
- Konfigurera MLflow Tracking URI för att ansluta Azure Machine Learning.
- Installera paketet
azureml-mlflow
.- Det här paketet hämtar automatiskt in
azureml-core
Azure Machine Learning Python SDK, som ger anslutning för MLflow att komma åt din arbetsyta.
- Det här paketet hämtar automatiskt in
- Se vilka åtkomstbehörigheter du behöver för att utföra dina MLflow-åtgärder med din arbetsyta.
Distribuera till Azure Container Instance (ACI)
Om du vill distribuera din MLflow-modell till en Azure Machine Learning-webbtjänst måste din modell konfigureras med MLflow Tracking URI för att ansluta till Azure Machine Learning.
För att kunna distribuera till ACI behöver du inte definiera någon distributionskonfiguration. Tjänsten är standard för en ACI-distribution när en konfiguration inte tillhandahålls. Registrera och distribuera sedan modellen i ett steg med MLflows distributionsmetod för Azure Machine Learning.
from mlflow.deployments import get_deploy_client
# set the tracking uri as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())
# set the model path
model_path = "model"
# define the model path and the name is the service name
# the model gets registered automatically and a name is autogenerated using the "name" parameter below
client.create_deployment(name="mlflow-test-aci", model_uri='runs:/{}/{}'.format(run.id, model_path))
Anpassa distributionskonfiguration
Om du föredrar att inte använda standardvärdena kan du konfigurera distributionskonfigurationen med en json-fil för distributionskonfiguration som använder parametrar från metoden deploy_configuration() som referens.
För din distributionskonfigurations-json-fil måste var och en av distributionsparametrarna definieras i form av en ordlista. Följande är ett exempel. Läs mer om vad json-filen för distributionskonfigurationen kan innehålla.
Konfigurationsschema för Azure Container Instance-distribution
{"computeType": "aci",
"containerResourceRequirements": {"cpu": 1, "memoryInGB": 1},
"location": "eastus2"
}
Din json-fil kan sedan användas för att skapa distributionen.
# set the deployment config
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path),
config=test_config,
name="mlflow-test-aci")
Distribuera till Azure Kubernetes Service (AKS)
Om du vill distribuera din MLflow-modell till en Azure Machine Learning-webbtjänst måste din modell konfigureras med MLflow Tracking URI för att ansluta till Azure Machine Learning.
Om du vill distribuera till AKS skapar du först ett AKS-kluster. Skapa ett AKS-kluster med hjälp av metoden ComputeTarget.create(). Det kan ta 20–25 minuter att skapa ett nytt kluster.
from azureml.core.compute import AksCompute, ComputeTarget
# Use the default configuration (can also provide parameters to customize)
prov_config = AksCompute.provisioning_configuration()
aks_name = 'aks-mlflow'
# Create the cluster
aks_target = ComputeTarget.create(workspace=ws,
name=aks_name,
provisioning_configuration=prov_config)
aks_target.wait_for_completion(show_output = True)
print(aks_target.provisioning_state)
print(aks_target.provisioning_errors)
Skapa en distributionskonfiguration json med deploy_configuration() metodvärden som referens. Var och en av distributionsparametrarna behöver helt enkelt definieras som en ordlista. Här är ett exempel nedan:
{"computeType": "aks", "computeTargetName": "aks-mlflow"}
Registrera och distribuera sedan modellen i ett steg med MLflows distributionsklient.
from mlflow.deployments import get_deploy_client
# set the tracking uri as the deployment client
client = get_deploy_client(mlflow.get_tracking_uri())
# set the model path
model_path = "model"
# set the deployment config
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}
# define the model path and the name is the service name
# the model gets registered automatically and a name is autogenerated using the "name" parameter below
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path),
config=test_config,
name="mlflow-test-aci")
Tjänstdistributionen kan ta flera minuter.
Rensa resurser
Om du inte planerar att använda din distribuerade webbtjänst använder service.delete()
du för att ta bort den från anteckningsboken. Mer information finns i dokumentationen för WebService.delete().
Exempelnotebook-filer
MLflow med Azure Machine Learning-notebook-filer visar och utökar begrepp som presenteras i den här artikeln.
Anteckning
En community-driven lagringsplats med exempel som använder mlflow finns på https://github.com/Azure/azureml-examples.
Nästa steg
- Hantera dina modeller.
- Övervaka dina produktionsmodeller för dataavvikelse.
- Spåra Azure Databricks-körningar med MLflow.