El proyecto llama.cpp introduce soporte para la arquitectura Granite-Switch, una variante de modelo denso que cuenta con N adaptadores LoRA incrustados que se seleccionan por token mediante tokens de control. Esta implementación reemplaza un índice pegajoso global previo de prueba de concepto con un mecanismo de atención "enrutador" causal en el grafo para resolver los índices de adaptador.
- El nuevo enrutador utiliza una capa de atención causal de cabeza única para recuperar el índice del adaptador dentro del grafo, corrigiendo problemas de concurrencia donde múltiples secuencias anteriormente filtraban estados de adaptador entre sí.
- Al almacenar las claves y valores del enrutador en la caché KV por secuencia, las solicitudes concurrentes están ahora aisladas sin requerir gestión de estado global.
- La arquitectura admite el cambio en medio de la secuencia, permitiendo activar diferentes adaptadores para tareas específicas como la capacidad de respuesta o la reescritura de consultas dentro de una sola secuencia.
- Una limitación conocida persiste: una vez que un adaptador se activa dentro de una secuencia, permanece activo hasta el final de la secuencia, ya que la ganancia del enrutador es plana y carece de sesgo de recencia.
Este cambio permite una inferencia multi-tarea eficiente en CPU al cambiar dinámicamente entre adaptadores especializados sin recargar modelos, manteniendo el aislamiento para solicitudes concurrentes en lote.