バッチ エンドポイント

Azure Machine Learning を使用すると、バッチ エンドポイントとデプロイを実装して、機械学習モデルとパイプラインを使用して実行時間の長い非同期推論を実行できます。 機械学習モデルまたはパイプラインをトレーニングするときは、他のユーザーが新しい入力データを使って予測を生成できるように、それをデプロイする必要があります。 モデルまたはパイプラインを使用して予測を生成するこのプロセスは、"推論" と呼ばれます

バッチ エンドポイントは、データへのポインターを受け取り、ジョブを非同期に実行して、複数のコンピューティング クラスターでデータを並列に処理します。 バッチ エンドポイントは、さらに詳細な分析のために、出力をデータ ストアに格納します。 バッチ エンドポイントは、次の場合に使用します。

  • 実行に長い時間がかかるコストの高いモデルまたはパイプラインがある。
  • 機械学習パイプラインを運用化し、コンポーネントを再利用したいと考えている。
  • 複数のファイルに分散された大量のデータに対して推論を実行する必要がある
  • 低遅延を必要としない
  • モデルの入力は、ストレージ アカウントまたは Azure Machine Learning データ資産に格納される。
  • 並列処理の恩恵を受けることができる

バッチ デプロイ

デプロイは、エンドポイントが提供する機能を実装するために必要なリソースとコンピューティングのセットです。 各エンドポイントは、構成が異なる複数のデプロイをホストできます。この機能は、デプロイによって定義された "実装の詳細" から "エンドポイントのインターフェイスを分離する" のに役立ちます。 バッチ エンドポイントが呼び出されると、クライアントは既定のデプロイに自動的にルーティングされます。 この既定のデプロイは、いつでも構成および変更できます。

バッチ エンドポイントとそのデプロイの関係を示す図。

Azure Machine Learning バッチ エンドポイントでは、次の 2 種類のデプロイが可能です。

モデル デプロイ

モデル デプロイにより、大規模なモデル推論の運用化が可能になり、低遅延かつ非同期的な方法で大量のデータを処理できます。 Azure Machine Learning は、コンピューティング クラスター内の複数のノードにわたって推論プロセスの並列化を提供して、スケーラビリティを自動的にインストルメント化します。

モデル デプロイは、次の場合に使用します。

  • 推論の実行に長い時間がかかるコストの高いモデルがある。
  • 複数のファイルに分散された大量のデータに対して推論を実行する必要がある
  • 低遅延を必要としない
  • 並列処理の恩恵を受けることができる

モデル デプロイの主な利点は、オンライン エンドポイントへのリアルタイム推論にデプロイされているのと同じ資産を使用できることですが、それらを大規模に一括して実行できるようになりました。 モデルで単純な前処理または後処理が必要な場合は、必要なデータ変換を実行するスコアリング スクリプトを作成できます。

バッチ エンドポイントでモデル デプロイを作成するには、次の要素を指定する必要があります。

  • モデル
  • コンピューティング クラスター
  • スコアリング スクリプト (MLflow モデルの場合は省略可能)
  • 環境 (MLflow モデルの場合は省略可能)

パイプライン コンポーネント デプロイ

パイプライン コンポーネント デプロイを使用すると、処理グラフ全体 (パイプライン) を運用化して、短い待機時間で非同期的にバッチ推論を実行できます。

パイプライン コンポーネント デプロイは、次の場合に使用します。

  • 複数の手順で分解できる完全なコンピューティング グラフを運用化する必要がある。
  • 推論パイプラインでトレーニング パイプラインのコンポーネントを再利用する必要があります。
  • 低遅延を必要としない

パイプライン コンポーネントの主な利点は、プラットフォームに既に存在するコンポーネントの再利用性と、複雑な推論ルーチンを運用化する機能です。

バッチ エンドポイントでパイプライン コンポーネント デプロイを作成するには、次の要素を指定する必要があります。

  • パイプライン コンポーネント
  • コンピューティング クラスター構成

バッチ エンドポイントを使用すると、既存のパイプライン ジョブからパイプライン コンポーネント デプロイを作成することもできます。 これを行うと、Azure Machine Learning によって、ジョブからパイプライン コンポーネントが自動的に作成されます。 これにより、このようなデプロイの使用が簡略化されます。 ただし、MLOps のプラクティスを効率化するために、パイプライン コンポーネントを明示的に作成することがベスト プラクティスです。

コスト管理

バッチ エンドポイントを呼び出すと、非同期バッチ推論ジョブがトリガーされます。 Azure Machine Learning では、ジョブの開始時にコンピューティング リソースが自動的にプロビジョニングされ、ジョブの完了時に自動的に割り当てが解除されます。 この方法により、コンピューティングを使用した場合にのみ料金が発生します。

ヒント

モデルをデプロイするときに、個々のバッチ推論ジョブのコンピューティング リソース設定 (インスタンス数など) と詳細設定 (ミニ バッチ サイズ、エラーしきい値など) をオーバーライドすることができます。 これらの特定の構成を活用することで、実行を高速化し、コストを削減できる場合があります。

バッチ エンドポイントは、優先順位の低い VM でも実行できます。 バッチ エンドポイントは、割り当て解除された VM から自動的に復旧できます。また、推論用のモデルをデプロイする場合、中断したところから処理を再開できます。 優先順位の低い VM を使用してバッチ推論ワークロードのコストを削減する方法の詳細については、バッチ エンドポイントで低優先度の VM を使用する方法に関する記事を参照してください。

最後に、Azure Machine Learning ではバッチ エンドポイントまたはバッチ デプロイ自体には請求が発生しないため、シナリオに最も適した形にエンドポイントとデプロイを編成できます。 エンドポイントとデプロイでは、独立したクラスターまたは共有クラスターを使用できるため、ジョブが消費するコンピューティングをきめ細かく制御できます。 クラスターで scale-to-zero を使用して、アイドル状態のときはリソースが消費されないようにします。

MLOps プラクティスを効率化する

バッチ エンドポイントでは、同じエンドポイント下で複数のデプロイを処理できるため、コンシューマーがエンドポイントの呼び出しに使用する URL を変更することなく、エンドポイントの実装を変更できます。

エンドポイント自体に影響を与えることなく、デプロイを追加、削除、更新できます。

同じエンドポイント下で複数のデプロイがどのように使用されるかを示す図。

柔軟なデータ ソースとストレージ

バッチ エンドポイントは、ストレージのデータを直接読み書きします。 Azure Machine Learning データストア、Azure Machine Learning データ資産、またはストレージ アカウントを入力として指定できます。 サポートされている入力オプションとその指定方法の詳細については、「バッチ エンドポイントのジョブと入力データを作成する」を参照してください。

セキュリティ

バッチ エンドポイントは、エンタープライズ環境で運用レベルのワークロードを扱うために必要なすべての機能を提供します。 ユーザー プリンシパル (ユーザー アカウントなど) またはサービス プリンシパル (マネージドまたはアンマネージド ID など) を使用して、セキュリティで保護されたワークスペースでのプライベート ネットワークMicrosoft Entra 認証をサポートします。 バッチ エンドポイントによって生成されたジョブは、呼び出し元の ID で実行されるため、あらゆるシナリオを柔軟に実装できます。 バッチ エンドポイントの使用中の承認の詳細については、バッチ エンドポイントでの認証方法に関する記事を参照してください。