llama.cppプロジェクトは、制御トークンによってトークンごとに選択されるN個の埋め込みLoRAアダプターを備えた密接モデルバリアントであるGranite-Switchアーキテクチャのサポートを導入しました。この実装は、アダプターインデックスを解決するために、以前の概念実証用のグローバルスティッキーインデックスをグラフ内因果「ルーター」アテンションメカニズムに置き換えました。

  • 新しいルーターは、単一ヘッドの因果アテンションレイヤーを使用してグラフ内でアダプターインデックスを復元し、複数のシーケンスが以前にアダプター状態を互いに漏洩させていた並行性の問題を修正しました。
  • ルーターのキーと値をシーケンスごとのKVキャッシュに保存することで、グローバルな状態管理を必要とせずに並行リクエストを分離しています。
  • このアーキテクチャはシーケンス内の切り替えをサポートしており、特定のタスク(例:回答可能性やクエリ書き換え)に対して単一のシーケンス内で異なるアダプターをアクティブにすることができます。
  • アダプターがシーケンス内で一度発火すると、ルーターゲインが平坦で直近のバイアスを持たないため、シーケンスが終了するまでアクティブなままになるという既知の制限が残っています。

この変更により、モデルを再読み込みせずに専門化されたアダプター間で動的に切り替えることでCPU上で効率的なマルチタスク推論が可能になり、並行バッチリクエストの分離も維持されます。