(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar um pipeline de inferência em batch em Azure ML: passo a passo

João Barros 04 de November de 2026 4 min de leitura

Este tutorial mostra como criar um pipeline de inferência em batch em Azure ML para processar grandes ficheiros CSV e gerar predições de forma escalável. Um pipeline em batch é útil quando tens muitos registos ou queres automatizar predições periódicas sem serviço em tempo real.

Pré-requisitos

  • Conta Azure com subscrição e permissões para criar recursos.
  • Workspace do Azure Machine Learning criado.
  • Azure Machine Learning SDK for Python (azure-ai-ml) instalado localmente ou num Compute.
  • Ficheiro CSV de teste com as mesmas colunas que o modelo espera.
  • Modelo já registado no Azure ML (ou um ficheiro model.pkl pronto).

Passo 1: Preparar o ambiente e dependências

Explica porquê: garantir que o SDK e as variáveis estão configuradas evita erros comuns na execução remota. A seguir, autenticamos e definimos o workspace.

pip install azure-ai-ml azure-identity pandas scikit-learn 
from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential  subscription_id = "" resource_group = "" workspace_name = ""  ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name) 

Passo 2: Empacotar o script de inferência

Explica porquê: o script define como ler os dados e invocar o modelo. Coloca um script mínimo que carrega um modelo registado e aplica predições a um CSV.

# ficheiro: score.py import os import pandas as pd import joblib  def main(input_csv, output_csv):     model_path = os.environ.get("MODEL_PATH", "model.pkl")     model = joblib.load(model_path)     df = pd.read_csv(input_csv)     preds = model.predict(df)     df['prediction'] = preds     df.to_csv(output_csv, index=False)  if __name__ == '__main__':     import sys     main(sys.argv[1], sys.argv[2]) 

Passo 3: Criar um componente que execute o script

Explica porquê: nos pipelines do Azure ML usamos componentes para empacotar a execução e especificar requisitos (CPU, imagem, dependências). Criamos um YAML simples ou definimos o componente em Python.

from azure.ai.ml import command_component, Input, Output from azure.ai.ml.entities import Environment  comp = command_component(     name="batch-score-comp",     description="Componente para inferência batch a partir de CSV",     inputs={"input_csv": Input(type="uri_file")},     outputs={"output_csv": Output(type="uri_file")},     code="./",  # diretoria com score.py e environment.yml     command="python score.py ${{inputs.input_csv}} ${{outputs.output_csv}}",     environment=Environment(image="mcr.microsoft.com/azureml/base:latest", conda_file="environment.yml") ) ml_client.components.create_or_update(comp) 

Passo 4: Registar ou referenciar o modelo

Explica porquê: o componente precisa de acesso ao ficheiro do modelo. Podes registar o modelo no Workspace e montar/transferir para o job.

from azure.ai.ml.entities import Model  model = ml_client.models.create_or_update(     Model(path="./model.pkl", name="my-model", type="mlflow" ) ) 

Passo 5: Criar e submeter o job de pipeline em batch

Explica porquê: um job encapsula a execução numa compute alvo e permite escalabilidade. Aqui configuramos um job simples que passa o CSV de input e recebe o CSV de output.

from azure.ai.ml import Input, Output, command from azure.ai.ml.entities import AmlCompute  # opcional: criar compute compute = AmlCompute(name="cpu-cluster", size="STANDARD_DS3_V2", min_instances=0, max_instances=2) ml_client.begin_create_or_update(compute).result()  job = command(     name="batch-inference-job",     component=comp,     inputs={         "input_csv": Input(type="uri_file", path="https://.blob.core.windows.net/data/input.csv")},     outputs={"output_csv": Output(type="uri_file", path="azureml://datastores/workspaceblobstore/paths/batch-output/output.csv")},     compute="cpu-cluster" )  returned_job = ml_client.jobs.create_or_update(job) ml_client.jobs.stream(returned_job.name) 

Passo 6: Automatizar com triggers (opcional)

Explica porquê: para execuções recorrentes podes usar Azure Logic Apps ou Azure Data Factory para desencadear o job. O padrão comum é chamar a REST API do Azure ML para submeter o job quando um ficheiro novo chega ao Storage.

Verificar o resultado

Confirmação simples: vê os logs do job com ml_client.jobs.stream(job.name) e verifica o ficheiro de output no datastore/Blob. O CSV de saída deve ter a coluna 'prediction' com valores gerados.

Conclusão

Criaste um pipeline de inferência em batch em Azure ML, desde empacotar o script até submeter o job e verificar os resultados. Próximos passos: adicionar logging estruturado, gerir versões do modelo e usar paralelismo para ficheiros muito grandes. Dica: testa localmente com um subconjunto de dados antes de subir para o compute remoto — qual é o maior ficheiro CSV que tens para testar?