Microservice vertical pattern
Usecase
- 1操作に対して複数の推論を実行するとき
- 複数の推論間で実行順や依存関係があるとき
Architecture
複数の推論モデルを順列に実行するときのアーキテクチャとして直列マイクロサービス・パターンがあります。直列マイクロサービス・パターンでは、複数の機械学習モデルを別サーバで並列して配置します。それぞれに順番に(同期的に)推論リクエストを送信し、最後の推論を集計した後に推論結果を得ます。各機械学習モデル間で実行順の依存関係がある場合、直列マイクロサービス・パターンが有効です。推論モデルを個別のサーバに配置するため、各モデルの更新やサーバ障害を他のモデルやサーバから分離することが可能です。
クライアントと推論サーバの間には推論を仲介するプロキシを置くことが可能です。プロキシを配置することでデータ取得や推論順の制御をクライアントから隔離することが期待できます。推論のための入力データはプロキシで一括して収集することも、各推論サーバで取得することも可能です(Diagram2
)。前者のメリットはDWHやストレージへのアクセス回数を減らし、オーバーヘッドを削減できることです。後者のメリットは各モデルや前の推論次第で取得するデータを制御できることで、複雑なフローを実現することができます。
Diagram
Diagram1
Diagram2
Pros
- 各推論モデルを順番に実行することが可能。
- 前の推論モデルの結果次第で次モデルの推論リクエスト先を選択する構成も可能。
- 各推論でサーバやコードベースを分割することで、リソースの効率化や障害分離が可能。
Cons
- 複数の推論を順番に実行するため、所要時間が長くなることがある。
- 前の推論結果を得られないと次の推論を実行することができず、ボトルネックになる。
- システム構成が複雑になる可能性がある。
Needs consideration
- 各推論モデルの所要時間の和が結果を得るまでの所要時間になるため、パフォーマンス・チューニングが必要。
- システム構成が複雑になるため、インターフェイスやサーバ等を共通化しシンプルに構成することが望ましい。