Azure Machine Learning: registar modelos, endpoints e MLOps em produção
João Barros
10 de March de 2025
2 min de leitura
O Azure Machine Learning é a plataforma MLOps da Microsoft que cobre o ciclo de vida completo de modelos: experimentação, registo, deployment e monitorização. Para equipas que precisam de governança e reprodutibilidade em produção.
Conectar ao workspace
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
ml_client = MLClient(
credential=DefaultAzureCredential(),
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
resource_group_name="rg-ml-prod",
workspace_name="aml-bconcepts"
)
Submeter job de treino
from azure.ai.ml import command
from azure.ai.ml.entities import Environment
job = command(
code="./src", # pasta com o código
command="python train.py --data ${{inputs.training_data}} --output ${{outputs.model}}",
inputs={"training_data": Input(type="uri_folder", path="azureml://datastores/workspaceblobstore/paths/data/")},
outputs={"model": Output(type="mlflow_model")},
environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
compute="gpu-cluster",
display_name="Treino_Churn_v3"
)
returned_job = ml_client.jobs.create_or_update(job)
ml_client.jobs.stream(returned_job.name) # acompanhar logs
Registar e fazer deploy do modelo
from azure.ai.ml.entities import Model, ManagedOnlineEndpoint, ManagedOnlineDeployment
# Registar modelo
model = ml_client.models.create_or_update(Model(
path=f"azureml://jobs/{returned_job.name}/outputs/model",
name="churn-prediction",
type="mlflow_model"
))
# Criar endpoint
endpoint = ml_client.online_endpoints.begin_create_or_update(
ManagedOnlineEndpoint(name="churn-endpoint", auth_mode="key")
).result()
# Deploy com auto-scaling
deployment = ManagedOnlineDeployment(
name="blue",
endpoint_name="churn-endpoint",
model=f"churn-prediction:{model.version}",
instance_type="Standard_DS3_v2",
instance_count=1
)
ml_client.online_deployments.begin_create_or_update(deployment).result()
Invocar endpoint
import json, urllib.request
data = json.dumps({"input_data": {"columns": ["feature1","feature2"], "data": [[0.5, 1.2]]}})
req = urllib.request.Request(endpoint.scoring_uri, data.encode(), {"Authorization": f"Bearer {api_key}"})
resp = urllib.request.urlopen(req)
print(json.loads(resp.read()))
Conclusão
O Azure ML consolida todo o ciclo MLOps numa plataforma com RBAC, registo de modelos versionado, endpoints geridos com auto-scaling e monitorização. Para equipas que precisam de reprodutibilidade e governança em ML de produção, é a alternativa managed às soluções self-hosted.