RadixAttention
リクエストが終わってもKVキャッシュを捨てず、見たことのあるプレフィックスすべてを基数木に保持して再利用する、SGLangの方式。
着想の出発点は、実際のトラフィックについての観察だ。リクエストの冒頭はほとんどの場合共通している。同じシステムプロンプト、同じfew-shotの例、同じ文書、一つ前のターンまでの同じ会話履歴などである。従来のサービング方式は、その部分を毎回計算し直す。ここではキャッシュされたキーとバリューのテンソルを基数木に索引する。各辺はトークン列で、新しいリクエストは最長の共通プレフィックスに一致させ、残りだけを計算すればよい。メモリが尽きればLRUで木から追い出し、スケジューラもこの木を認識していて、プレフィックスを共有するリクエストをまとめ、次のヒットの直前にノードが落とされないようにする。エージェントのループや構造化出力のようにプレフィックス共有が多い負荷では、効果は数%ではなく数倍のスループットに達する。