Delen via


MLflow-modellen implementeren als Azure-webservices

VAN TOEPASSING OP: Python SDK azureml v1

MLflow is een opensource-bibliotheek voor het beheren van de levenscyclus van machine learning-experimenten. Met MLflow-integratie met Azure Machine Learning kunt u de beheermogelijkheden uitbreiden buiten modeltraining naar de implementatiefase van productiemodellen. In dit artikel implementeert u een MLflow-model als een Azure-webservice en past u azure Machine Learning-modelbeheer- en gegevensdriftdetectiefuncties toe op uw productiemodellen.

In het volgende diagram ziet u hoe de MLflow deploy-API kan worden geïntegreerd met Azure Machine Learning om modellen te implementeren. U maakt modellen als Azure-webservices met behulp van populaire frameworks zoals PyTorch, Tensorflow of scikit-learn en beheert de services in uw werkruimte:

Diagram dat laat zien hoe de MLflow-API wordt geïntegreerd met Azure Machine Learning om modellen te implementeren.

Tip

Dit artikel ondersteunt gegevenswetenschappers en ontwikkelaars die een MLflow-model willen implementeren naar een Azure Machine Learning-webservice-eindpunt. Als u een beheerder bent die het resourcegebruik en de gebeurtenissen van Azure Machine Learning wil bewaken, zoals quota, voltooide trainingsuitvoeringen of voltooide modelimplementaties, raadpleegt u Bewaking van Azure Machine Learning.

Vereisten

Implementatieopties

Azure Machine Learning biedt de volgende implementatieconfiguratieopties:

  • Azure Container Instances: geschikt voor snelle implementatie van dev-test.
  • Azure Kubernetes Service (AKS): aanbevolen voor schaalbare productie-implementatie.

Notitie

Azure Machine Learning-eindpunten (v2) bieden een verbeterde, eenvoudigere implementatie-ervaring. Eindpunten ondersteunen zowel realtime- als batchdeductiescenario's. Eindpunten bieden een uniforme interface voor het aanroepen en beheren van modelimplementaties in verschillende rekentypen. Zie Wat zijn Azure Machine Learning-eindpunten?

Zie MLflow en Azure Machine Learning (v2) voor meer integraties van MLflow- en Azure Machine Learning-functionaliteit, die gebruikmaakt van de v2 SDK.

Implementeren naar Azure Container Instances

Als u uw MLflow-model wilt implementeren in een Azure Machine Learning-webservice, moet uw model worden ingesteld met de MLflow Tracking-URI om verbinding te maken met Azure Machine Learning.

Voor de implementatie naar Azure Container Instances hoeft u geen implementatieconfiguratie te definiëren. De service wordt standaard ingesteld op een Azure Container Instances-implementatie wanneer er geen configuratie wordt opgegeven. U kunt het model in één stap registreren en implementeren met de implementatiemethode van MLflow voor 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 as the service name
# The model is registered automatically and a name is autogenerated by using the "name" parameter 
client.create_deployment(name="mlflow-test-aci", model_uri='runs:/{}/{}'.format(run.id, model_path))

JSON-bestand voor implementatieconfiguratie aanpassen

Als u liever niet de standaardinstellingen gebruikt, kunt u uw implementatie instellen met een JSON-bestand voor implementatieconfiguratie dat parameters van de methode deploy_configuration() gebruikt als referentie.

Configuratieparameters voor implementatie definiëren

In het JSON-bestand voor de implementatieconfiguratie definieert u elke implementatieconfiguratieparameter in de vorm van een woordenlijst. Het volgende codefragment bevat een voorbeeld. Voor meer informatie over wat uw JSON-bestand voor de implementatieconfiguratie van uw implementatie kan bevatten, raadpleegt u het configuratieschema voor de implementatie van Azure Container Instance in de Azure Machine Learning Azure CLI-verwijzing.

{"computeType": "aci",
 "containerResourceRequirements": {"cpu": 1, "memoryInGB": 1},
 "location": "eastus2"
}

Uw json-configuratiebestand kan vervolgens worden gebruikt om uw implementatie te maken:

# Set the deployment config json file
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")    

Implementeren in Azure Kubernetes Service (AKS)

Als u uw MLflow-model wilt implementeren in een Azure Machine Learning-webservice, moet uw model worden ingesteld met de MLflow Tracking-URI om verbinding te maken met Azure Machine Learning.

Voor implementatie naar AKS maakt u eerst een AKS-cluster met behulp van de methode ComputeTarget.create(). Dit proces kan 20-25 minuten duren om een nieuw cluster te maken.

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)

Maak een json voor de implementatieconfiguratie met behulp van de methodewaarden deploy_configuration() als verwijzing. Definieer elke implementatieconfiguratieparameter als een woordenlijst, zoals wordt weergegeven in het volgende voorbeeld:

{"computeType": "aks", "computeTargetName": "aks-mlflow"}

Registreer en implementeer vervolgens het model in één stap met de MLflow-implementatieclient:

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 json file
deploy_path = "deployment_config.json"
test_config = {'deploy-config-file': deploy_path}

# Define the model path and the name as the service name
# The model is registered automatically and a name is autogenerated by using the "name" parameter 
client.create_deployment(model_uri='runs:/{}/{}'.format(run.id, model_path), config=test_config, name="mlflow-test-aci")

De service-implementatie kan enkele minuten duren.

Resources opschonen

Als u niet van plan bent uw geïmplementeerde webservice te gebruiken, gebruikt u de service.delete() methode om de service uit uw notebook te verwijderen. Zie de delete()-methode van de WebService-klasse in de Python SDK-documentatie voor meer informatie.

Voorbeeldnotebooks verkennen

De MLflow met Azure Machine Learning-notebooks laten zien en uitbreiden op concepten die in dit artikel worden gepresenteerd.

Notitie

Voor een communitygestuurde opslagplaats met voorbeelden die gebruikmaken van MLflow, raadpleegt u de opslagplaats met Azure Machine Learning-voorbeelden op GitHub.