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.
Požadavky
- Model strojového učení. Pokud nemáte natrénovaný model, najděte si příklad poznámkového bloku, který nejlépe vyhovuje vašemu výpočetnímu scénáři v tomto úložišti , a postupujte podle pokynů.
- Nastavte identifikátor URI sledování MLflow pro připojení služby Azure Machine Learning.
- Nainstalujte balíček
azureml-mlflow
.- Tento balíček automaticky přináší
azureml-core
sadu Azure Machine Learning Python SDK, která poskytuje připojení pro MLflow pro přístup k vašemu pracovnímu prostoru.
- Tento balíček automaticky přináší
- Podívejte se, jaká přístupová oprávnění potřebujete k provádění operací MLflow s pracovním prostorem.
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
- Spravujte své modely.
- Monitorujte produkční modely pro posun dat.
- Sledování spuštění Azure Databricks pomocí MLflow
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro