
1. fragmentación de memoria
Fragmentación interna
Los sistemas prealican una gran parte de la memoria para cada solicitud, suponiendo la longitud máxima posible de salida (por ejemplo, tokens 2048). Sin embargo, si una solicitud solo genera una salida corta, gran parte de esa memoria reservada no se usa, lo que lleva a desechos significativos.
Fragmentación externa
Debido a que diferentes solicitudes reservan trozos de tamaños variables, la memoria de la GPU se dispersa con pequeños huecos inutilizables, lo que dificulta ajustar nuevas solicitudes incluso si hay memoria libre total disponible. Nuestras fuentes muestran que en los sistemas existentes, solo el 20.4% – 38.2% de la memoria de caché de KV en realidad se usa para almacenar estados tokens, y el resto es el desperdicio.
2. No hay memoria compartida
Técnicas de decodificación avanzadas como el muestreo paralelo o la búsqueda de haz a menudo generan múltiples salidas a partir de un solo mensaje, lo que significa que podrían compartir partes del caché de KV. Sin embargo, los sistemas existentes no pueden compartir fácilmente esta memoria porque el caché de KV de cada secuencia está en su propio bloque separado y contiguo.




