MLOps y escalado en AWS
Domina MLOps y el escalado para el examen AIF-C01, SageMaker Pipelines como DAG JSON con 16 tipos de paso, puertas Condition y Fail, paralelismo y caché de pasos, aprobación del Model Registry que impulsa CI/CD, SageMaker Projects con CodeConnections, servidores de tracking de MLflow, autoescalado de objetivo/paso/programado con métricas de alta resolución, escalado asincrónico a cero, límites de las opciones de inferencia y el volante de reentrenamiento con EventBridge.
Un modelo que funciona en un notebook no es un sistema. En el momento en que un segundo ingeniero debe reproducir la ejecución de entrenamiento, en el momento en que el tráfico se duplica a las 09:00, y en el momento en que los datos de entrenamiento se desvían seis meses después, dejas de hacer machine learning y empiezas a hacer operaciones, y AWS te da dos familias distintas de herramientas para eso: una capa de pipeline / registry / CI-CD que decide cómo llega un modelo a producción, y una capa de escalado que decide qué cómputo lo sirve. El examen AIF-C01 prueba si puedes nombrar cada herramienta con precisión, citar sus límites y rechazar las opciones que suenan plausibles pero que están documentadas para otro servicio.
====================================================================
LECCIÓN 13 — MLOPS Y ESCALADO EN AWS
====================================================================
MADUREZ (estándar AWS de tres niveles)
L0 manual .......... notebooks + CreateModel / endpoint manual
L1 pipeline ........ UN pipeline automatizado = el artefacto desplegado
L2 CI/CD completa .. muchos pipelines + registry + pruebas automáticas
--------------------------------------------------------------------
CAPA DE CONSTRUCCIÓN CAPA DE SERVICIO
Pipelines = DAG JSON (16 tipos) tiempo real .. <= 25 MB, 60 s
Condition: if/else sobre eval.json serverless ... <= 4 MB, 60 s
Fail: termina la ejecución como asincrónica .. <= 1 GB, 60 min
Failed batch ........ GB, días, sin EP
Parallelism (por ejecución)
Caché DESACTIVADA por defecto (PT1H) ESCALADO (App Auto Scaling)
Registry: grupo -> versiones 1,2.. target tracking (objetivo 70)
Aprobación: Approved / Rejected / step scaling (+1 desde cero)
PendingManualApproval acciones programadas
Projects: Service Catalog / CFN métrica alta resolución = 10 s
Git vía CodeConnections cooldown por defecto 300 s
Servidor de tracking MLflow (tu S3)
--------------------------------------------------------------------
CAPA DE AUTOMATIZACIÓN
SageMaker -> EventBridge (casi en tiempo real)
Monitor horario -> alarma CloudWatch -> StartPipelineExecution
<= 5 objetivos por regla / sin programación en buses custom o partner
====================================================================Cómo leer esta lección. Tres reglas se aplican en todo momento. (1) Los números son el examen: techos de carga útil, cooldowns, valores objetivo, periodos de alarma y transiciones de aprobación son todos valores publicados, y son lo que se examina. (2) AWS documenta dos mecanismos de escalado por una razón: el target tracking mantiene un nivel de carga, el step scaling despierta un servicio, y solo su combinación escala un endpoint asincrónico desde cero. (3) Todo lo que AWS no confirma en primera persona se marca, nunca se enseña como material de memorización; las marcas se recopilan al final de la lección.
Al terminar esta lección podrás:
- situar una práctica de ML en el modelo de madurez de tres niveles de AWS (0, 1, 2) y separarlo de las variantes de Google, Azure y del blog de AWS del mismo marco;
- leer un SageMaker Pipeline como un DAG JSON y decir qué aristas llevan datos (
properties) frente a solo ordenación (DependsOn); - seleccionar el tipo de paso correcto para una tarea, incluidos Condition, Fail, Callback, Lambda, ClarifyCheck y QualityCheck, y citar cuántos tipos existen;
- configurar
ParallelismConfigurationy la caché de pasos (ExpireAfteren ISO 8601, solo ejecuciones exitosas) correctamente; - impulsar el despliegue a través del Model Registry: numeración de versiones,
ModelApprovalStatusy las cuatro transiciones de aprobación que inician o no CI/CD; - construir o adoptar un SageMaker Project con CodePipeline / Jenkins, explicar por qué las plantillas de CodeCommit desaparecieron el 28 de octubre de 2024 y nombrar el tag y las acciones IAM de CodeConnections necesarias para GitHub;
- elegir entre Experiments (Studio Classic) y MLflow on SageMaker AI, y decir dónde viven físicamente los datos de tracking y los artefactos;
- configurar target tracking, step scaling y acciones programadas con el
ServiceNamespace,ResourceIdyScalableDimensioncorrectos, y hacer la aritmética de capacidad con división hacia arriba; - despertar un endpoint asincrónico desde cero con una política de paso más una alarma
HasBacklogWithoutCapacity; - elegir la opción de inferencia correcta a partir de la carga útil, la latencia, la duración y los requisitos del endpoint, y defender la elección en términos de coste;
- conectar el volante de MLOps: Model Monitor → CloudWatch → EventBridge →
StartPipelineExecution; - defender el Veredicto comparativo: MLOps gestionado frente a scripts DIY frente a operaciones manuales.
1. Madurez de MLOps: nivel 0, nivel 1, nivel 2
1.1 El estándar AWS de tres niveles
AWS enmarca MLOps como un modelo de madurez de tres niveles, y el examen espera que reconozcas el nivel a partir de una descripción y que nombres las herramientas que te llevan allí. La pregunta distintiva nunca es «cuánto ML haces», sino cuál es el artefacto desplegado.
Nivel | Nombre | Características (AWS) | Herramientas AWS |
|---|---|---|---|
0 | Flujo de trabajo de ML manual | Dirigido por el científico; entrenamiento y despliegue manuales; sin pipeline | Notebooks de SageMaker Studio; creación manual de CreateModel y de endpoints |
1 | Automatización del pipeline de ML (entrenamiento continuo) | Un pipeline automatizado se ejecuta recurrentemente, con la misma implementación en desarrollo, preproducción y producción; el propio pipeline es el artefacto desplegado | SageMaker Pipelines (DAG JSON, caché, paralelismo), EventBridge, Model Registry |
2 | Automatización completa de CI/CD | Múltiples pipelines, un registry al servicio de muchos modelos, pruebas automáticas y reentrenamiento y redespliegue horarios o diarios | SageMaker Projects + CodePipeline / CodeBuild / GitHub, Model Monitor → alarma → reentrenamiento, infraestructura como código |
No importes la numeración de otro marco. AWS, el blog de AWS ML y Google todos describen la madurez de MLOps, y no son intercambiables:
Marco | Escala | Hitos |
|---|---|---|
AWS (estándar del examen) | 0, 1, 2 | L2 = registry + muchos modelos + CI/CD |
Blog de AWS ML (2022) | Inicial → Repetible → Fiable → Escalable | multi-cuenta, con plantillas, multi-equipo |
Google | 0, 1, 2 | misma forma que AWS |
Azure | 0 to 4 | 1 = DevOps sin MLOps · 2 = entrenamiento automatizado · 3 = despliegue automatizado · 4 = MLOps completo con reentrenamiento disparado por deriva |
Una opción de examen que describa madurez de «nivel 3» o «nivel 4» está describiendo la escala de Azure, no la de AWS. |
1.2 Dónde encaja esto en el examen
MLOps pertenece al Dominio 1, Tarea 1.3 de la guía AIF-C01. El examen en sí es de 65 preguntas = 50 puntuadas + 15 sin puntuar, sin penalización por adivinar y con pesos de dominio publicados de 20 / 24 / 28 / 14 / 14 %. AWS publica solo los pesos de dominio, el número de preguntas por tarea no se publica, así que trata cualquier dimensionamiento por tarea que leas en otra parte como orientación, no como presupuesto.
- 📚 ¿Sabías que…? Las 15 preguntas sin puntuar de un examen AIF-C01 son indistinguibles para ti mientras rindes el examen: se intercalan con las 50 puntuadas y se usan para recopilar estadísticas antes de que cualquier ítem sea puntuado. La consecuencia práctica es un punto de estrategia, no un dato curioso: nunques saltes una pregunta pensando «esta podría no contar». Cada pregunta consume el mismo tiempo, y solo las 50 puntuadas deciden tu resultado, así que el movimiento racional es responder las 65 con toda tu capacidad.
2. SageMaker Pipelines: el contrato del DAG
2.1 Qué es un pipeline
Un SageMaker Pipeline es un grafo acíclico dirigido expresado en JSON. Cada nodo es un paso, cada arista es una dependencia, y los ciclos se rechazan, un DAG con bucles no es un pipeline más lento, es una definición inválida. La definición sigue el SageMaker AI Pipeline Definition JSON Schema y puede ser producida por cuatro productores equivalentes: el editor visual en Studio, el SageMaker SDK, boto3 y AWS CloudFormation. Las ejecuciones de pipeline se facturan como los jobs subyacentes (processing, training, transform) más el uso de Studio, la capa de orquestación en sí no es un SKU independiente y pesado.
Existen dos tipos de arista, y confundirlas es el error arquitectónico más común en esta zona:
Tipo de arista | Se escribe como | Lleva | Ejemplo |
|---|---|---|---|
Arista de datos | step.properties.*, resuelta desde la API Describe* correspondiente | artefactos reales (URIs de S3, datos de modelo, JSON de evaluación) | Train lee la salida train_data de Process |
Arista solo de ordenación | DependsOn / add_depends_on(...) | nada más que «ejecutar después» | Train debe esperar a un segundo paso de preparación no relacionado |
La regla práctica: si el valor fluye, es una referencia properties; si solo importa el timing, es DependsOn. ParallelismConfiguration no es un mecanismo de ordenación en absoluto: limita cuántos pasos ya elegibles se ejecutan a la vez.
2.2 El DAG del pipeline
Esta es la forma canónica que describe el examen: preprocesar → entrenar → evaluar → registrar solo si la métrica pasa, y fallar en caso contrario con un mensaje.
2.3 Ejemplo resuelto 1: la puerta del MSE, de principio a fin
Un pipeline de regresión para un modelo tabular tipo abulón, construido con el SageMaker SDK:
- Los parámetros se declaran una vez y se reutilizan en todas partes:
processing_instance_count,instance_type,model_approval_status(por defectoPendingManualApproval),input_data,batch_data,mse_threshold. Processproduce las salidastrain_dataytest_data. El paso de entrenamiento las consume constep_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri: esa cadena es la arista del DAG, no un comentario.Evales un paso Processing conproperty_files, de modo que su salidaevaluation.json(que contieneregression_metrics.mse) se expone a los pasos posteriores como una propiedad estructurada en lugar de como una ruta de S3 que tengas que analizar tú mismo.MSECondes un paso Condition:if_steps = [RegisterModel],else_steps = [Fail]. El paso Fail lleva un mensaje compuesto como"MSE above threshold " + mse_thresholdy termina la ejecución con estado Failed: la ejecución no «termina con una advertencia»..start()la ejecuta. PasarModelApprovalStatus="Approved"como valor de parámetro hace que el registro sea desplegable de inmediato (un atajo de desarrollo/pruebas), yCacheConfig(enable_caching=True, expire_after="PT1H")permite que los pasos sin cambios reutilicen sus salidas anteriores.
¿Por qué un paso Fail en lugar de dejar que la condición sea falsa? Un paso Condition con else_steps vacío no hace nada en silencio: la ejecución reporta Succeeded mientras no se registró ningún modelo. El paso Fail existe precisamente para que «la métrica fue mala» quede registrado como una ejecución Failed con un mensaje personalizado, que es lo que una regla de EventBridge o un sistema CI/CD necesita para abrir un incidente en lugar de celebrar una build verde.
3. Los 16 tipos de paso, y los dos que deciden resultados
3.1 El mapa completo de pasos
AWS documenta 16 tipos de paso. Aprende la tabla por la columna de «gancho de examen»: el examen rara vez pregunta «qué hace un paso Training», pregunta qué paso debe usarse para X.
Tipo de paso | Ejecuta | Configuración clave | Gancho de examen |
|---|---|---|---|
Processing | preparación, evaluación, baseline | URIs de salida en S3, property_files | «¿qué paso evalúa el modelo?» → Processing |
Training / Tuning / AutoML | entrenamiento / job HPO / job AutoML | hiperparámetros, canales de un paso previo, rangos de búsqueda, métrica objetivo | necesita datos de entrenamiento y de validación |
Model (Create model) | CreateModel | imagen del contenedor, ModelDataUrl | prerrequisito para Transform / Deploy |
Register model | versión del paquete de modelo | grupo, estado de aprobación, listas de instancias | versionado más aprobación |
Deploy model | creación/actualización de endpoint | configuración del endpoint, variantes | blue/green = una actualización del endpoint |
Transform | transformación por lotes | MaxPayloadInMB, MaxConcurrentTransforms | puntuación sin conexión, sin endpoint |
Condition | bifurcación | if_steps / else_steps | puerta → registrar o Fail |
Fail | detiene la ejecución como Failed | error_message personalizado | «terminar con un motivo» |
Callback | espera un token de callback | token | aprobación externa o con Step Functions |
Lambda | una función Lambda | ARN / ayuda del SDK | como máximo 10 min, por defecto 2 min; hooks de despliegue ligeros |
ClarifyCheck / QualityCheck | sesgo y explicabilidad, calidad de datos y de modelo | estadísticas y restricciones de baseline, skip_check, register_new_baseline | puerta de deriva más baseline |
EMR / Notebook Job | paso EMR / notebook programado | clúster y argumentos / cómputo y cron | preparación de big data / analítica programada |
3.2 Condition y Fail como puerta de evaluación
El patrón documentado es mecánico y vale la pena memorizarlo:
- El paso Processing de evaluación declara
property_files=["evaluation.json"]. - El paso Condition lee
evaluation.jsony compara un escalar: por ejemploregression_metrics.msecontra el parámetro del pipelinemse_threshold. - Rama true → Register model (opcionalmente precedido por
Create model, y seguido de un pasoTransformpara una pasada de cordura por lotes). - Rama false → Fail con un
error_messagecompuesto medianteJoin(...), produciendo un estado de ejecución de Failed.
Una segunda variante igual de común coloca un paso QualityCheck o ClarifyCheck delante del registro: el baseline se produce con register_new_baseline=true y skip_check=true en la primera ejecución, y las ejecuciones posteriores comparan contra ese baseline. Misma forma: una puerta cuya rama falsa es un paso Fail.
- 📚 ¿Sabías que…? El paso Fail no es un fallo del sistema: es una terminación controlada. El paso en sí termina haciendo bien su trabajo, y lo que acaba como
Failedes la ejecución del pipeline, con tu mensaje adjunto. Esa distinción importa cuando construyes una regla de EventBridge: reaccionas al estado de la ejecución, no a una excepción lanzada en tu código Python, de modo que un paso Fail te da una señal limpia y estable en su esquema que no da unexit 1de un script de shell.
4. Paralelismo y caché: las dos perillas que cambian el coste de ejecución
4.1 El paralelismo es por ejecución, no por pipeline
Los pasos independientes se ejecutan en paralelo por defecto: lo que esté elegible se ejecuta. Tú limitas eso con ParallelismConfiguration(MaxParallelExecutionSteps). Dos propiedades de este ajuste importan para el examen:
- se aplica por ejecución: el ejemplo documentado de 50 significa que una ejecución ejecuta como máximo 50 pasos a la vez, y dos ejecuciones concurrentes pueden por tanto ejecutar 100 pasos a la vez;
- se puede sobreescribir al iniciar, reintentar y actualizar, de modo que es un valor por defecto de política, no una propiedad inmutable del pipeline.
El paralelismo no es un mecanismo de dependencia. Poner MaxParallelExecutionSteps = 2 no hace que el paso B espere al paso A; solo limita cuántos pasos listos se ejecutan simultáneamente.
4.2 La caché es optativa, en ISO 8601 y solo para ejecuciones exitosas
Propiedad | Comportamiento verificado |
|---|---|
Por defecto | Desactivada: cada ejecución re-ejecuta cada paso |
Activación | CacheConfig { Enabled, ExpireAfter } en el paso |
Formato de ExpireAfter | duración ISO 8601, por ejemplo PT1H: no un timestamp Unix |
Qué ejecuciones se reutilizan | Solo las exitosas; una ejecución fallida nunca es fuente de caché |
Resolución de coincidencia | gana la ejecución exitosa coincidente más reciente |
Qué invalida | los atributos que afectan a la salida: ubicación de los datos, hiperparámetros y el código local (el SDK convierte el código local en un hash en S3) |
Qué puede seguir acertando | cambios en atributos que no afectan a la salida: instance_type puede seguir acertando |
El uso práctico es un bucle de desarrollo: re-ejecutas un pipeline de cinco pasos tras tocar solo el informe, y PT1H permite que Process, Train y Eval devuelvan sus artefactos anteriores en segundos mientras el paso modificado se ejecuta de verdad.
La caché desactivada por defecto es la trampa, no la característica. Un candidato que asuma que «los pipelines omiten el trabajo sin cambios automáticamente» leerá mal cada pregunta de coste sobre ejecuciones repetidas. No se cachea nada hasta que configuras CacheConfig, la entrada debe haber terminado bien y debe estar sin caducar. A la inversa, un candidato que asuma que «la caché significa modelos obsoletos» se equivoca por la razón opuesta: los cambios de datos, de hiperparámetros y de código fallan (miss) por diseño.
5. Model Registry: versiones y la aprobación que impulsa el despliegue
5.1 Estructura del registry
El registry organiza los modelos en grupos de modelos, y un grupo contiene paquetes/versiones. Las versiones son sencillas y estrictamente ordenadas: comienzan en 1 y aumentan en 1 por cada paquete añadido al grupo. Un paquete versionado debe pertenecer a un grupo, y su ARN lleva las coordenadas: …:model-package-group/name/version.
5.2 ModelApprovalStatus
Cada paquete de modelo lleva un estado tomado de exactamente tres valores:
ModelApprovalStatus = Approved | Rejected | PendingManualApprovalUn modelo versionado debe estar en Approved para ser desplegado. El estado puede configurarse mediante update_model_package, mediante Studio, mediante un paso Condition dentro de un pipeline, o pasarse como un parámetro del pipeline cuyo valor por defecto es PendingManualApproval.
5.3 Las cuatro transiciones de aprobación
Esta es la tabla de mayor rendimiento de la lección, porque el examen pregunta «¿qué acción inicia el despliegue?»:
Transición | Efecto en una plantilla de SageMaker Project |
|---|---|
PendingManualApproval → Approved | Inicia CI/CD: el pipeline de despliegue arranca |
PendingManualApproval → Rejected | Ninguna acción |
Rejected → Approved | Inicia CI/CD |
Approved → Rejected | Redespliega el modelo Approved más reciente (semántica de rollback) |
5.4 Ejemplo resuelto 2: de la aprobación a producción
- Se crea un SageMaker Project desde la plantilla «Model building, training, and deployment with third-party Git repositories using CodePipeline», con dos repositorios de GitHub y un ARN de CodeConnections con tag
sagemaker=true. - Un commit al repositorio de construcción del modelo dispara la acción de origen (
DetectChanges), que ejecutasource → build: CodeBuild crea o actualiza el SageMaker Pipeline y lo inicia. - El pipeline registra la versión 7 con
ModelApprovalStatus = PendingManualApproval. - Un revisor cambia la v7 a
Approved(Studio, CLI o un paso Condition alimentado por un parámetro de aprobación). - La regla de EventBridge de la plantilla inicia el pipeline de despliegue:
source → build → deploy-staging(pila de CloudFormation) → aprobación manual →deploy-prod. - Si en staging aparece un defecto y la v7 se cambia de
ApprovedaRejected, se redespliega el paquete aúnApprovedmás reciente: ese es tu rollback documentado. En un bucle puro de dev/test saltas los pasos 4 to 5 pasandoModelApprovalStatus="Approved"como parámetro del pipeline.
6. SageMaker Projects, Git y CI/CD
6.1 Qué es realmente un Project
Los SageMaker Projects son productos de AWS Service Catalog respaldados por CloudFormation. Crear uno aprovisiona, como una sola unidad: repositorios Git, un SageMaker Pipeline, CodePipeline o Jenkins, un grupo de modelos, un bucket de S3, un registro de ECR y reglas de EventBridge. Existen dos formas canónicas:
Forma del Project | Ruta del pipeline |
|---|---|
Build | source → build |
Deploy | source → build → deploy-staging → aprobación manual → deploy-prod |
Las familias de plantillas proporcionadas cubren build/train/deploy con Git de terceros (CodePipeline o Jenkins), Model Monitor y construcción de imágenes (ECR + CodeBuild + EventBridge).
6.2 El cambio del 28 de octubre de 2024 en CodeCommit
Las plantillas de proyecto basadas en CodeCommit se eliminaron el 28 de octubre de 2024. Cualquier opción de examen que afirme que puedes iniciar un SageMaker Project nuevo desde una plantilla de CodeCommit «hoy por hoy» es incorrecta. La ruta soportada es GitHub / GitHub Enterprise / GitLab / Bitbucket, y las plantillas personalizadas se construyen como CloudFormation en Service Catalog o, recomendado por AWS, plantillas alojadas en S3 consumidas a través de CfnTemplateProvider.
La mecánica de la acción de origen de GitHub merece citarse con precisión:
-
la acción de CodePipeline es
CodeStarSourceConnection; -
la conexión debe ser una conexión de CodeConnections con el tag
sagemaker=true; -
el rol del pipeline necesita ambas
codestar-connections:UseConnectionycodeconnections:UseConnection; -
la detección de cambios es
DetectChangesen el commit, de modo que la build arranca sin un disparador manual; -
el CloudFormation de una plantilla personalizada debe declarar
SageMakerProjectNameySageMakerProjectId. -
📚 ¿Sabías que…? «CodeStar» sobrevive en el nombre de la acción (
CodeStarSourceConnection) mucho después de que el producto fuera reemplazado por CodeConnections. Por eso la política IAM necesita dos acciones casi idénticas: una para el espacio de nombres heredado y otra para el servicio actual. Los candidatos que memorizan solo una de las dos suspenden sistemáticamente este ítem, y los propios recorridos de AWS listan ambas.
7. Experiments y MLflow: dónde vive ahora el tracking de ejecuciones
7.1 La migración
La API de SageMaker Experiments, CreateExperiment, Trials como grupos de ejecución, trial components como ejecuciones individuales, está documentada como disponible solo en Studio Classic. Para la experiencia nueva de Studio, AWS recomienda MLflow on SageMaker AI. En términos de examen: una opción que describa Trials y trial components como la forma actual y recomendada de rastrear ejecuciones está describiendo una superficie heredada.
SageMaker Experiments (SDK) | MLflow on SageMaker AI | |
|---|---|---|
Estado | Solo Studio Classic | Recomendación actual (GA) |
Tracking URI | API de Experiments | mlflow.set_tracking_uri(<ARN del servidor de tracking>) |
Credenciales | Rol de ejecución de SageMaker | plugin de AWS, firma SigV4 |
Almacén de backend | almacén de metadatos de Experiments | en la cuenta de servicio de SageMaker |
Almacén de artefactos | gestionado por SageMaker | tu propio bucket de S3 |
Tamaños / límites | : | Small / Medium / Large, creados en como máximo 25 minutos |
Auditoría | CloudTrail sobre las APIs de SageMaker | CloudTrail bajo CallMlflowApp para AWS::SageMaker::MlflowApp |
La división es el punto del examen: el cómputo y el almacén de backend se ejecutan en la cuenta de servicio de SageMaker, pero los artefactos viven en un S3 que tú posees y pagas: que es exactamente lo que un revisor de cumplimiento quiere oír sobre reproducibilidad.
8. Autoescalado de endpoints: target tracking, step scaling, acciones programadas
8.1 Los identificadores
El escalado de endpoints se ejecuta a través de Application Auto Scaling (RegisterScalableTarget más PutScalingPolicy) o a través del asistente de la consola. Cita las coordenadas exactamente:
Campo | Valor |
|---|---|
ServiceNamespace | sagemaker |
ResourceId | endpoint/{endpoint-name}/variant/{variant-name} |
ScalableDimension | sagemaker:variant:DesiredInstanceCount |
Métrica del asistente de consola | fija a SageMakerVariantInvocationsPerInstance |
AWS ofrece tres estrategias, target tracking (recomendado), step scaling y acciones programadas (CLI/API), y, para el target tracking, AWS gestiona las alarmas por ti.
8.2 Las métricas
Métrica | Tipo | Objetivo | Periodo |
|---|---|---|---|
SageMakerVariantInvocationsPerInstance | Predefinida (valor por defecto recomendado) | 70 invocaciones/instancia/min | 1 min |
ConcurrentRequestsPerModelHighResolution | personalizada de alta resolución | 5 peticiones concurrentes/modelo | 10 s |
InferenceComponentConcurrentRequestsPerCopyHighResolution | alta resolución (componentes de inferencia) | 5 | 10 s |
CPUUtilization, ExplanationsPerInstance | personalizada | a tu elección (por ejemplo 50) | 1 min |
ApproximateBacklogSizePerInstance | asincrónica | 5 | 1 min |
8.3 Ejemplo resuelto 3: aritmética de capacidad con target tracking
La capacidad siempre redondea hacia arriba: ese es el comportamiento de ajuste documentado, y es aritmética examinable:
- La prueba de carga muestra 210 invocaciones/min, objetivo 70 → 210 / 70 = 3 instancias.
- El tráfico sube a 351/min → 351 / 70 = 5,01, redondeado hacia arriba → 6 instancias (nunca 5).
- Registra el objetivo:
register_scalable_target(ServiceNamespace="sagemaker", ResourceId="endpoint/prod/variant/AllTraffic", ScalableDimension="sagemaker:variant:DesiredInstanceCount", MinCapacity=1, MaxCapacity=10). - Adjunta la política:
put_scaling_policy(PolicyType="TargetTrackingScaling", {"TargetValue": 70.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"}, "ScaleInCooldown": 600, "ScaleOutCooldown": 300}). - Efecto: scale-out en unos un minuto; el cooldown de scale-in de 600 s suprime el vaivén tras una ráfaga, y el cooldown de scale-out de 300 s evita el sobreaprovisionamiento durante un tren de picos.
8.4 Ejemplo resuelto 4: aritmética de concurrencia de alta resolución
- Con
ConcurrentRequestsPerModelHighResolutionen el objetivo 5, una carga de 18 peticiones concurrentes → 18 / 5 = 3,6, redondeado hacia arriba → 4 instancias. - La métrica emite cada 10 segundos en lugar de cada 1 minuto: detección aproximadamente 6× más rápida para el scale-out; el timing del scale-in no cambia.
- ¿Usas componentes de inferencia? La métrica pasa a ser
InferenceComponentConcurrentRequestsPerCopyHighResolution. - Varias políticas de target tracking pueden compartir un objetivo escalable: añade una segunda política sobre
CPUUtilizationconTargetValue = 50, y ambas mantienen sus propios objetivos contra el mismoDesiredInstanceCount.
8.5 La comparación de estrategias de escalado
Dimensión | Target tracking (recomendado) | Step scaling | Acciones programadas | Serverless (totalmente gestionado) |
|---|---|---|---|---|
Disparador | métrica vs objetivo | alarma vulnerada | cron/fecha | el propio tráfico |
Métricas | predefinida InvocationsPerInstance, alta resolución ConcurrentRequestsPer*, personalizada CPUUtilization / ExplanationsPerInstance, asincrónica ApproximateBacklogSizePerInstance | cualquier métrica de alarma | , | , |
Granularidad | 1 min, o 10 s de alta resolución | el periodo de tu alarma | horas fijas | automática |
Ajuste | mantenida en el objetivo, redondea hacia arriba | exacto (por ejemplo +1) | absoluto o porcentaje | opaco |
Cooldowns | ScaleInCooldown / ScaleOutCooldown (por defecto en SageMaker 300 s) | Cooldown (ejemplo 300) | , | , |
Escalado a 0 | no para variantes de tiempo real; asincrónica solo con una política de paso y una alarma extra | ✅ el mecanismo desde cero | ✅ si MinCapacity = 0 | ✅ siempre |
Mejor para | carga sostenida | ráfagas precisas, cero despertones | picos conocidos | tráfico intermitente |
Los cooldowns están en segundos y se aplican en ambas direcciones. ScaleInCooldown y ScaleOutCooldown son valores separados (el ejemplo documentado usa 600 y 300), el valor por defecto de la variante SageMaker es de 300 segundos, y los ajustes redondean hacia arriba: de modo que una política de target tracking nunca escala a una fracción de instancia y nunca escala hacia dentro más rápido de lo que permite su cooldown. Una pregunta que ponga los cooldowns en minutos, o que afirme que el scale-in y el scale-out comparten un solo valor, es incorrecta.
9. Inferencia asincrónica: escalado desde cero
9.1 Por qué la asincrónica es especial
Los endpoints asincrónicos tienen una cola delante, lo que significa que el backlog, no la tasa de peticiones, es la señal que importa. AWS documenta estas métricas de cola:
Métrica | Significado | Uso típico |
|---|---|---|
ApproximateBacklogSizePerInstance | peticiones encoladas divididas por instancias | target tracking, objetivo 5 |
ApproximateBacklogSize | profundidad absoluta de la cola | alarmas personalizadas |
ApproximateAgeOfOldestRequest | latencia de la cola | SLO de frescura |
HasBacklogWithoutCapacity | 1 cuando la cola no está vacía y instancias = 0 | la alarma de escalado desde cero |
9.2 El diseño de escalado desde cero
El target tracking no puede despertar un servicio que tiene capacidad cero. Con MinCapacity = 0, una política de target tracking no tiene instancias sobre las que calcular una métrica …PerInstance, así que no escalará hacia fuera desde cero. La respuesta documentada de AWS es una combinación: una política de step scaling con ScalingAdjustment = +1 y un cooldown de 300 segundos, impulsada por una alarma sobre HasBacklogWithoutCapacity con umbral 1, EvaluationPeriods = 2 (DatapointsToAlarm 2) y Period 60 s. El target tracking toma el relevo una vez que existe capacidad.
9.3 Ejemplo resuelto 5: aritmética de la cola y el despertar
- Configura
MinCapacity=0, MaxCapacity=5y una política de target tracking sobreApproximateBacklogSizePerInstanceconTargetValue = 5. - Una ráfaga encola 27 peticiones con 1 instancia en ejecución → 27 / 5 = 5,4, redondeado hacia arriba → 6 → limitado a
MaxCapacity= 5. - El tráfico se detiene; el scale-in devuelve el endpoint a 0 instancias y el gasto ocioso va a cero. Las peticiones que llegan mientras tanto se encolan, no se pierden:
ApproximateAgeOfOldestRequestinforma de cuánto ha esperado la más antigua. - La siguiente petición tras el reposo:
HasBacklogWithoutCapacitycambia a 1, se sostiene durante 2 periodos de evaluación de 60 s, dispara la alarma, la política de paso añade +1 instancia tras el cooldown de 300 s, y el target tracking se reanuda.
10. Elegir la opción de inferencia
10.1 Las cuatro opciones y sus límites duros
Tiempo real | Serverless | Asincrónica | Transformación por lotes | |
|---|---|---|---|---|
Endpoint | REST persistente | gestionado, escala a 0 | cola persistente, escala a 0 | ninguno (solo el job) |
Límite de carga útil | 25 MB | 4 MB | 1 GB | datasets de escala GB |
Tiempo de procesamiento | 60 s (8 min con streaming) | 60 s | 60 minutos | días |
Control de escalado | políticas de auto scaling (sección 8) | totalmente gestionado (+ Provisioned Concurrency opcional) | métricas de backlog más step scaling desde 0 | MaxConcurrentTransforms, número de instancias |
Forma de coste | pagas por las instancias aprovisionadas incluida la ociosidad | pagas por duración de la petición y datos | pagas mientras procesa, 0 de ociosidad | pagas por hora-instancia del job |
Mejor encaje | sostenido, de baja latencia, predecible | tráfico con picos o intermitente tolerante a arranques en frío | cargas útiles grandes, encolables, sensibles al coste | puntuación masiva sin conexión |
Monitorización | Model Monitor más captura de datos ✅ | ninguna de las dos soportada ❌ | éxito/error de SNS → S3 | BatchTransformInput |
Detalles de la transformación por lotes: MaxPayloadInMB como máximo 100, y MaxConcurrentTransforms × MaxPayloadInMB como máximo 100 MB.
Exclusiones de serverless (memoriza la lista): sin GPUs; sin imágenes de Marketplace ni registros privados; sin endpoints multi-modelo; sin configuración VPC; sin captura de datos; sin Model Monitor; sin múltiples variantes; sin pipelines de inferencia; imagen del contenedor como máximo 10 GB; convertir un endpoint de tiempo real existente a serverless se rechaza; Provisioned Concurrency es opcional.
10.2 La decisión
10.3 Ejemplo resuelto 6: 40 GB, cada noche, sin usuarios
Un equipo de fraude pide «un endpoint de tiempo real para nuestro trabajo nocturno de puntuación de 40 GB». La respuesta correcta es transformación por lotes:
- Sin tráfico interactivo → la única ventaja del tiempo real (la latencia) no tiene valor, y su forma de coste, pagar por instancias aprovisionadas incluidas las horas ociosas, es un desperdicio puro para un trabajo que se ejecuta una vez al día.
- 40 GB se sale del techo de 4 MB de serverless y del techo de 1 GB de la asincrónica; es territorio claramente de «datos de escala GB durante días».
- La transformación por lotes ejecuta instancias solo para el job:
MaxPayloadInMB ≤ 100yMaxConcurrentTransforms × MaxPayloadInMB ≤ 100 MBmantienen cada petición dentro de los límites,S3Outputrecoge los registros puntuados, y no existe endpoint entre ejecuciones: así que nada se factura a las 03:00. - La monitorización usa
BatchTransformInputen lugar de Model Monitor; si el equipo quiere más adelante detección de deriva, eso es una decisión separada sobre un endpoint de tiempo real o asincrónico.
- 📚 ¿Sabías que…? La guía de optimización de costes de AWS para inferencia se reduce a una frase: ajusta la elección a la forma del tráfico. La asincrónica se dimensiona para una tasa de procesamiento óptima más escalado a cero; serverless es por petición; el tiempo real es capacidad aprovisionada; y en todos ellos pueden comprarse SageMaker Savings Plans de 1 o 3 años que se aplican sobre Studio, procesamiento, entrenamiento, inferencia de tiempo real y transformación por lotes. Comprar un Savings Plan para un trabajo que se ejecuta 20 minutos cada noche es el desajuste clásico: el plan descuenta el uso comprometido, y un batch nocturno casi no tiene.
11. EventBridge y el volante de MLOps
11.1 Qué envía AWS, y a qué
SageMaker emite eventos a EventBridge casi en tiempo real para jobs, endpoints, paquetes de modelo, ejecuciones de pipeline y pasos de pipeline, y cambios de imagen. Los objetivos incluyen Lambda, Step Functions, Kinesis y SNS, y, de forma crítica, el propio SageMaker Pipelines es un objetivo:
Ajuste | Valor |
|---|---|
Objetivo | SageMaker Pipeline |
Acción del rol | SageMaker::StartPipelineExecution |
Mapeo de parámetros | SageMakerPipelineParameter |
Máximo de objetivos por regla | 5 |
Programaciones en buses custom / partner | no soportadas |
Programación programática | SDK PipelineSchedule (rate / cron) |
Disparadores de reentrenamiento (lista completa) | programación ( rate / cron, PipelineSchedule) y evento (alarma de CloudWatch, ModelPackageStateChange, S3 ObjectCreated) |
11.2 El volante
11.3 Ejemplo resuelto 7: monitorizar, alarmar, reentrenar, aprobar, desplegar
- Activa la captura de datos en el endpoint de producción para que las peticiones y respuestas aterricen en S3, y programa Model Monitor de forma horaria (
CronExpressionGenerator.hourly()). - Produce el baseline con un paso
QualityCheckusandoregister_new_baseline=trueyskip_check=trueen la primera ejecución; las ejecuciones posteriores comparan contra él. - Cuando la deriva supera la restricción, la alarma de CloudWatch entra en ALARM → la regla de EventBridge se dispara → objetivo = SageMaker Pipeline, invocando
StartPipelineExecutioncon unSageMakerPipelineParametermapeado. - El pipeline reentrena, evalúa, supera el paso Condition, registra una nueva versión como
PendingManualApproval→ la aprobación la cambia aApproved→ la regla de la plantilla de despliegue actualiza el endpoint. - Ejecuta el disparador de calendario junto al disparador de deriva:
cron(0 12 1 * ? *)reentrena el día 1 de cada mes a las 12:00 UTC, o usaPipelineSchedule(name, cron="15 10 ? * 6L 2022-2023")para una programación acotada. Recuerda como máximo 5 objetivos por regla y sin programación en buses de eventos custom o partner.
11.4 Infraestructura como código para toda la pila
Todo en esta lección es describible como código, y la guía de AWS apunta a CloudFormation directamente o a través de la AWS CDK: cdk synth emite una plantilla de CloudFormation por pila, y los constructos L1 Cfn* cubren la superficie: sagemaker.CfnEndpointConfig (incluido AsyncInferenceConfig), sagemaker.CfnPipeline, más los nativos AWS:SageMaker:Domain, AWS:SageMaker:UserProfile y AWS:SageMaker:Pipeline.
Codifica, como mínimo: VPC, KMS, el bucket de S3, el rol de ejecución del pipeline, el Model Package Group, CodePipeline + CodeBuild + CodeConnections, las reglas de EventBridge y el objetivo escalable con sus políticas. Para plantillas de proyecto AWS prefiere plantillas alojadas en S3 vía CfnTemplateProvider a los portafolios de Service Catalog, y una plantilla personalizada debe exponer SageMakerProjectName y SageMakerProjectId. Dividir la pila en DevStack y ProdStack te permite testear la infraestructura por unidad antes de que toque producción.
11.5 Actualizaciones de 2025 to 2026
Tres cambios verificados de 2025 to 2026 tocan el material de las secciones 8 a 13, y AWS ahora los anuncia mediante vocabulario de ciclo de vida en lugar de mediante retiras silenciosas. Los tres están documentados, fechados y son examinables.
1. El nombre del producto cambió. AWS documenta que «el Amazon SageMaker actual ha sido renombrado a Amazon SageMaker AI» (3 de diciembre de 2024), junto a una generación separada de SageMaker de nueva generación (Unified Studio, Catalog, Lakehouse, zero-ETL). Una opción de examen que diga SageMaker AI es actual, no exótica, y los identificadores que citas de la sección 8 no cambiaron con el renombrado: ServiceNamespace = sagemaker, ResourceId = endpoint/…/variant/…, SageMakerVariantInvocationsPerInstance y la acción del rol SageMaker:StartPipelineExecution siguen escribiéndose a la manera antigua.
2. Model Monitor y Clarify están en mantenimiento. El End of Support Notice de SageMaker AI lista Model Monitor y Clarify: junto con Ground Truth, A2I, Studio Lab, Debugger, Role Manager, Geospatial y Mechanical Turk: como «ya no abiertos a nuevos clientes a partir del 30 de julio de 2026». Lee esa frase con precisión: el estado es mantenimiento = sin clientes nuevos, sin funciones nuevas, los clientes existentes siguen usándolos. No es un cierre total, y no es un rebranding hacia Bedrock Model Evaluations. El volante de deriva de 11.2 sigue funcionando por tanto para los clientes existentes; para trabajo nuevo AWS apunta a métricas de CloudWatch y detección de anomalías, CloudWatch Evidently, EventBridge + Lambda, SHAP y, en el lado generativo, Bedrock Model Evaluations: que es exactamente por lo que el ejemplo 4.2.2 de la guía del examen ahora dice «Clarify más Bedrock Model Evaluations».
3. La guía del examen se movió. El historial de cambios de AWS lista v1.0 publicada el 26 de marzo de 2026 y v1.1 publicada el 30 de abril de 2026, y afirma que las actualizaciones aparecen en el examen aproximadamente un mes después de la publicación (trata la v1.1 como el ancla fiable; la fecha de la v1.0 es una republicación de documentación). Ejemplos cambiados que tocan esta lección: 1.1.3 (inferencia asincrónica y serverless), 1.3.4 (Bedrock, Amazon Quick, Kiro, SageMaker AI) y 4.2.2 (Clarify más Bedrock Model Evaluations). Sin cambios, y por tanto seguro seguir citando: 65 preguntas (50 puntuadas + 15 sin puntuar), 90 minutos, aprobación 700 / 1000, validez de 3 años, dominios 20 / 24 / 28 / 14 / 14 %.
Fecha (verificada) | Cambio | Qué significa en el examen |
|---|---|---|
3 dic 2024 | Amazon SageMaker renombrado Amazon SageMaker AI | el nombre nuevo es el actual; los identificadores de servicio, métrica y API no cambian |
26 mar 2026 | guía del examen v1.0 listada en el historial de cambios | línea base para el conjunto de contenido de 2026 |
30 abr 2026 | guía del examen v1.1 publicada | en vigor en el examen desde alrededor de finales de mayo de 2026; ejemplos cambiados 1.1.3, 1.3.4, 4.2.2 |
30 jun 2026 | fin de soporte de Ground Truth Plus; Amazon Kendra entra en mantenimiento | fechas de distractores, no respuestas de MLOps |
30 jul 2026 | Model Monitor, Clarify, Ground Truth, A2I, Studio Lab, Debugger, Role Manager, Geospatial, Mechanical Turk y Kendra cerrados a nuevos clientes | mantenimiento ≠ cierre total ≠ rebranding: cita el estado, no un rumor |
30 sep 2026 | fin de soporte de Mechanical Turk (la entrada de What's New dice 29 sep: el resumen señala el conflicto) | no cites el día |
24 sep 2026 | publicada la referencia AWS Service Lifecycle | usa el vocabulario de tres palabras de abajo |
Vocabulario de ciclo de vida (AWS General Reference): Maintenance = sin clientes nuevos, sin funciones nuevas, aún soportado · Sunset = fin de operaciones planificado, normalmente unos 12 meses · Full Shutdown = eliminado del portafolio.
- 📚 ¿Sabías que…? AWS declara que los cambios en la guía del examen aparecen en el examen en vivo aproximadamente un mes después de la publicación: así que el material de la v1.1 (30 de abril de 2026) fue examinable desde alrededor de finales de mayo de 2026. El corolario corre en ambas direcciones: una función anunciada después de la versión de tu guía no es automáticamente evaluable, mientras que un ejemplo cambiado como 4.2.2 → Clarify más Bedrock Model Evaluations es evaluable mucho antes de que cualquier fecha de retiro importe. Lee el historial de cambios, no el blog de lanzamientos.
12. Veredicto comparativo: MLOps gestionado frente a scripts DIY frente a operaciones manuales
Veredicto comparativo: MLOps gestionado (SageMaker Pipelines / Registry / Projects) frente a scripts DIY (código pegamento en CodeBuild) frente a operaciones manuales (notebooks y clics en la consola)
- Operaciones manuales. Un científico entrena en un notebook, exporta un archivo de modelo, y una segunda persona hace clic para crear el endpoint. Es rápido para una persona y un modelo, no necesita diseño de IAM ni rol de pipeline, y falla en cada pregunta auditable: sin versionado (las versiones del registry empiezan en 1 y no hay paso 2), sin registro de aprobación (
ModelApprovalStatusnunca existió), sin reproducibilidad (los datos, los hiperparámetros y el código son lo que fuera el estado del notebook), y sin camino hacia la madurez de Nivel 1. Úsalo solo para exploración. - Scripts DIY. Código pegamento de shell o Python en CodeBuild que llama a
training.py,evaluate.py,upload_model.py. Es totalmente personalizable y portátil: puedes acoplar cualquier sistema de CI y cualquier framework de pruebas, y ninguna limitación de servicio te constriñe. Sus modos de fallo son los que ahora debes inventarte tú: ordenación de pasos (el DAG lo construyes a mano), caché (escribes tu propia reutilización de artefactos), semántica de fallo (una métrica mala debe convertirse en una build fallida con un mensaje), puertas de aprobación (implementas la máquina de estados), límites de paralelismo, reintentos y la estela de evidencia de CloudTrail. Estás reimplementando 16 tipos de paso, y la clave de respuestas del examen es la gestionada. - MLOps gestionado. SageMaker Pipelines da un DAG JSON con 16 tipos de paso, puertas Condition y Fail, paralelismo por ejecución y caché optativa; el Model Registry da grupos, versiones desde 1, y las transiciones de aprobación que inician CI/CD; los Projects dan aprovisionamiento con CloudFormation / Service Catalog de repos, pipeline, grupo de modelo, bucket, ECR y reglas de EventBridge; EventBridge da el bucle de reentrenamiento casi en tiempo real con como máximo 5 objetivos por regla. Sus límites: todo tiene forma de SageMaker (un job de entrenamiento no SageMaker necesita un paso custom o Lambda), la elección de plantillas es finita (plantillas de CodeCommit eliminadas el 28 oct 2024) y el tracking de experimentos se ha movido a MLflow, con Studio Classic como superficie heredada.
- Regla práctica para el examen: la pregunta trata de cómo llega un modelo a producción, con versionado, una puerta de aprobación y una estela de auditoría → MLOps gestionado (Pipelines + Registry + Projects). La pregunta pide una herramienta a medida o un sistema de CI no AWS existente → scripts DIY, pero mantén el registry como punto de entrega. La pregunta describe a un científico solo iterando sobre un prototipo → lo manual es aceptable, y solo entonces, y si la opción menciona reentrenamiento disparado por deriva, la respuesta es el bucle EventBridge →
StartPipelineExecution, no un script cron.
Señal de decisión | Manual | Scripts DIY | MLOps gestionado |
|---|---|---|---|
Definición de ejecución reproducible | No | Solo si la escribes | Sí (DAG JSON, verificado por esquema) |
Semántica de fallo a nivel de paso | No | DIY | Sí (paso Fail más mensaje personalizado) |
Registry de modelos versionado | No | DIY | Sí (grupos, versiones desde 1) |
Aprobación que inicia el despliegue | No | DIY | Sí ( Pending → Approved inicia CI/CD) |
Límite de paralelismo por ejecución | n/a | DIY | Sí ( ParallelismConfiguration) |
Caché de resultados de pasos | No | DIY | Sí (optativa, PT1H, solo ejecuciones exitosas) |
Aprovisionado por infraestructura como código | No | Sí | Sí (Projects = Service Catalog / CloudFormation) |
Reentrenamiento disparado por deriva | No | DIY | Sí (Monitor → alarma → EventBridge → pipeline) |
Funciona fuera de SageMaker | n/a | Sí | Parcialmente (pasos custom y Lambda) |
Evidencia de auditoría | historial del notebook | tus logs | CloudTrail más registry más historial de ejecuciones del pipeline |
13. Trampas del examen y los números que merecen memorizarse
Las trampas que cuestan puntos en este material exacto:
- «El SDK de Experiments es la forma actual de rastrear ejecuciones.» Es solo Studio Classic; AWS recomienda MLflow on SageMaker AI para la experiencia nueva de Studio.
- «Iniciar un SageMaker Project desde una plantilla de CodeCommit.» Esas plantillas se eliminaron el 28 de octubre de 2024: usa GitHub, GitLab o Bitbucket a través de CodeConnections (
CodeStarSourceConnection, con tagsagemaker=true). - «Configurar
ALBRequestCountPerTargeten un endpoint de SageMaker.» Esa es una métrica genérica de Application Auto Scaling que necesita unResourceLabelde ALB; la métrica de SageMaker esSageMakerVariantInvocationsPerInstance. - «
PendingManualApproval → Rejecteddespliega el modelo anterior.» No hace ninguna acción; soloApproved → Rejectedredespliega el paqueteApprovedmás reciente. - «El target tracking por sí solo escala la asincrónica desde cero.» No puede: necesitas una política de paso (+1, cooldown 300) más una alarma
HasBacklogWithoutCapacity(umbral 1, 2 × 60 s). - «
ExpireAfteres un timestamp Unix, y las ejecuciones cacheadas incluyen fallos.» Es ISO 8601 (PT1H) y solo se reutilizan ejecuciones exitosas. - «El paralelismo fuerza el orden.»
MaxParallelExecutionStepslimita la concurrencia por ejecución; el orden esproperties(datos) oDependsOn(timing). - «Serverless soporta VPC, Model Monitor y endpoints multi-modelo.» No soporta ninguno de ellos, limita las cargas útiles a 4 MB y las imágenes a 10 GB, y las GPU no están disponibles.
- «Los cron pueden adjuntarse a cualquier bus de eventos.» Sin programaciones en buses custom o partner, y una regla tiene como máximo 5 objetivos.
- «Un modelo versionado puede desplegarse en cualquier estado de aprobación.» Debe estar en
Approved.
Número examinable | Valor |
|---|---|
Tipos de paso del pipeline | 16 (incl. Fail, Condition, Lambda, Callback, ClarifyCheck, QualityCheck) |
Ejemplo de ParallelismConfiguration | 50, por ejecución (2 ejecuciones ⇒ 100) |
Caché de pasos | desactivada por defecto · ExpireAfter ISO 8601 (PT1H) · solo ejecuciones exitosas |
Versiones del paquete de modelo | empiezan en 1, +1 por paquete en el grupo |
ModelApprovalStatus | Approved / Rejected / PendingManualApproval |
Transiciones de aprobación que inician CI/CD | Pending → Approved, Rejected → Approved |
Objetivos de EventBridge por regla | 5 máx. |
Objetivos de target / concurrencia / backlog | 70 inv/instancia/min · 5 concurrentes/modelo · 5 backlog/instancia |
Periodo de métrica | estándar 1 min vs alta resolución 10 s |
Alarma HasBacklogWithoutCapacity | umbral 1 · Evaluation y Datapoints 2 · Period 60 s · paso +1 · Cooldown 300 |
Cooldowns | ScaleIn 600 / ScaleOut 300 (ejemplo); por defecto en SageMaker 300 s; los ajustes redondean hacia arriba |
Techos de carga útil | tiempo real 25 MB · serverless 4 MB · asincrónica 1 GB |
Tiempos de procesamiento | tiempo real 60 s (8 min streaming) · serverless 60 s · asincrónica 60 min · batch días |
Carga útil de transformación por lotes | MaxPayloadInMB ≤ 100; MaxConcurrentTransforms × MaxPayloadInMB ≤ 100 MB |
Tamaño de imagen serverless | ≤ 10 GB |
Tamaños / creación del servidor MLflow | Small, Medium, Large · ≤ 25 min |
Plantillas de CodeCommit eliminadas | 28 oct 2024 |
Timeout del paso Lambda | ≤ 10 min, por defecto 2 min |
Preguntas AIF-C01 / dominios | 65 (50 puntuadas + 15 sin puntuar) · 20 / 24 / 28 / 14 / 14 % |
Marcado como no verificado en esta lección (no lo afirmes en el examen): la frase «requests per target» tal como aparece en algunos dumps de estudio, se mapea al ALBRequestCountPerTarget genérico, que no está documentado para endpoints de SageMaker, así que trátalo como InvocationsPerInstance salvo que haya un ALB en la arquitectura; el recuento exacto de plantillas de proyecto proporcionadas (AWS enumera familias, no una lista numerada); la hoja de ruta del endpoint multi-modelo (docs vivos y sin deprecar en octubre de 2026, pero sin página pública de roadmap); el peso por pregunta de MLOps específicamente (solo se publican pesos de dominio); cualquier fecha de fin de soporte de Experiments en Studio Classic; precios del servidor de MLflow; los tamaños de memoria y la concurrencia máxima de los endpoints serverless; cuotas de endpoint (instancias por variante, variantes por endpoint); el valor numérico por defecto de MaxParallelExecutionSteps (los docs muestran cómo configurarlo, ejemplo 50, pero no publican un valor por defecto); y GitHub Actions como respuesta de examen, aparece solo en un blog y en una plantilla personalizada de aws-samples, mientras que las respuestas seguras son CodePipeline / CodeBuild y Jenkins.
- 📚 ¿Sabías que…? El paso Lambda de SageMaker tiene por defecto un timeout de 2 minutos y permite hasta 10 minutos: un techo deliberadamente pequeño, porque el paso existe para trabajo de orquestación ligero (cambiar una aprobación, llamar a una API, mover un archivo), no para ejecutar un job de entrenamiento. Si tu «paso» necesita una hora, es un paso Processing disfrazado.
14. Casos Reales
AWS publica historias de clientes porque cada una es una versión documentada de una decisión que esta lección enseñó en abstracto. Los cinco de abajo son los casos relevantes para MLOps, pipelines e inferencia, citados con los servicios AWS exactos, las cifras impresas exactas y la página de origen: un porcentaje sin fuente es marketing, y un porcentaje sin «antes» es peor.
Cómo citar un caso de estudio en una respuesta de examen. Cada cifra de esta sección es afirmación de cliente o de AWS y está sin auditar; solo Sun Finance revela una base muestral (585 imágenes) y solo Adobe revela su propio conjunto de pruebas. Lee «hasta» como un techo, nunca como una media. AWS publica exactamente una tasa de resultado de proyectos, 65 % de los proyectos del Generative AI Innovation Center llegaron a producción en 2025, de más de 1.000 implementaciones, de modo que una opción que afirme que «todos» o «la mayoría» de los proyectos de IA de AWS se entregan es incorrecta, y la trampa inversa (afirmar una tasa de fallo publicada) también lo es. No cites las cifras no recuperadas que circulan: las tasas de estancamiento de pilotos de agentes y las afirmaciones de terceros de que «el 95 % de los pilotos de GenAI fallan» no están documentadas por AWS.
14.1 Forethought: la inferencia es una decisión de pipeline con una factura pegada
- Servicios: endpoints multi-modelo de SageMaker, Serverless Inference y Model Deployment, reemplazando Amazon EKS autoadministrado.
- Cifras: −66 % de coste de inferencia con endpoints multi-modelo y mejor latencia; ≈ −80 % con Serverless Inference (titular hasta −80 %); más del 80 % de la inferencia con GPU se ejecuta ahora en SageMaker; 30 M de interacciones/año; un equipo de 3 personas que ya no podía ejecutar los modelos y Kubernetes (excepciones de memoria, caídas).
- Fuente:
aws.amazon.com/solutions/case-studies/forethought-technologies-case-study(la página no lleva chip de año: trata la fecha como no declarada). - Ángulo de examen: esta es la sección 10 con una factura adjunta. Capacidad GPU compartida → endpoints multi-modelo; pequeños clasificadores con picos → serverless. El coste que eliminaron fue el impuesto DIY de servir: la columna de «scripts DIY» del Veredicto comparativo, aplicada a la inferencia en lugar de a CI/CD.
14.2 HAYAT HOLDING: entrenamiento y ajuste gestionados en lugar de entornos construidos a mano
- Servicios: AWS IoT Greengrass (SiteWise Edge Gateway) → Model Training + Automatic Model Tuning + Model Deployment de SageMaker, con SageMaker Edge Manager sirviendo el modelo en el dispositivo.
- Cifras: 194 sensores transmitidos por OPC-UA; los entornos de ML construidos a mano eran «laboriosos y engorrosos»; resultado documentado: 300.000 USD al año ahorrados más mayor calidad de panel.
- Fuente:
aws.amazon.com/blogs/machine-learning/hayat-holding-uses-amazon-sagemaker-to-increase-product-quality-and-optimize-manufacturing-output-saving-300000-annually(2023). - Ángulo de examen: esto es madurez de Nivel 1 en una fábrica: un pipeline automatizado desde el sensor hasta el modelo ajustado, con Automatic Model Tuning reemplazando el barrido manual de hiperparámetros con 104 entras... con 194 entradas y Edge Manager poseyendo el camino de despliegue en el dispositivo.
14.3 RareJob: el entrenamiento Spot arregló un problema de cola, no un problema de modelo
- Servicios: entrenamiento en SageMaker sobre spot gestionado, alimentado por AWS Glue y Amazon Athena, reemplazando un PC local y después una configuración EC2/ECS con cuello de botella.
- Cifras: −25 % de tiempo de entrenamiento, más de 10× de eficiencia de desarrollo, 100 horas al mes ahorradas, resultados de puntuación en 2 to 3 minutos; un modelo por desarrollador era el techo antes del cambio.
- Fuente:
aws.amazon.com/solutions/case-studies/rare-job-case-study(2020). - Ángulo de examen: el cuello de botella era el rendimiento de los experimentos, no la exactitud. Los trabajos Spot paralelos son la palanca de coste documentada para entrenar, y la misma lógica de «pagar capacidad interrumpida con un descuento» que convierte a un Savings Plan o a una estrategia Spot en una respuesta del Dominio 4 (coste).
14.4 Chronomics: cuatro meses de DIY frente a tres semanas de AutoML gestionado
- Servicios: Amazon Rekognition Custom Labels (AutoML), puntuado con
DetectCustomLabels. - Cifras: 4 meses de visión por computador personalizada interna nunca alcanzó el objetivo; Custom Labels se entregó en 3 to 4 semanas con 96,5 % de exactitud / F1 97,9 %. Subir el umbral de confianza a 0,99 da una precisión de 99,6 % mientras se descartan el 5 % de las predicciones; 0,999 da 99,87 % descartando el 27 %.
- Fuente:
aws.amazon.com/blogs/machine-learning/chronomics-detects-covid-19-test-results-with-amazon-rekognition-custom-labels(2022). - Ángulo de examen: dos lecciones. Primero, para una tarea de visión estrecha, la capa gestionada gana a una construcción interna: el patrón de fallo documentado es CV hecho a mano. Segundo, cada umbral que subes crea una cola descartada que necesita un camino humano (la razón por la que existe A2I), de modo que una pregunta de precisión es siempre también una pregunta de cobertura.
14.5 Sun Finance: un pipeline multi-paso donde el primer prototipo fue rechazado
- Servicios: Amazon Textract (OCR) → Amazon Rekognition (respaldo y comprobaciones faciales) → Claude Sonnet 4 (solo estructuración) → reglas de validación → Amazon Titan Multimodal Embeddings en S3 Vectors para similitud de fraude; construido con el AWS Generative AI Innovation Center, evaluado en 585 imágenes.
- Cifras: exactitud 79,73 % → 90,80 % (número de ID 74,32 → 89,40 %, tipo de documento 78,43 → 96,40 %), −91 % de coste por documento, 20 horas → menos de 5 segundos, detección de fraude 81 %. Intento 1, solo Claude Sonnet 4, obtuvo 61,8 % en general y 43 % en el número de ID y fue rechazado.
- Fuente:
aws.amazon.com/blogs/machine-learning/sun-finance-automates-id-extraction-and-fraud-detection-with-generative-ai-on-aws(2026). - Ángulo de examen: esto es una mentalidad de paso Condition en forma de producción: construir la baseline, medir, rechazar el intento fallido, re-arquitectar (separar el OCR del razonamiento), volver a medir. La evaluación es una fase, no una casilla, y la extracción de PII solo con LLM es el prototipo fallido documentado.
Tabla 14-A: Antes / después, exactamente como AWS los imprimió
Caso | Métrica | Antes | Después | Movimiento |
|---|---|---|---|---|
Sun Finance | exactitud global del documento | 79,73 % | 90,80 % | +11,07 pp |
Sun Finance | coste por documento · tiempo de manejo | baseline · hasta 20 h | −91 % · < 5 s | ~1000× más rápido |
Sun Finance | primer intento, solo LLM | : | 61,8 % (número de ID 43 %) | rechazado |
Chronomics | tiempo hasta un modelo funcional | 4 meses DIY, objetivo fallido | 3 to 4 semanas | ~4× más rápido |
Chronomics | exactitud / F1 | objetivo nunca alcanzado | 96,5 % / 97,9 % | entregado |
RareJob | tiempo de entrenamiento · eficiencia del desarrollador | baseline · 1 modelo/desarrollador | −25 % · > 10× | +100 h/mes |
HAYAT | coste anual de infraestructura | entornos de ML construidos a mano | 300.000 USD/año ahorrados | 194 sensores |
Forethought | coste de inferencia | Amazon EKS autoadministrado | −66 % MME · ≈ −80 % serverless | >80 % de la inferencia con GPU |
Tabla 14-B: Elegir la capa: prefabricado → ML gestionado a medida → generativo
Capa | Cuándo AWS dice usarla | Casos y cifras | Servicios |
|---|---|---|---|
Servicio de IA prefabricado | tarea estrecha y estructurada; «sin experiencia de ML» | Anthem automatizó el 80 % del flujo de trabajo de reclamaciones (objetivo 90 %+, 20 min/reclamación antes); Chronomics 96,5 % en 3 to 4 semanas | Amazon Textract, Rekognition Custom Labels |
ML gestionado a medida | tus datos y tu modelo, pero te niegas a poseer la infraestructura | HAYAT 300 k USD/año; RareJob 10× de eficiencia; Forethought −66 % / −80 % | entrenamiento de SageMaker, spot gestionado, Automatic Model Tuning, endpoints multi-modelo, Serverless Inference, Edge Manager |
IA generativa + RAG | razonamiento, resumen y recuperación sobre documentos | Sun Finance 90,8 %; Nippon India > 95 % de exactitud con alucinación bajando 90 to 95 %; Adobe + 20 % de exactitud de recuperación; Bynder − 75 % de tiempo de búsqueda | Amazon Bedrock, Knowledge Bases, Guardrails, embeddings en S3 Vectors |
- 📚 ¿Sabías que…? AWS publica exactamente una cifra de tasa de producción para su propio trabajo de IA generativa: el 65 % de los proyectos del Generative AI Innovation Center llegaron a producción en 2025, de más de 1.000 implementaciones, con el más rápido en 45 días, y AWS enmarca el método como las Five V's: Value → Visualize → Validate → Verify → Venture. El número que vale la pena interiorizar es el otro 35 %: AWS espera que planifiques para proyectos que se estancan, y es por lo que baseline antes de construir y evaluación como fase aparecen en cada caso de arriba.
Preguntas de Práctica (Practice Questions)
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un pipeline debe preprocesar datos, entrenar un modelo, evaluarlo, registrar el modelo solo cuando el MSE de la evaluación esté por debajo de un umbral y, en caso contrario, terminar la ejecución con un mensaje personalizado. ¿Qué conjunto de pasos es correcto?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
¿Qué afirmación sobre la caché de pasos en SageMaker Pipelines es VERDADERA?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un paso de entrenamiento debe consumir la salida del paso 1 como datos, pero también debe esperar al paso 2, que no produce nada de lo que el entrenador necesite. ¿Cuál es el enfoque correcto?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
En una plantilla de SageMaker Project, ¿qué transición de aprobación inicia el despliegue de CI/CD?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un paquete de modelo que es la versión 7 en un grupo de paquetes de modelo debe desplegarse en un endpoint de producción. ¿Qué afirmación es correcta?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un endpoint de tiempo real debe mantener las invocaciones medias cerca de 70 por instancia por minuto. ¿Qué configuración consigue esto?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un endpoint asincrónico ve ráfagas separadas por largos periodos ociosos. Requisitos: coste ocioso cero y un despertar rápido en la primera petición tras el reposo. ¿Qué diseño es correcto?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
¿Qué afirmación sobre las métricas de escalado de endpoints de SageMaker es correcta?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un equipo debe puntuar un dataset de 40 GB cada noche. No hay tráfico interactivo y ningún usuario espera una respuesta. ¿Qué opción es la MEJOR?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
¿Qué par de afirmaciones sobre las plantillas preconstruidas de SageMaker Projects es correcto?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un ingeniero quiere que la deriva de Model Monitor dispare automáticamente un pipeline de reentrenamiento. ¿Qué arquitectura es correcta?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
¿Qué configuración de endpoint de inferencia serverless es válida?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
A 30 de julio de 2026, ¿cuál es el estado documentado de SageMaker Model Monitor y SageMaker Clarify?
Cómo responder
Pregunta de opción múltiple con 4 opciones. Selecciona una opción y elige Comprobar respuesta.
Un equipo de soporte SaaS de tres personas autoadministra actualmente la inferencia con GPU en Amazon EKS, con excepciones de memoria y caídas, sirviendo 30 millones de interacciones al año con varios modelos por cliente. ¿Qué resultado coincide con el caso de estudio publicado por AWS?
Cómo responder
Ejercicio de rellenar espacios con 4 huecos. Escribe las palabras que faltan y comprueba tu respuesta.
Completa las cifras verificadas de los casos de estudio y las actualizaciones de 2026 de esta lección:
Forethought redujo el coste de inferencia un espacio con endpoints multimodelo y aproximadamente un espacio con Serverless Inference. Chronomics entregó un modelo de Rekognition Custom Labels en espacio semanas con un 96,5 por ciento de exactitud. SageMaker Model Monitor y SageMaker Clarify se cerraron a clientes nuevos el espacio de 2026.
Banco de Palabras, arrastra las palabras a los espacios de arriba:
Cómo responder
Ejercicio de emparejamiento con 6 pares. Une cada elemento de la izquierda con su respuesta de la derecha.
Haz coincidir cada concepto de MLOps o de escalado con su valor AWS verificado:
Arrastra las respuestas desde aquí:
Cómo responder
Ejercicio de ordenación con 6 elementos. Colócalos en el orden correcto y comprueba tu respuesta.
Ordena los pasos del volante de reentrenamiento disparado por deriva, desde el tráfico de producción hasta un modelo redesplegado:
Trampas de la lección a revisar antes de continuar:
- El SDK de Experiments es solo Studio Classic: la guía actual es MLflow on SageMaker AI, con los artefactos en tu S3;
- Las plantillas de proyecto de CodeCommit se eliminaron el 28 de octubre de 2024: los flujos de GitHub usan CodeConnections, la acción
CodeStarSourceConnection, el tagsagemaker=truey ambas acciones IAM; - El target tracking es recomendado, pero no puede escalar desde cero: el despertar asincrónico necesita una política de paso (+1, cooldown 300) más una alarma
HasBacklogWithoutCapacity; - la aprobación impulsa CI/CD:
PendingManualApproval → ApprovedyRejected → Approvedinician el pipeline de despliegue,Pending → Rejectedno hace nada, yApproved → Rejectedredespliega el modelo Approved más reciente; - los modelos versionados deben estar en
Approved, las versiones empiezan en 1, y un paquete versionado debe estar en un grupo; - la caché está desactivada por defecto,
ExpireAfteres ISO 8601 (PT1H), y solo se reutilizan ejecuciones exitosas; - el paralelismo es por ejecución y nunca establece ordenación;
- los techos de carga útil son 25 MB / 4 MB / 1 GB para tiempo real / serverless / asincrónica, y la transformación por lotes no tiene endpoint alguno;
- una regla de EventBridge admite como máximo 5 objetivos y no puede llevar una programación en un bus custom o partner.
Conclusiones Clave (Key Takeaways):
- Madurez: AWS usa un modelo de tres niveles, L0 manual, L1 un pipeline automatizado (el pipeline es el artefacto desplegado), L2 CI/CD completa con un registry al servicio de muchos modelos y pruebas automáticas, y no es la escala 0 to 4 de Azure ni el encuadre Inicial→Repetible→Fiable→Escalable del blog de AWS; MLOps se mapea a la Tarea 1.3 del Dominio 1 de un examen de 65 preguntas (50 puntuadas + 15 sin puntuar) con pesos 20 / 24 / 28 / 14 / 14 %.
- Pipelines: un SageMaker Pipeline es un DAG JSON (verificado por esquema, ciclos rechazados) producido por el editor visual, el SDK, boto3 o CloudFormation, con 16 tipos de paso; las aristas de datos usan
properties, las aristas solo de ordenación usanDependsOn,ParallelismConfigurationlimita la concurrencia por ejecución (ejemplo 50), y la caché es optativa víaCacheConfigconExpireAfterISO 8601 (PT1H) para solo ejecuciones exitosas. - Puertas y aprobación: un paso Condition se bifurca sobre
evaluation.jsonmedianteproperty_fileshacia Register model, y el paso Fail termina la ejecución como Failed con un mensaje personalizado; en el registry, las versiones empiezan en 1,ModelApprovalStatus∈ {Approved,Rejected,PendingManualApproval}, soloApproveddespliega,Pending → ApprovedyRejected → Approvedinician CI/CD,Pending → Rejectedes silencioso, yApproved → Rejectedredespliega el modelo Approved más reciente. - Projects y Git: los SageMaker Projects son productos de Service Catalog / CloudFormation que aprovisionan repos, pipeline, CodePipeline o Jenkins, grupo de modelo, bucket, ECR y reglas de EventBridge; las plantillas de CodeCommit se eliminaron el 28 oct 2024, de modo que GitHub usa CodeConnections (
CodeStarSourceConnection, tagsagemaker=true, IAMcodestar-connections:UseConnectionycodeconnections:UseConnection), y las plantillas personalizadas necesitanSageMakerProjectName/SageMakerProjectId. - Escalado: usa target tracking (recomendado) sobre
ServiceNamespace=sagemaker,ResourceId=endpoint/{name}/variant/{variant},ScalableDimension=sagemaker:variant:DesiredInstanceCount, conSageMakerVariantInvocationsPerInstancea 70 o métricas de concurrencia de alta resolución emitiendo cada 10 s con un objetivo de 5; los ajustes redondean hacia arriba, los cooldowns están en segundos (por defecto 300, ejemplo 600 / 300), y el escalado asincrónico desde cero = política de paso +1 con cooldown de 300 s impulsada porHasBacklogWithoutCapacitycon umbral 1 sobre 2 × 60 s. - Elecciones de servicio: tiempo real 25 MB / 60 s (8 min streaming), serverless 4 MB / 60 s sin GPU, VPC, captura de datos, Model Monitor, MME, múltiples variantes ni pipelines de inferencia, e imágenes ≤ 10 GB; asincrónica 1 GB / 60 min escalando a 0; batch de escala GB durante días sin endpoint (
MaxPayloadInMB≤ 100 y concurrencia × carga útil ≤ 100 MB): elige por forma del tráfico y precifícalo con SageMaker Savings Plans de 1 o 3 años donde el uso es estable. - El volante: Model Monitor horario → alarma de CloudWatch → EventBridge →
StartPipelineExecution(acción del rolSageMaker:StartPipelineExecution, parámetros víaSageMakerPipelineParameter, ≤ 5 objetivos por regla, sin programaciones en buses custom/partner, SDKPipelineSchedule, ejemplo de calendariocron(0 12 1 * ? *)), con CDK/CloudFormation codificando toda la pila, y el MLOps gestionado gana a los scripts DIY y a los clics manuales siempre que se requieran versionado, una puerta de aprobación y una estela de auditoría.