llama.cpp 项目引入了对 Granite-Switch 架构的支持,这是一种密集模型变体,包含 N 个嵌入式的 LoRA 适配器,并通过控制令牌在每个 token 级别进行选择。该实现用图内因果“路由器”注意力机制替换了之前的概念验证全局粘性索引,以解析适配器索引。
- 新的路由器使用单头因果注意力层在图内恢复适配器索引,修复了之前多个序列相互泄漏适配器状态导致的并发问题。
- 通过将路由器键和值存储在每序列的 KV 缓存中,并发请求现在得以隔离,无需进行全局状态管理。
- 该架构支持序列中间切换,允许在单个序列内针对特定任务(如可回答性或查询重写)激活不同的适配器。
- 已知限制是:一旦某个适配器在序列中被触发,它将保持激活状态直到序列结束,因为路由器增益是平坦的,缺乏近期偏好。
此更改使得 CPU 上的高效多任务推理成为可能,通过动态切换专用适配器而无需重新加载模型,同时为并发批处理请求保持隔离。