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.
- Resumen
- Estructura del Proyecto
- Flujo de Trabajo Local
- Flujo de Trabajo con Containers
- Automatización con SageMaker
- Instalación y Configuración
- Uso
- Requisitos
- Licencia
- Autor
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.
├── 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
- 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.
- El notebook local_code/01_train_and_test.ipynbpermite la experimentación interactiva.
- El script local_code/02_train.pyrealiza el entrenamiento del modelo LightGBM y lo guarda comomodel/lightgbm_model.pkl.
- El script local_code/03_test.pypermite la prueba del modelo entrenado con nuevos datos.
- El container de entrenamiento se encuentra en containers/train/e incluyetrain.py,requirements.txty unDockerfile.
- El container de inferencia se encuentra en containers/test/e incluyetest.py,requirements.txty unDockerfile.
- 
Para entrenamiento: cd containers bash train.shEl 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.shEl script ejecuta el container de inferencia, cargando el modelo entrenado y los datos de prueba desde S3. 
- 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.
- 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.
- Clonación del repositorio:
git clone <repo-url>
cd sagemaker-batch-transform-tutorial- Instalación de dependencias de Python:
poetry install- Configuración de AWS CLI:
aws configure- Instalación de Docker:
 Guía de instalación de Docker
- 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.
- Los scripts train.shytest.shencontainers/ejecutan trabajos Dockerizados con integración para S3.
- 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.
- 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