Disaggregated Servingとは
Disaggregated Servingとは、AIが文章を生成する処理を「入力を読み込む段階」と「答えを1語ずつ作る段階」に分け、それぞれを別々のGPU(マシン)に担当させて効率を上げるアーキテクチャです。日本語にすると「分離型のAI推論」。1台ですべてをこなすのではなく、工程を分業させる発想だと考えると分かりやすいでしょう。
2つの段階は性質が正反対
大規模言語モデルが答えを返すまでには、大きく2つの段階があります。最初がプレフィル=質問文や資料をまとめて読み込む段階で、計算パワーをたくさん使う「力仕事」です。次がデコード=答えを1語ずつ紡ぎ出す段階で、計算は軽い一方、メモリへの素早い出し入れがものを言います。料理にたとえるなら、プレフィルは大量の仕込み、デコードは一皿ずつの盛り付け。求められる得意分野がまるで違うのです。
なぜ分けると効率が上がるのか
性質の違う2つを同じGPUに同居させると、互いに足を引っ張り合います。重い仕込み(プレフィル)が走っている間は、盛り付け(デコード)が待たされて答えの出だしや進みが遅くなる、といった具合。そこで段階ごとにGPUを分け、それぞれに合った台数と設定で動かすのがこの方式です。干渉がなくなり、同じGPUの台数でもさばける処理量が増えます。分けたぶん段階の間で途中データを受け渡す必要は出ますが、サーバ同士を直結する高速通信のおかげで、その手間は小さく収まります。
経営から見た意味
この設計が狙うのは、高価なGPUを無駄なく使い切ってAIの運用コストを下げること。AIサービスでは「最初の一文字が出るまでの速さ」と「その後すらすら出続ける速さ」の両方が体感を左右しますが、同居方式ではどちらかを優先せざるを得ませんでした。分離方式なら両方を独立に調整できます。大規模にAIを動かす事業者ほど効いてくる、コスト最適化の打ち手のひとつです。
Topic1つの依頼が、処理の途中でマシンを乗り換える
おもしろいのは、あなたの1回の質問が、答えが出るまでの途中で担当マシンを「乗り換える」点です。読み込み(プレフィル)を終えたマシンは、そこまでの計算結果(AIの一時的な記憶にあたるデータ)を生成担当のマシンへ手渡し、バトンを受け取った側が続きを書き上げます。このバトンパスが一瞬で済むのは、サーバ同士を直接つなぐ高速なネットワーク技術があるから。分業が成り立つ裏には、見えない配線の進歩が効いているわけです。
Disaggregated Servingに関するよくある質問
- プレフィルとデコードを分けると、AIの答えの質は変わりますか?
- 変わりません。処理する場所を分けて効率を上げるだけで、出力の中身には影響しません。狙いはあくまで速さとコストの改善です。
- どんな規模のサービスでも導入する意味がありますか?
- 主に大量の依頼を同時にさばく大規模なAIサービスで効果が大きい設計です。小規模な利用では、分けることで生じる受け渡しの手間が見合わない場合もあります。