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

Cómo crear un pipeline de inferencia por lotes en Azure ML: paso a paso

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

Este tutorial muestra cómo crear un pipeline de inferencia por lotes en Azure ML para procesar grandes ficheros CSV y generar predicciones de forma escalable. Un pipeline por lotes es útil cuando tienes muchos registros o quieres automatizar predicciones periódicas sin servicio en tiempo real.

Requisitos previos

  • Cuenta Azure con suscripción y permisos para crear recursos.
  • Workspace de Azure Machine Learning creado.
  • Azure Machine Learning SDK for Python (azure-ai-ml) instalado localmente o en un Compute.
  • Fichero CSV de prueba con las mismas columnas que el modelo espera.
  • Modelo ya registrado en Azure ML (o un fichero model.pkl listo).

Paso 1: Preparar el entorno y dependencias

Explica por qué: garantizar que el SDK y las variables están configuradas evita errores comunes en la ejecución remota. A continuación, autenticamos y definimos el 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) 

Paso 2: Empaquetar el script de inferencia

Explica por qué: el script define cómo leer los datos e invocar el modelo. Coloca un script mínimo que carga un modelo registrado y aplica predicciones a un 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]) 

Paso 3: Crear un componente que ejecute el script

Explica por qué: en los pipelines de Azure ML usamos componentes para empaquetar la ejecución y especificar requisitos (CPU, imagen, dependencias). Creamos un YAML simple o definimos el componente en 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 inferencia 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) 

Paso 4: Registrar o referenciar el modelo

Explica por qué: el componente necesita acceso al fichero del modelo. Puedes registrar el modelo en el Workspace y montar/transferir para el job.

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

Paso 5: Crear y enviar el job del pipeline por lotes

Explica por qué: un job encapsula la ejecución en un compute de destino y permite escalabilidad. Aquí configuramos un job simple que pasa el CSV de input y recibe el CSV de output.

from azure.ai.ml import Input, Output, command from azure.ai.ml.entities import AmlCompute  # opcional: crear 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) 

Paso 6: Automatizar con triggers (opcional)

Explica por qué: para ejecuciones recurrentes puedes usar Azure Logic Apps o Azure Data Factory para desencadenar el job. El patrón común es llamar a la REST API de Azure ML para enviar el job cuando un fichero nuevo llega al Storage.

Verificar el resultado

Confirmación simple: consulta los logs del job con ml_client.jobs.stream(job.name) y verifica el fichero de output en el datastore/Blob. El CSV de salida debe tener la columna 'prediction' con valores generados.

Conclusión

Has creado un pipeline de inferencia por lotes en Azure ML, desde empaquetar el script hasta enviar el job y verificar los resultados. Próximos pasos: añadir logging estructurado, gestionar versiones del modelo y usar paralelismo para ficheros muy grandes. Consejo: prueba localmente con un subconjunto de datos antes de subir al compute remoto — ¿cuál es el mayor fichero CSV que tienes para probar?