学習
- データのバッチに対する誤差逆伝播で重みを更新する
- マルチノードのクラスタで数時間から数週間かかる
- PyTorch、JAX、DeepSpeed、Megatronなどのツールを使う
- 既存モデルで要件を満たせない場合にのみ自前で行う価値がある
プロンプトから応答までに実際に何が起きているか。生成ループ、レイテンシを左右する2つのフェーズ、処理が載るハードウェア、そしてそれらを表す指標を扱います。
学習は大規模なデータセットでモデルの重みを調整する処理で、通常は大規模なアクセラレータクラスタ上で一度だけ行います。推論は固定された重みを新しい入力に適用する処理で、製品が受けるすべてのリクエストに対して継続的に走ります。学習コストは基本的に一度きりの投資ですが、推論コストはトラフィックとともに積み上がります。だからこそサービング効率がAI製品の採算を決めます。
関連する区別として、推論フレームワークはモデルを効率よく実行するもの、推論サーバーはそれをバッチング、キューイング、ストリーミング、ヘルスチェック、オートスケーリング、HTTPまたはgRPC APIで包むものです。本番システムには両方が必要です。
prefillとdecodeの分離が、サービングの挙動のほとんどを説明します。長いプロンプトは最初のトークンまでの時間を悪化させ、長い出力は総レイテンシを悪化させます。そしてサービング最適化のページにある最適化のほとんどは、どちらか一方のフェーズを狙ったものです。トークン単位の逐次生成は支配的な方式ですが唯一の方式ではありません。拡散型の言語モデルは反復的な精緻化によって文章全体をまとめて生成し、レイテンシの挙動も異なる、活発な研究方向です。
汎用でどこでも使えますが、並列スループットは限られます。小規模モデルや強く量子化したモデル、プロトタイピング、アクセラレータのないエッジ機器では十分実用的です。
LLMサービングの既定の選択肢です。数千の並列コアと広帯域メモリ(HBM)が、このワークロードを支配する行列積に適合します。エコシステムはCUDAとROCmです。
専用設計のテンソルアクセラレータ(たとえばXLA/JAXと組み合わせたTPU)は大規模運用で効率的になり得ますが、ソフトウェアエコシステムが狭くなり、プロバイダーへの依存が生じます。
選定基準はモデルサイズ、リクエスト量、レイテンシ目標、コスト、そしてすでに運用しているインフラです。ブラウザ、エッジ、モバイルでの実行はWeb推論とエッジとモバイルで扱います。
| 指標 | 意味 | 特に重要な場面 |
|---|---|---|
| TTFT | 最初のトークンまでの時間。キュー待ちとprefillが支配的 | チャットなどの対話型UI全般 |
| ITL / TPOT | トークン間のレイテンシ。出力トークンあたりの時間は応答全体での平均値 | 体感されるストリーミング速度 |
| E2EL | リクエストのエンドツーエンドのレイテンシ。TPOTはおおよそ (E2EL - TTFT) / (出力トークン数 - 1) | バッチ処理の各段やツール呼び出しの連鎖 |
| TPS / RPS | 指定した同時実行数における毎秒の出力トークン数とリクエスト数 | キャパシティとコストの計画 |
| Goodput | レイテンシ目標を満たしたリクエストだけを数えた値 | SLOを課された本番サービス |