La memoria de un servidor de modelos local suele aumentar gradualmente porque las cachés y los asignadores conservan bloques reutilizables, aunque las referencias sin límites o las fugas nativas pueden provocar un crecimiento real.
Después de cada solicitud al servidor doméstico, un panel puede mostrar que la RAM o la VRAM aumentan sin volver al nivel inicial. El entorno de ejecución puede conservar bloques KV, entradas de prefijo, kernels, grafos, espacios de trabajo y bloques de tensores liberados para reutilizarlos. Las longitudes variables de los prompts pueden fragmentar los pools, mientras que los registros, las sesiones, los búferes de imagen o las extensiones pueden conservar objetos indefinidamente, por lo que estos mecanismos requieren evidencias y límites diferentes.
Los asignadores en caché reservan bloques liberados para reutilizarlos
Los frameworks de GPU evitan las costosas asignaciones de dispositivo conservando los bloques liberados en un pool propiedad del proceso. Los tensores de la aplicación pueden haber desaparecido, mientras el controlador sigue informando que el pool reservado está siendo utilizado por el servidor de modelos. Esta distinción sigue siendo visible durante las pruebas domésticas posteriores.
Un análisis del asignador explica cómo los bloques de memoria GPU en caché redondean, dividen, combinan y almacenan en caché los bloques de CUDA. El patrón característico es que la memoria de tensores asignada disminuya después de una solicitud, mientras la memoria reservada permanece alta y las solicitudes posteriores la reutilizan.
Este nivel estable no es automáticamente una fuga. Se vuelve perjudicial cuando el pool impide que otro servicio realice asignaciones o sigue creciendo con solicitudes repetidas de forma idéntica después del calentamiento. El resultado intermedio debe seguir siendo inspeccionable antes de continuar con la automatización.
Las cachés de servicio y las formas de las solicitudes amplían el conjunto de trabajo previsto
Las cachés KV crecen con el contexto activo, las cachés de prefijos conservan prompts reutilizables y los grafos o kernels compilados abarcan las formas de lote observadas. Las nuevas longitudes de contexto, modalidades y configuraciones de concurrencia pueden añadir entradas entre solicitudes. Ese límite debe medirse por separado en condiciones operativas realistas.
La investigación sobre la fragmentación de memoria de los LLM identifica la fragmentación entre los espacios de memoria de activaciones y de caché KV al servir LLM. Esta observación explica por qué la capacidad total puede aumentar aunque ninguna solicitud activa individual sea grande. La consecuencia práctica aparece cuando varias fuentes compiten por un contexto limitado.
Registra el número de entradas de caché y las clases de formas. Un crecimiento que se detiene cuando se estabiliza la distribución de carga de trabajo indica un calentamiento acotado; un crecimiento proporcional al número total de solicitudes o a los identificadores de sesión únicos sugiere que falta una política de expulsión. Esta dependencia debe mantenerse explícita en la interfaz final.
Los objetos de CPU retenidos y los búferes nativos producen un aumento real
Los historiales de solicitudes, las colas de transmisión, las etiquetas de métricas, las salidas del tokenizador, las imágenes cargadas, los búferes fijados del host y las asignaciones de extensiones pueden seguir referenciados después de completarse. Las instantáneas de la GPU pueden parecer estables mientras el RSS del proceso continúa aumentando. Por tanto, el resultado debe comprobarse con respecto a las evidencias originales.
Una investigación práctica de la memoria asignada frente a la reservada separa las señales de memoria asignada, reservada y del proceso. Esta visión por capas evita diagnosticar erróneamente un problema de retención en la CPU como un comportamiento del asignador de la GPU. Esta distinción sigue siendo visible durante las pruebas domésticas posteriores.
El límite de fallo es un aumento puntual seguido de un nivel máximo estable. Llámalo fuga solo cuando solicitudes idénticas controladas produzcan un crecimiento continuo de la memoria retenida después de contabilizar los límites de caché, la recolección de basura y los pools esperados.
Construye una curva de retención de memoria por solicitud
Reproduce cientos de solicitudes idénticas y, después, solicitudes con longitudes y modalidades mixtas, mientras registras los bytes asignados y reservados de la GPU, las entradas KV y de prefijo, la caché de grafos, la memoria fijada, el RSS del proceso, el número de objetos, las sesiones de solicitudes, los reinicios de trabajadores y las instantáneas del asignador.
Usa la reserva de memoria posterior a la solicitud para distinguir la reserva deliberada después de una solicitud. Repite la prueba con cada caché opcional, extensión, ruta de carga y etiqueta de métricas desactivada por separado, manteniendo fijos el modelo y la concurrencia. El resultado intermedio debe seguir siendo inspeccionable antes de continuar con la automatización.
Acepta un calentamiento acotado que alcance un nivel estable dentro del presupuesto de memoria declarado. Añade expulsión cuando la cardinalidad de la caché crezca sin aportar beneficios, normaliza las formas de las solicitudes cuando domine la fragmentación y aísla una fuga real solo después de que las pilas de asignaciones retenidas señalen a un responsable.
Centro de Tecnología e IA
Más para leer

¿Qué causa los bucles de reconexión de WebSocket en una interfaz remota de IA doméstica?
Diagnostica los bucles de WebSocket en las capas de enlace, proxy, autenticación, latido, ruta de red, recuperación de sesión y espera progresiva del cliente.

¿Qué provoca que las sumas de comprobación de las copias de seguridad no coincidan después de una transferencia interrumpida?
Rastrea las discrepancias de las sumas de comprobación mediante instantáneas de origen, manifiestos de fragmentos, desplazamientos de reanudación, archivos parciales, transformaciones, escrituras en el...

¿Qué causa entidades domésticas duplicadas en un grafo de conocimiento privado?
Diagnostica los nodos duplicados del grafo de conocimiento separando las variantes de extracción, las claves de identidad, los umbrales de resolución, la procedencia de...

