Amazon MLS-C01: Entrenamiento, Entrenamiento Distribuido y Optimización de Hiperparámetros — Guía de estudio
Forma parte de la AWS Machine Learning Specialty MLS-C01 — Guía de estudio. Practica con respuestas verificadas en el centro de exámenes de Amazon, o realiza tests cronometrados en ExamRoll.io.
Trabajos de entrenamiento, contenedores y transiciones al entrenamiento en la nube con código mínimo
Al migrar cargas de trabajo de entrenamiento a SageMaker, el objetivo de diseño principal es evitar reescribir el código del modelo, al tiempo que se garantiza que el entorno de ejecución del contenedor exponga las variables de entorno y las rutas de canal esperadas de SageMaker. Utilice el modo de script (Script Mode) de SageMaker con el Estimator específico del framework (PyTorch, TensorFlow, XGBoost) para que el mismo script de entrenamiento se ejecute localmente y en la nube con cambios mínimos: leer datos de SM_CHANNEL_TRAIN, escribir el modelo en SM_MODEL_DIR y respetar SM_NUM_GPUS/SM_HOSTS/SM_CURRENT_HOST. Para entornos personalizados, construya una imagen de Docker que extienda los AWS Deep Learning Containers oficiales (o el kit de herramientas de entrenamiento de SageMaker) y súbala a Amazon ECR; asegúrese de que el punto de entrada (entry point) del contenedor cumpla con el contrato de entrenamiento de SageMaker. Seleccione los tipos de instancia según el perfil de cómputo: trabajos limitados por CPU (CPU-bound) en las familias ml.c5/m5, entrenamiento con GPU en instancias ml.p3, ml.p4d, g4dn o g5; elija el tamaño de la instancia según la memoria y la relación GPU-CPU. Las trampas comunes incluyen rutas de archivo locales codificadas (hard-coded), asumir un único host (lo que causa fallos en trabajos distribuidos) y no declarar el modo de entrada de entrenamiento (Pipe vs File), lo que afecta el rendimiento de E/S. Para la reproducibilidad y la previsibilidad de costos, habilite el entrenamiento spot gestionado solo después de agregar un sistema de puntos de control (checkpointing) robusto y establecer max_wait > max_run para permitir interrupciones de Spot.
Patrones de entrenamiento distribuido, modos de entrada de datos y opciones de almacenamiento
El aprendizaje profundo distribuido requiere equilibrar el paralelismo de modelo, el paralelismo de datos y la arquitectura de E/S. Para el entrenamiento en un solo host con múltiples GPU y en múltiples hosts, utilice las primitivas nativas de los frameworks —torch.distributed o MultiWorkerMirroredStrategy de TensorFlow— o aproveche las bibliotecas smdistributed de SageMaker: smdistributed.dataparallel para el escalado con paralelismo de datos y smdistributed.modelparallel o DeepSpeed para modelos transformer muy grandes. Use S3 como el almacenamiento canónico para grandes conjuntos de datos, pero evite realizar muchas solicitudes GET pequeñas a S3: consolide los archivos en menos archivos comprimidos, use archivos fragmentados (sharded) en formato RecordIO/TFRecord o adjunte un sistema de archivos POSIX. Elija el modo Pipe para transmitir datos de entrenamiento directamente desde S3 para grandes conjuntos de datos, a fin de reducir el uso de disco local y el tiempo de inicio; use el modo File cuando el entrenamiento requiera acceso aleatorio o cuando necesite el conjunto de datos completo en un volumen EBS. Para un alto rendimiento (high-throughput) y semántica POSIX en múltiples instancias, monte Amazon FSx for Lustre o Amazon EFS; FSx es mejor para lecturas paralelas de alto rendimiento. Los errores comunes incluyen no fragmentar (shard) los datos entre los hosts (lo que causa duplicados), sobrestimar el rendimiento de S3 por instancia e ignorar las reglas de escalado del tamaño del lote (batch-size) y la tasa de aprendizaje (learning-rate) al aumentar el paralelismo.
Entrenamiento Spot, puntos de control (checkpointing) y estrategias de optimización de costos
El entrenamiento Spot gestionado puede reducir drásticamente el costo si su diseño de entrenamiento tolera interrupciones. Configure el spot gestionado a través del Estimator de SageMaker (use_spot_instances=True), además de los puntos de control: proporcione un checkpoint_s3_uri persistente y un checkpoint_dir local, y guarde los puntos de control con la frecuencia suficiente para acotar el tiempo de retrabajo. Establezca max_wait significativamente por encima de max_run para que el trabajo pueda reintentar en instancias interrumpidas dentro de la ventana de spot. Para los frameworks, implemente escrituras atómicas de puntos de control y una lógica de reanudación robusta que inspeccione el último punto de control de S3, restaure el estado del optimizador y del planificador (scheduler), y luego continúe el entrenamiento. La frecuencia de los puntos de control debe equilibrar la sobrecarga de escritura y el cómputo potencialmente desperdiciado; para épocas largas o modelos muy grandes, cree puntos de control a mitad de época utilizando instantáneas de acumulación de gradientes o guardados basados en pasos. Las trampas de costos incluyen olvidar persistir los puntos de control en S3 (lo que causa un reinicio completo en caso de interrupción), depender del almacenamiento de instancia efímero y establecer max_wait igual a max_run, lo que impide los reintentos. Combine el entrenamiento spot con precisión mixta (AMP) para ahorros de cómputo adicionales y con cargas útiles de puntos de control más pequeñas (guardando solo los pesos + optimizador) para reducir los costos de escritura en S3 y la latencia de reanudación.
Optimización de hiperparámetros, estrategias de ajuste y criterios de decisión prácticos
Una optimización de hiperparámetros (HPO) efectiva combina una estrategia de búsqueda, asignación de recursos y detención temprana. El HyperparameterTuner de SageMaker admite búsquedas aleatorias (Random) y bayesianas (Bayesian), con rangos configurables de tipo ContinuousParameter, IntegerParameter y CategoricalParameter; para espacios de búsqueda grandes, comience con una búsqueda aleatoria para una exploración amplia y luego ejecute una optimización bayesiana para explotar las regiones prometedoras. Utilice métodos de detención temprana como Hyperband o la funcionalidad de detención temprana integrada de SageMaker para ahorrar presupuesto, y use el ajuste de inicio en caliente (warm-start) para reutilizar resultados entre experimentos relacionados. Elija las métricas objetivo con cuidado (AUC de validación para tareas con desequilibrio, F1 para detección de fraude con clases desequilibradas, métricas personalizadas ponderadas por costo para escenarios de rotura de stock). Los errores comunes incluyen rangos demasiado amplios que causan muchos trabajos fallidos, usar codificación categórica para hiperparámetros que son esencialmente continuos y no escalar la HPO teniendo en cuenta los recursos: trabajos de sondeo cortos en instancias más pequeñas para encontrar regiones aproximadas, seguidos de ejecuciones más largas en instancias de GPU de tamaño completo. Para el entrenamiento distribuido, ajuste tanto los hiperparámetros algorítmicos (tasa de aprendizaje, tamaño del lote) como los parámetros a nivel de sistema (pasos de acumulación de gradiente, número de fragmentos de datos). Instrumente con SageMaker Debugger y use las métricas de CloudWatch para detectar mediciones ruidosas; cuando exista una alta varianza, aumente las repeticiones por configuración o use una selección basada en la mediana.
Problema práctico: Escenario de caso de uso
Escenario: FinRetailer ejecuta miles de pronósticos de demanda a 30 días por SKU en SageMaker; almacenan años de archivos CSV diarios en S3 y requieren una alta precisión en los artículos de demanda de cola larga (tail-demand), manteniendo una latencia de inferencia aceptable en los trabajos de puntuación por lotes (batch scoring).
Desafío: Pronosticar miles de series temporales con historiales largos e importancia desequilibrada (las roturas de stock cuestan más que el exceso de inventario), minimizando el costo de cómputo y preservando la precisión en eventos raros de alta demanda.
Enfoque recomendado:
- Use el algoritmo integrado de SageMaker DeepAR o un modelo temporal personalizado de PyTorch (basado en Transformer) empaquetado en un Script Mode Estimator; almacene los datos de entrenamiento como archivos fragmentados (sharded) en formato RecordIO/TFRecord y use el modo Archivo (File mode) con FSx for Lustre para un entrenamiento de alto rendimiento en múltiples instancias.
- Comience con un entrenamiento distribuido en instancias más pequeñas (smddp o Horovod) para ajustar la arquitectura del modelo y los hiperparámetros, usando HyperparameterTuner con búsqueda bayesiana y detención temprana; defina el objetivo como una pérdida cuantil ponderada (weighted quantile loss) que penalice más severamente la subestimación del pronóstico.
- Habilite el entrenamiento spot gestionado con
checkpoint_s3_uriy puntos de control frecuentes basados en pasos; establezcamax_wait > max_runpara tolerar interrupciones y reanudar desde el último punto de control en S3. - Para la inferencia en producción, realice la puntuación por lotes (batch-score) utilizando endpoints multimodelo o trabajos de transformación por lotes asíncronos en instancias optimizadas para cómputo; aplique reglas de negocio de postprocesamiento y un umbral calibrado que tenga en cuenta los costos de rotura de stock.
Justificación: El uso de arquitecturas DeepAR/transformer gestiona muchas series temporales de manera eficiente; los formatos binarios fragmentados y FSx reducen los cuellos de botella de E/S para el entrenamiento distribuido, la HPO bayesiana con un objetivo personalizado enfoca las búsquedas en métricas de costo operativo, y el entrenamiento spot con puntos de control reduce el costo sin sacrificar el progreso.
← Series Temporales y Pronóstico · Todos los dominios · Despliegue →
Practica estas preguntas → · Práctica cronometrada en ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Aprueba tu examen →