Sdílet prostřednictvím


Nasazení modelů MLflow jako webových služeb Azure

PLATÍ PRO: Python SDK azureml v1

V tomto článku se dozvíte, jak nasadit model MLflow jako webovou službu Azure, abyste mohli využít a použít možnosti správy modelů a detekce odchylek dat ve službě Azure Machine Learning pro produkční modely. Další integrace funkcí MLflow a Azure Machine Learning najdete v tématu MLflow a Azure Machine Learning (v2), které používá sadu SDK v2.

Azure Machine Learning nabízí konfigurace nasazení pro:

  • Azure Container Instance (ACI), což je vhodná volba pro rychlé nasazení pro vývoj a testování.
  • Azure Kubernetes Service (AKS), která se doporučuje pro škálovatelná produkční nasazení.

Poznámka:

Koncové body služby Azure Machine Learning (v2) poskytují vylepšené a jednodušší prostředí pro nasazení. Koncové body podporují scénáře odvození v reálném čase i dávkového odvozu. Koncové body poskytují jednotné rozhraní pro vyvolání a správu nasazení modelu napříč typy výpočetních prostředků. Podívejte se, co jsou koncové body služby Azure Machine Learning?

Tip

Informace v tomto dokumentu jsou primárně určené pro datové vědce a vývojáře, kteří chtějí nasadit model MLflow do koncového bodu webové služby Azure Machine Learning. Pokud máte zájem o monitorování využití prostředků a událostí ze služby Azure Machine Learning, jako jsou kvóty, dokončená trénovací spuštění nebo dokončená nasazení modelu, přečtěte si téma Monitorování služby Azure Machine Learning.

MLflow s nasazením služby Azure Machine Learning

MLflow je opensourcová knihovna pro správu životního cyklu experimentů strojového učení. Její integrace se službou Azure Machine Learning umožňuje rozšířit tuto správu nad rámec trénování modelu do fáze nasazení produkčního modelu.

Následující diagram ukazuje, že pomocí rozhraní API pro nasazení MLflow a Azure Machine Learning můžete nasazovat modely vytvořené s oblíbenými architekturami, jako jsou PyTorch, Tensorflow, scikit-learn atd., jako webové služby Azure a spravovat je ve vašem pracovním prostoru.

 Nasazení modelů mlflow pomocí azure machine learningu

Požadavky

Nasazení do služby Azure Container Instance (ACI)

Pokud chcete nasadit model MLflow do webové služby Azure Machine Learning, musí být váš model nastavený pomocí identifikátoru URI pro sledování MLflow pro připojení pomocí Azure Machine Learning.

Pokud chcete nasadit do ACI, nemusíte definovat žádnou konfiguraci nasazení, když není k dispozici konfigurace, služba ve výchozím nastavení nastaví nasazení ACI. Pak zaregistrujte a nasaďte model v jednom kroku pomocí metody nasazení MLflow pro 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))

Přizpůsobení konfigurace nasazení

Pokud nechcete používat výchozí hodnoty, můžete nastavit konfiguraci nasazení pomocí souboru JSON konfigurace nasazení, který jako referenci používá parametry z metody deploy_configuration( ).

Pro soubor JSON konfigurace nasazení je potřeba definovat každý z parametrů konfigurace nasazení ve formě slovníku. Například: Přečtěte si další informace o tom, co může soubor JSON konfigurace nasazení obsahovat.

Schéma konfigurace nasazení služby Azure Container Instance

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

Soubor JSON pak můžete použít k vytvoření nasazení.

# 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")                                       

Nasazení do služby Azure Kubernetes Service (AKS)

Pokud chcete nasadit model MLflow do webové služby Azure Machine Learning, musí být váš model nastavený pomocí identifikátoru URI pro sledování MLflow pro připojení pomocí Azure Machine Learning.

Pokud chcete nasadit do AKS, nejprve vytvořte cluster AKS. Vytvořte cluster AKS pomocí metody ComputeTarget.create(). Vytvoření nového clusteru může trvat 20 až 25 minut.

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)

Vytvořte soubor JSON konfigurace nasazení pomocí hodnot metody deploy_configuration() jako referenci. Každý z parametrů konfigurace nasazení musí být jednoduše definován jako slovník. Tady je příklad níže:

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

Pak zaregistrujte a nasaďte model v jednom kroku pomocí klienta nasazení MLflow.

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")

Nasazení služby může trvat několik minut.

Vyčištění prostředků

Pokud nemáte v úmyslu používat nasazenou webovou službu, použijte service.delete() ji k odstranění z poznámkového bloku. Další informace najdete v dokumentaci pro WebService.delete().

Příklady poznámkových bloků

MLflow s poznámkovými bloky Azure Machine Learning ukazuje a rozšiřuje koncepty uvedené v tomto článku.

Poznámka:

Komunitní úložiště příkladů využívajících mlflow najdete na adrese https://github.com/Azure/azureml-examples.

Další kroky