Skip to content

deployr-ai/sagemaker-batch-transform-tutorial

Repository files navigation

Tutorial de AWS SageMaker Batch Transform

Repositorio con código para un tutorial sobre transformaciones por lotes en SageMaker utilizando containers personalizados. Inicialmente, un modelo LightGBM es entrenado localmente; posteriormente, el código se adapta para ejecutarse en containers con conexión a S3 y, finalmente, se realiza entrenamiento e inferencia en AWS SageMaker.


Tabla de Contenidos


Resumen

Este tutorial cubre:

  • Experimentación local: Entrenamiento y prueba de un modelo LightGBM mediante notebooks de Jupyter y scripts de Python.
  • Contenerización: Empaquetado del código de entrenamiento e inferencia en Docker containers para ejecución reproducible en la nube.
  • Integración con S3: Transferencia de datos y modelos entre el entorno local y AWS S3.
  • Orquestación con SageMaker: Automatización de trabajos de entrenamiento y batch transform en SageMaker mediante funciones Lambda, permitiendo flujos de ML escalables y sin servidor.

Estructura del Proyecto

├── local_code/                # Scripts y notebooks para entrenamiento e inferencia local
│   ├── 01_train_and_test.ipynb
│   ├── 02_train.py
│   ├── 03_test.py
│   └── model/
│       └── lightgbm_model.pkl
│
├── containers/                # containers Docker para entrenamiento e inferencia local - archivos S3
│   ├── train.sh
│   ├── test.sh
│   ├── train/
│   │   ├── Dockerfile
│   │   ├── requirements.txt
│   │   └── train.py
│   └── test/
│       ├── Dockerfile
│       ├── requirements.txt
│       └── test.py
│
├── containers_sagemaker/      # Funciones Lambda para lanzar trabajos en SageMaker
│   ├── lambda/
│   ├── train/
│   │   ├── Dockerfile
│   │   ├── requirements.txt
│   │   └── train.py
│   └── test/
│       ├── Dockerfile
│       ├── requirements.txt
│       └── test.py
│
├── dataset/                   # Notebook para preparación de datos
│   └── prepare_data.ipynb
│
├── test_data/
│   └── test.csv
│
├── pyproject.toml
└── README.md

Flujo de Trabajo Local

1. Preparación de Datos

  • El preprocesamiento de datos y la generación de divisiones de entrenamiento/prueba se realiza con dataset/prepare_data.ipynb.
  • Los resultados se almacenan como archivos CSV reutilizables.

2. Entrenamiento y Prueba del Modelo

  • El notebook local_code/01_train_and_test.ipynb permite la experimentación interactiva.
  • El script local_code/02_train.py realiza el entrenamiento del modelo LightGBM y lo guarda como model/lightgbm_model.pkl.
  • El script local_code/03_test.py permite la prueba del modelo entrenado con nuevos datos.

Flujo de Trabajo con Containers

1. Construcción de Imágenes Docker

  • El container de entrenamiento se encuentra en containers/train/ e incluye train.py, requirements.txt y un Dockerfile.
  • El container de inferencia se encuentra en containers/test/ e incluye test.py, requirements.txt y un Dockerfile.

2. Ejecución de containers con Integración S3

  • Para entrenamiento:

    cd containers
    bash train.sh

    El script construye y ejecuta el container de entrenamiento, utilizando credenciales de AWS y rutas S3 para almacenamiento de datos/modelos.

  • Para inferencia:

    cd containers
    bash test.sh

    El script ejecuta el container de inferencia, cargando el modelo entrenado y los datos de prueba desde S3.


Automatización con SageMaker

1. Funciones Lambda

  • La lambda para disparar el entrenamiento se encuentra en containers_sagemaker/lambda/lgbm_sm_launch_training_job/lambda_function.py.
  • La lambda para disparar el batch transform job se encuentra en containers_sagemaker/lambda/lgbm_sm_launch_batch_transform_job/lambda_function.py.
  • El registro del modelo se realiza con containers_sagemaker/lambda/register_model/lambda_function.py.

Cada función Lambda se empaqueta con sus dependencias y debe subirse comprimida a AWS Lambda.

2. Empaquetado y Despliegue

  • El empaquetado de código y dependencias de Lambda se realiza con prepare_package.sh.
  • El despliegue de las funciones Lambda puede realizarse mediante la consola de AWS o CLI.
  • Las funciones Lambda permiten disparar trabajos de entrenamiento y batch transform en SageMaker, y pueden ser luego comandadas por algún servicio de orquestado.

Instalación y Configuración

  1. Clonación del repositorio:
git clone <repo-url>
cd sagemaker-batch-transform-tutorial
  1. Instalación de dependencias de Python:
poetry install
  1. Configuración de AWS CLI:
aws configure
  1. Instalación de Docker:
    Guía de instalación de Docker

Uso

Experimentación Local

  • Los notebooks y scripts en local_code/ son el punto de partida con nuestro código a implementar: entrenar y testear un modelo de ML sobre un dataset de detección de fraude.

Entrenamiento e Inferencia con containers

  • Los scripts train.sh y test.sh en containers/ ejecutan trabajos Dockerizados con integración para S3.

Automatización con SageMaker

  • La conteinerización y el despliegue se realiza desde containers_sagemaker/.
  • Las funciones Lambda permiten disparar los jobs de entrenamiento y batch inference en SageMaker.

Requisitos

  • Python 3.10 o superior
  • Docker
  • AWS CLI (configurado con credenciales)
  • Poetry (para gestión de dependencias)
  • Cuenta de AWS con permisos para SageMaker y Lambda

About

Código para el tutorial de inferencia con Batch Transform en Sagemaker, usando containers personalizados

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published