- インタラクティブなアプリケーションに推論を組み込むとき
- 速い推論器と遅い推論器を組み合わせるとき
マルチ・ステージ推論パターンは推論結果を複数段階に分けてクライアントにレスポンスする場合に有効な構成です。機械学習では一般的に、構造化データを扱うモデルは推論が高速で、画像やテキスト等の非構造化データを扱う場合は遅くなる傾向にあります。サービスの使われ方として、リクエストに対して素早くレスポンスを返す必要がある一方で、多少遅れてでもより良い結果を返すことでユーザ体験を改善できることもあります。WebアプリケーションでMLを扱う場合、スピードと精度のバランスが重要になりますが、インタラクティブな使われ方がされるのであれば、すぐに簡単な推論結果を返して表示した後に、ユーザの使用中により良い推論結果を次の画面(またはスクロールした画面等々)に用意しておく、というライフサイクルが考えられます。本パターンはそうしたインタラクティブなアプリケーションで効果を発揮するものです。
本パターンは2種類の推論器を配置します。素早く同期的に推論結果をレスポンスする推論器と、非同期で処理の重い推論器です。前者はリクエストに対して素早くレスポンスを返すため、REST APIやGRPC等をインターフェイスとすると良いでしょう。後者は処理時間が発生するため、非同期なキューやメッセージングが有効です。前者と後者で搭載するモデルの種類はクライアントにレスポンスするスピードおよび推論の精度次第ですが、例えば入力データが数字、カテゴリ、画像、自然言語等の組み合わせになる場合、前者には計算量が少なくて済む数字とカテゴリ、後者で画像と自然言語を扱う、という分担が考えられます。
- 素早くレスポンスしつつ、より良い推論結果も提供することが可能
- 複数のインターフェイスと推論器を用意するため、運用負荷が増える
- 推論器のスピードと精度
- 遅い推論器の結果の出し方