Mapeo de memoria de archivos de modelos: cómo las páginas compartidas reducen el uso duplicado de RAM

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.

Los archivos de modelos asignados en memoria pueden reducir el uso duplicado de RAM porque los procesos hacen referencia a las mismas páginas limpias respaldadas por archivos mediante la caché de páginas del sistema operativo.

Cargar dos trabajadores de modelos locales no siempre requiere dos copias completas del archivo de pesos en la memoria física. Con la asignación de memoria, cada proceso recibe direcciones virtuales vinculadas a desplazamientos del archivo y las páginas se cargan bajo demanda. El sistema operativo puede proporcionar páginas limpias idénticas desde una única copia física almacenada en caché, manteniendo separado el estado de ejecución privado de cada proceso.

La asignación de memoria conecta las direcciones virtuales con los desplazamientos del archivo

Un archivo asignado aparece dentro del espacio de direcciones de un proceso sin que la aplicación tenga que leerlo por completo en un búfer independiente del montón. Acceder a una página ausente provoca un fallo; el núcleo carga o localiza la página correspondiente respaldada por el archivo y actualiza la tabla de páginas del proceso.

El manual de asignación de memoria de Linux documenta las asignaciones MAP_SHARED y MAP_PRIVATE, así como la relación entre las actualizaciones de las asignaciones y el objeto subyacente. Los pesos de modelos de solo lectura suelen permanecer como datos limpios respaldados por archivos, lo que permite reutilizarlos mediante la caché de páginas. Esta distinción sigue siendo importante en condiciones operativas domésticas realistas.

La paginación bajo demanda puede acortar el inicio y limitar la memoria residente cuando solo se utiliza una parte del modelo. También puede trasladar el coste al primer acceso, por lo que los fallos de páginas frías y la latencia del almacenamiento pueden aparecer durante la inferencia en lugar de hacerlo durante una fase de carga explícita.

La caché de páginas puede atender varios procesos a la vez

Dos procesos pueden asignar el mismo inodo y los mismos desplazamientos del modelo en espacios de direcciones virtuales diferentes. Cuando ambos leen la misma página limpia, el núcleo puede asignar la misma página física almacenada en caché a las dos tablas de páginas. Las asignaciones virtuales son independientes; los datos residentes subyacentes pueden compartirse.

La documentación de Linux sobre los datos de asignación de páginas explica cómo el espacio de usuario puede inspeccionar las asignaciones de páginas y la información de los marcos de página, sujeto a restricciones de acceso. Estas interfaces ayudan a mostrar si regiones virtuales aparentemente independientes hacen referencia a páginas físicas compartidas. El estado intermedio debe seguir siendo visible durante el diagnóstico y la revisión posteriores.

Por eso, sumar el RSS de cada proceso puede sobrestimar el uso total de memoria física: una página compartida aparece como residente en cada proceso. El tamaño de conjunto proporcional distribuye las páginas compartidas entre las asignaciones y suele ser más útil para estimar la huella combinada de los trabajadores de modelos.

El estado privado y las páginas modificadas también se multiplican

Las cachés KV, las activaciones, las áreas del asignador, los búferes del tokenizador y el estado de las solicitudes se crean por trabajador o por sesión. Escribir mediante una asignación privada activa la copia en escritura, creando una página anónima que ya no puede compartir la copia limpia respaldada por el archivo. Las distintas versiones del archivo también impiden la reutilización.

El manual de smaps de Linux clasifica las asignaciones privadas, compartidas, limpias y modificadas, así como la información de smaps para cada asignación. Estas categorías explican por qué dos trabajadores que comparten los pesos aún pueden mostrar un aumento considerable de memoria a medida que crecen la concurrencia y la longitud del contexto.

El límite es que la asignación reduce la duplicación de los pesos limpios, no la memoria total de inferencia. Los archivos de modelos montados en red también pueden producir una latencia inestable de los fallos, y los cargadores comprimidos o transformados pueden asignar una segunda representación descomprimida que anule la compartición esperada.

Compara un trabajador con dos trabajadores asignados en memoria

Comienza con la caché fría, inicia un trabajador de modelos, ejecuta una instrucción fija y registra el tiempo de inicio, los fallos de página, el RSS, el PSS y la memoria privada modificada. Inicia un segundo trabajador idéntico y repite el proceso sin cambiar el archivo del modelo ni las opciones del cargador.

Relaciona el resultado con las ventajas y desventajas de la compresión descritas en las ventajas y desventajas de la compresión: los archivos más pequeños ayudan al almacenamiento, mientras que los beneficios de la asignación dependen de la representación en memoria que se utilice realmente. Inspecciona cada asignación del modelo en smaps en lugar de basarte en el total de un solo proceso.

El resultado es satisfactorio si el segundo trabajador añade mucha menos memoria de pesos que el primero, produce la misma salida y mantiene una latencia fría aceptable. Si el PSS casi se duplica, comprueba la identidad del archivo, las asignaciones modificables, la descompresión y las copias ocultas antes de asumir que mmap es ineficaz.

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.