TL;DR
DolphinRoutingは、PD分離LLM配信で各要求をプロンプト長・P/D両側のキャッシュ考慮後入力長・出力長でクラスタリングし、クラスタごとにローカル事前計算(集約)かリモート事前計算(分離)かをSLOフィードバックから学習する。実行時は特徴抽出・クラスタ割当・表引きのみ。実クラスタ評価では混合ワークロードと実データでDynamo比P90 TTFT 5.7–7.9%、P90 TPOT 2.6–10.1%削減(k-means)と報告。
既存手法との違い
原論文の直接比較対象は、NVIDIA Dynamoの長さベース条件付きルーティング(有効入力長・prefill負荷などのルール)である。比較条件は実PD分離クラスタ上で、3つの公開ベンチマーク、混合ワークロード、実データ、2つのP/D割当を用いる。DolphinRoutingはDynamoと異なり、rawプロンプト長、P側/D側のeffective ISL、出力長を同時に使い、クラスタ単位の二値決定をend-to-endのSLOフィードバックから学習する。DistServeやSplitwise、TaiChiなどは関連研究として位置づけられており、提示本文からはDolphinRoutingとの直接比較結果は確認できない。
使える条件
前提は、P/Dのリソース割当が与えられていること、オフラインで履歴トレースから特徴量抽出器・出力長予測器・クラスタ・プロファイルを作れること、P側/D側のキャッシュヒットを反映したeffective ISLを取得できること、実行時にクラスタ割当と表引きで経路を選べること。ポリシー探索は飽和負荷下のSLOフィードバックを用いる。評価は実PD分離クラスタ上の3公開ベンチマーク、混合ワークロード、実データ、2つのP/D割当に限られる。GPU構成、モデル規模、クラスタ数Kの感度などは提示本文からは確認できない。
限界と未検証の範囲
原論文の評価範囲は2つのP/D割当と限定されたベンチマーク・混合ワークロード・実データであり、他の割当、SLO目標、モデル、ハードウェア、ワークロードへの一般化は提示本文からは確認できない。出力長はオンラインではClairvoyantによる短/中/長の粗い推定を使うため、推定誤差の影響評価は本文からは確認できない。SLOフィードバックは飽和負荷下で測られており、非飽和時の挙動は不明。クラスタごとに単一の二値決定を割り当てる設計上、同一クラスタ内の要求差をどこまで吸収できるかは本文からは確認できない。実行時の特徴抽出・クラスタ割当・表引きのオーバーヘッドは定量化されていない。
解説
ねえ智也くん、LLMの配信ってprefillとdecodeで分けるPD分離が流行ってるって聞いたけど、なんで分けるの?
prefillは計算律速で、decodeはメモリ律速なんだよ。同じGPUに同居させるとお互いに干渉するから、別のワーカープールに分けてKVキャッシュを転送する。
ふーん。じゃあ分離すれば万事OKってわけでもないんだ?
そう。論文のFigure 1では、TTFT/TPOTの目標によって集約と分離のどっちが勝つか変わるって示してる。ある目標だと集約が97%で分離が42%、別の目標だと集約7%で分離98%みたいに逆転する。
え、そんなに逆転するんだ。じゃあリクエストごとにどっちの経路に流すか選ぶのが大事ってこと?
そういう問題設定。DolphinRoutingは、各リクエストをP/D分離構成のまま、ローカルprefill(集約)かリモートprefill(分離)のどっちかに振り分ける経路選択を扱ってる。
Dynamoにも条件付きで分離するルールがあるって聞いたけど、何が違うの?
Dynamoはeffectiveな入力長とかprefill負荷のルールで決める。DolphinRoutingはrawプロンプト長、P側とD側それぞれのキャッシュ考慮後ISL、それに出力長も一緒に使ってクラスタを作り、クラスタごとに一つの二値決定を学習する。
P側とD側で別々にeffective ISLを持つってどういうこと?
同じリクエストでもprefillワーカーとdecodeワーカーで持ってるキャッシュの量が違うから、それぞれ生プロンプトからヒット分を引いた長さを別々に特徴量化する。それでキャッシュの非対称性を捉える。
なるほど。で、そのクラスタの分け方と経路の決め方は?
オフラインで4つの特徴をlog(1+x)して標準化して、k-meansかGMMでK個にクラスタリング。各クラスタに集約か分離のどちらか一つの行動を割り当てる。
その割り当てはどうやって決めるの?
まずper-cluster scanningで、他のクラスタを固定して対象クラスタを集約で一定時間回して報酬、分離で回して報酬を測って初期化。その後ε-greedyで探索して仕上げる。報酬はend-to-endのSLO達成率。
実行時は学習した表を引くだけ?
そう。特徴抽出、クラスタ割当、表引きだけで経路が決まる。追加のコストモデル採点はしない。オンラインの出力長はClairvoyantっていうXGBoost分類器で短/中/長の粗い推定を使う。
評価はどうだったの?
実PD分離クラスタで、3つの公開ベンチマーク、混合ワークロード、実データ、2つのP/D割当。混合ワークロードではk-meansでDynamo比のP90 TTFTが7.5〜7.9%減、P90 TPOTが6.5〜10.1%減。実データではTTFTが5.7〜6.5%減、TPOTが2.6〜5.5%減。
TTFTが5秒台とかのSLOでも効くの?
TL;DRだと混合ワークロードと実データで、Dynamo比のP90 TTFTが5.7〜7.9%減、P90 TPOTが2.6〜10.1%減と報告されてる。ただ評価はあくまで提示された2つの割当の範囲。
意義としてはどんなところが面白いの?
キャッシュの非対称性を経路選択に直接結びつけて、しかもポリシー探索をオフラインに追い出して実行時は表引きだけにしたところ。スケジューリングやワーカー内実行はバックエンドに任せてる。
制約や弱点は?
評価は2つのP/D割当と限られたベンチマークだから、他の割当やSLO目標、モデル、ハードウェアへの一般化は本文からは確認できない。出力長の推定誤差の影響も評価されてないし、SLOフィードバックは飽和負荷下で測られてるから非飽和時の挙動は不明。
クラスタごとに一つの決定だから、同じクラスタ内で性質がバラけたらもったいないね。
そう。あとは実行時の特徴抽出・クラスタ割当・表引きのオーバーヘッドも定量化されてないって書いてある。
ふーん、じゃあわたしもイルカに routing 習わせたら学食の混雑もルーティングできるかな?
学食はSLOフィードバックを飽和負荷で測る前に、まず行列を減らして。