オンライン予測 vs バッチ予測

AI Platform Prediction では、トレーニング済みのモデルから予測を取得するために、「オンライン予測」(「HTTP予測」)と「バッチ予測」の 2 つの方法が用意されています。どちらもクラウドでホストされた機械学習モデルに入力データを渡し、各データ インスタンスについて推定を取得します。違いを次の表に示します。

オンライン予測 バッチ予測
予測のレイテンシを最小限に抑えるように最適化される。 ジョブ内の大量のインスタンスを処理し、より複雑なモデルを実行するように最適化される。
リクエストごとに 1 つまたは複数のインスタンスを処理できる。 リクエストごとに 1 つまたは複数のインスタンスを処理できる。
予測はレスポンス メッセージで返される。 予測は、指定した Cloud Storage の場所の出力ファイルに書き込まれる。
入力データは JSON 文字列として直接渡される。 入力データは、Cloud Storage の場所にある 1 つ以上のファイルの URI として間接的に渡される。
可能な限り早く戻される。 非同期リクエスト。

次の IAM 役割を持つアカウントは、オンライン予測をリクエストできます。

次の IAM ロールを持つアカウントは、バッチ予測をリクエストできます。

モデルのデプロイ時に選択したランタイム バージョンとリージョンで実行される。 ランタイム バージョン 2.1 以前を使用して、使用可能なリージョンで実行できる。ただし、デプロイしたモデルのデフォルト バージョンで実行する必要がある。
AI Platform Prediction にデプロイされたモデルを実行する。 AI Platform Prediction にデプロイされたモデル、またはアクセス可能な Google Cloud Storage の場所に保存されているモデルを実行する。
さまざまなタイプの仮想マシンを予測ノードに使用するように構成可能。 AI Platform Prediction にデプロイされたモデルを実行する場合、mls1-c1-m2 マシンタイプを使用する必要がある。
scikit-learn および XGBoost モデルとともに、TensorFlow SavedModel またはカスタム予測ルーチン(ベータ版)から予測可能。 TensorFlow SavedModel から予測可能。
ノード時間あたり $0.045147 から $0.151962(南北アメリカ)。料金は選択したマシンタイプによって異なります。 ノード時間あたり $0.0791205(南北アメリカ)

アプリケーションのニーズによって、使用すべき予測の種類が決まります。

  • アプリケーションの入力に応じてリクエストを送信する場合など、タイムリーな推定が必要となる状況では、一般にオンライン予測の使用をおすすめします。

  • すぐに結果が必要となるわけではなく、累積されたデータを処理する場合は、バッチ予測が最適です。たとえば、最後のジョブ以降に収集されたすべてのデータの予測を取得する定期的なジョブなどです。

使用する予測方法が決定したら、予測料金に差額が発生する可能性も含めて通知することをおすすめします。

バッチ予測のレイテンシ

使用するモデルが単純で入力インスタンス セットが少数の場合、オンライン予測とバッチ予測では同じ予測リクエストを完了するのに要する時間にかなりの差があることがわかります。オンライン リクエストではほぼ即時に返される予測が、バッチジョブでは数分かかることがあります。これは、2 つの予測方法で使用されているインフラストラクチャが異なることによる副作用です。バッチ予測ジョブは、リクエストが送信されてから AI Platform Prediction でリソースが割り当てられ初期化されます。一方、オンライン予測は、通常はリクエスト時点でジョブを処理する準備ができています。

次のステップ

予測について詳しくは、予測の基礎をご覧ください。

あるいは、オンライン予測の作成またはバッチ予測の作成に進んでください。