Docker
Imagina que estás construyendo un rascacielos de Agentes de IA: sin una base sólida de infraestructura en la nube, tu estructura se derrumbará con el primer flujo de usuarios reales. Aquí dominaremos los contenedores Docker como "camiones" universales para la entrega de modelos, la orquestación de Kubernetes como un sistema de "semáforos" para el tráfico de solicitudes, y aprenderemos a desplegar servicios en las nubes de AWS/GCP como estaciones espaciales para tus Agentes de IA. Estas habilidades son una máscara de oxígeno para cualquier proyecto de producción: sin ellas, tus modelos geniales seguirán siendo scripts locales en un portátil.
Instrucciones para Ask AI
Dado que estos temas no cambian con el tiempo, lo mejor es que los estudies con un profesor personal: ChatGPT.
El proceso de estudio debe ser el siguiente:
- Creas un prompt de sistema para ChatGPT (plantillas), donde describes tu experiencia, preferencias, nivel de detalle de las explicaciones, etc.
- Copias el tema de la lista (triple clic) y le pides a ChatGPT que te explique ese tema.
- Si deseas profundizar, haz preguntas aclaratorias.
Actualmente, esta es la forma más conveniente de estudiar los fundamentos. Además de los conceptos, puedes estudiar materiales adicionales en las secciones Gold, Silver, Extra.
- Gold - es imprescindible estudiar antes de interactuar con ChatGPT
- Ask AI - haz preguntas sobre cada tema desconocido
- Silver - materiales secundarios
- Extra - temas avanzados
Golden
Docker
Ask AI
Docker: 20 temas imprescindibles para un ingeniero de GenAI
- Arquitectura de la contenedorización: comparación de máquinas virtuales y Docker
- Docker vs Conda/venv: diferencias clave y escenarios de aplicación
- Instalación paso a paso de Docker en diferentes sistemas operativos
- Comandos básicos de la CLI de Docker: gestión de contenedores e imágenes
- Creación de Dockerfile: sintaxis y plantillas prácticas
- Trabajo con imágenes de Docker: construcción, etiquetado y publicación
- Docker Hub: operaciones básicas (Visión general)
- Trabajo con volúmenes: uso práctico de volumes y bind mounts
- Modelos de red en Docker: tipos básicos de conexiones (Breve)
- Arquitectura de microservicios: principios básicos (Breve)
- Configuración de entornos con Docker Compose: creación y depuración de configuraciones
- Optimización de imágenes de Docker: reducción del tamaño y aceleración de la construcción
- Capas de imágenes: mecanismo de almacenamiento en caché y dependencias (Visión general)
- Empaquetado de aplicaciones Python: dependencias y entorno en un contenedor
- Configuración de GPU en Docker para el aprendizaje automático: guía completa
- Almacenamiento de datos: soluciones locales y en la nube (Breve descripción general)
- Trabajo con registros en la nube: ejemplos prácticos de ECR/Artifact Registry
- Selección de una imagen base: Alpine vs Ubuntu (Comparación y recomendaciones)
- Configuración del inicio automático de contenedores a través de systemd (Prácticas)
- Optimización del rendimiento: cold vs hot start en entornos de producción
Silver
Ejemplos prácticos
Construcción de imágenes en varias etapas
# Etapa de construcción: instalamos dependencias en una imagen temporal
FROM python:3.9-slim as builder
COPY requirements.txt .
RUN pip install --user -r requirements.txt # --user para aislamiento en .local
# Imagen final: copiamos solo lo necesario de builder
FROM python:3.9-alpine # Alpine Linux - imagen minimalista
COPY --from=builder /root/.local /root/.local # Copiamos los paquetes instalados
COPY . /app # Agregamos el código fuente de la aplicación
ENV PATH=/root/.local/bin:$PATH # Agregamos la ruta a los paquetes instalados
CMD ["python", "/app/main.py"] # Punto de entrada de la aplicación
Servicio Systemd para el inicio automático
# /etc/systemd/system/ml-service.service
[Unit]
Description=ML Service # Nombre del servicio
After=network.target # Ejecutar después de la inicialización de la red
[Service]
Type=simple
WorkingDirectory=/opt/ml # Directorio de trabajo con docker-compose.yml
ExecStart=/usr/bin/docker-compose up # Comando principal de inicio
Restart=always # Reinicio automático en caso de fallo
[Install]
WantedBy=multi-user.target # Ejecutar al inicio del sistema
# Activación del servicio:
# sudo systemctl daemon-reload
# sudo systemctl enable ml-service
# sudo systemctl start ml-service
Tiempo de inicio de diferentes imágenes (inicio en frío)
Imagen | Tamaño | Tiempo de inicio | Uso |
---|---|---|---|
python:alpine | 58MB | 1.2s | API de producción |
ubuntu:latest | 77MB | 2.1s | Desarrollo/pruebas |
nvidia/cuda | 4.7GB | 8.5s | Entrenamientos de ML |
- Inicio en frío: tiempo desde docker run hasta que la aplicación está lista
- El inicio en caliente (después de detener/reiniciar) suele ser un 30-40% más rápido