¿Qué provoca que la memoria del servidor de modelos locales aumente gradualmente entre solicitudes?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

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

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.