Los modelos de IA en contenedores pueden reiniciarse a pesar de que haya memoria libre en el host, porque los límites de su cgroup, acelerador o supervisor son más estrictos que la vista de la RAM de toda la máquina.
Un panel de servidor doméstico puede mostrar varios gigabytes libres mientras un contenedor de inferencia desaparece y vuelve con un nuevo ID de proceso. El contenedor puede alcanzar su propio límite de memoria, fallar una comprobación de estado durante la recuperación, agotar la memoria de la GPU o cerrarse después de un error de asignación. Una política de reinicio convierte entonces ese fallo local en un reinicio del modelo aparentemente espontáneo.
El contenedor tiene un límite de memoria diferente al del host
Los grupos de control de Linux contabilizan y limitan la memoria de un grupo de procesos seleccionado. Un contenedor puede alcanzar memory.max o un límite del entorno de ejecución mientras la RAM del host no relacionada sigue estando disponible para el kernel, por lo que la cifra de memoria libre de toda la máquina no describe el límite de asignación aplicado a ese servicio.
Una explicación detallada de la contabilización de memoria de cgroup separa la memoria anónima, los archivos asignados y la caché asignada a un grupo de control. Esa contabilización muestra por qué los pesos asignados desde el disco, los búferes temporales del modelo y la caché de páginas pueden consumir el presupuesto de un contenedor incluso cuando una vista sencilla de RSS del proceso parece indicar un valor menor.
Los límites también pueden estar anidados: un contenedor de modelos puede encontrarse dentro de un servicio de Compose, una división de systemd, una máquina virtual o un grupo de orquestación. El límite activo más estricto puede activar la recuperación o una eliminación por falta de memoria antes de que el host físico se acerque al agotamiento global.
La presión de memoria puede bloquear las comprobaciones de estado antes de una eliminación por falta de memoria
Al acercarse al límite, el kernel puede recuperar caché, examinar la memoria y ralentizar las asignaciones. El modelo puede seguir activo, pero responder demasiado despacio para una sonda de estado, lo que hace que el supervisor lo termine e inicie un reemplazo sin registrar una eliminación por falta de memoria a nivel del contenedor.
El marco de información sobre bloqueos por presión mide el tiempo perdido porque las tareas esperan debido a la presión de memoria, CPU o E/S, en lugar de basarse únicamente en la utilización. La información sobre bloqueos por presión explica por qué los bytes libres y la capacidad de respuesta del servicio pueden divergir durante una recuperación intensa.
La carga de IA genera picos irregulares: la deserialización puede mantener temporalmente los pesos comprimidos y expandidos, la cuantización puede asignar espacio de trabajo y los trabajadores paralelos pueden duplicar los búferes. Por tanto, la huella estable posterior a la carga subestima el breve pico que coincide con la sonda fallida.
Los fallos de la GPU y la política de reinicio pueden confundirse con una falta de memoria del host
Las métricas de RAM del host normalmente excluyen la VRAM dedicada. Un modelo puede fallar al asignar memoria en la GPU porque los pesos, la caché KV, los kernels y otra carga ocupan el acelerador, y luego cerrarse con un error de la aplicación mientras el host sigue informando de que dispone de abundante memoria del sistema.
La documentación sobre gestión de recursos distingue los límites de memoria de los contenedores de una falta de memoria en todo el nodo, y explica que los límites los aplican el entorno de ejecución y el kernel, no la etiqueta de memoria libre del panel. Por tanto, el reinicio lo determina la política de reinicio de la carga de trabajo, no la medición de memoria en sí.
El error consiste en asumir que cada nuevo ID de contenedor demuestra un evento de falta de memoria. Las actualizaciones de imágenes, los tiempos de espera del watchdog, las redistribuciones manuales, los reinicios del dispositivo y los fallos de la aplicación producen el mismo síntoma visible. El motivo de salida, el registro del kernel, los eventos del cgroup y los errores de la GPU deben coincidir antes de atribuir la causa a la memoria.
Relaciona el motivo de salida con cada límite de memoria
Reproduce una carga de modelo mientras registras en un mismo reloj memory.current, memory.max, memory.events, la RSS del proceso y los archivos asignados, MemAvailable del host, los totales de bloqueos por presión, la memoria de la GPU, la latencia de la sonda de estado, el código de salida del proceso y el número de reinicios del supervisor.
Usa la contención entre contenedores como contexto y repite la prueba con el mismo modelo bajo un límite de contenedor más alto, una política de reinicio desactivada y sin ninguna carga competidora en el acelerador. Cambia solo un límite en cada ejecución para que un reinicio correcto no oculte el fallo original.
Clasifica el evento como OOM del cgroup, OOM global, fallo de asignación de la GPU, terminación por comprobación de estado o salida de la aplicación antes de cambiar los límites. Si el pico es legítimo, conserva margen; si una sonda termina un modelo que se está recuperando pero está sano, ajusta el tiempo de la sonda sin ocultar bloqueos reales.
Centro de Tecnología e IA
Más para leer

¿Cómo afecta la reducción de resolución de series temporales a la detección de anomalías en hogares inteligentes?
Descubre cómo el ancho de los intervalos, la agregación, el antialiasing, los datos faltantes, la duración de los eventos y la retención multiescala cambian...

¿Cómo combina una cuadrícula de ocupación las señales débiles del hogar inteligente?
Aprende cómo las celdas espaciales, los modelos de sensores, las actualizaciones de log-odds, la atenuación, la evidencia correlacionada y los umbrales convierten señales débiles...

¿Cómo afecta la normalización fotométrica a la agrupación privada de rostros?
Descubre cómo la corrección de la iluminación cambia los recortes faciales, los embeddings, las distancias entre clústeres, los umbrales, la sobrenormalización y la evaluación...

