Share via


Azure Data Factory からバッチ エンドポイントを実行する

適用対象:Azure CLI ML 拡張機能 v2 (現行)Python SDK azure-ai-ml v2 (現行)

ビッグ データには、これらの膨大な量の生データをアクションにつながるビジネス分析へと精製するプロセスを統合および運用化できるサービスが必要です。 Azure Data Factory は、ETL (抽出 - 変換 - 読み込み)、ELT (抽出 - 読み込み - 変換)、データ統合という複雑なハイブリッド プロジェクト用に構築された、マネージド クラウド サービスです。

Azure Data Factory を使うと、複数のデータ変換を調整して 1 つのユニットとして管理できるパイプラインを作成できます。 バッチ エンドポイントは、そのような処理ワークフローのステップになる優れた候補です。 この例では、Web 呼び出しアクティビティと REST API を利用して、Azure Data Factory アクティビティでバッチ エンドポイントを使う方法について説明します。

前提条件

バッチ エンドポイントに対する認証

Azure Data Factory は、Web 呼び出しアクティビティを使うことで、バッチ エンドポイントの REST API を呼び出すことができます。 バッチ エンドポイントは認可のために Microsoft Entra ID をサポートしています。そのため、API に対する要求には適切な認証処理が必要です。

サービス プリンシパルまたはマネージド ID を使って、Batch エンドポイントに対する認証を行うことができます。 シークレットを簡単に使用できるので、マネージド ID を使うことをお勧めします。

  1. Azure Data Factory のマネージド ID を使って、バッチ エンドポイントと通信できます。 この場合に必要なのは、Azure Data Factory リソースがマネージド ID を使ってデプロイされたことを確認することだけです。

  2. Azure Data Factory リソースがない場合、またはマネージド ID を使わずに既にデプロイされている場合は、次の手順のようにして作成してください: 「Azure Data Factory のマネージド ID」。

    警告

    デプロイ後のリソース ID の変更は、Azure Data Factory ではできないことに注意してください。 リソースを作成した後で、その ID を変更する必要がある場合は、リソースを作り直す必要があります。

  3. デプロイしたら、「アクセス権の付与」で説明されているように、作成したリソースのマネージド ID に Azure Machine Learning ワークスペースへのアクセス権を付与します。 この例では、サービス プリンシパルに次のものが必要です。

    1. バッチ デプロイを読み取り、それらに対してアクションを実行するためのワークスペース内のアクセス許可。
    2. データ ストアの読み取りと書き込みを行うアクセス許可。
    3. データ入力として示されている任意のクラウドの場所 (ストレージ アカウント) で読み取りを行うアクセス許可。

パイプラインについて

ここでは、何らかのデータについて特定のバッチ エンドポイントを呼び出すことができるパイプラインを Azure Data Factory で作成します。 そのパイプラインは、REST を使って Azure Machine Learning バッチ エンドポイントと通信します。 バッチ エンドポイントの REST API の使用方法の詳細については、「バッチ エンドポイントのジョブと入力データを作成する」を参照してください。

パイプラインは次のようになります。

Diagram that shows th high level structure of the pipeline we are creating.

これは、次のアクティビティで構成されます。

  • バッチ エンドポイントの実行: バッチ エンドポイントの URI を使ってそれを呼び出す Web アクティビティです。 データが配置されている入力データ URI と、必要な出力ファイルを渡します。
  • ジョブの待機: 作成されたジョブの状態をチェックし、Completed または Failed として完了するのを待機するループ アクティビティです。 このアクティビティからは、次のアクティビティが使われます。
    • 状態のチェック: バッチ エンドポイントの実行アクティビティの応答として返されたジョブ リソースの状態を照会する Web アクティビティです。
    • 待機: ジョブの状態のポーリング頻度を制御する待機アクティビティです。 既定値の 120 (2 分) を設定します。

パイプラインでは、次のパラメーターを構成する必要があります。

パラメーター 説明 値の例
endpoint_uri エンドポイント スコアリング URI https://<endpoint_name>.<region>.inference.ml.azure.com/jobs
poll_interval ジョブの完了状態をチェックするまで待機する秒数。 既定値は 120 です。 120
endpoint_input_uri エンドポイントの入力データ。 複数の種類のデータ入力がサポートされています。 ジョブの実行に使っているマネージド ID が、基になっている場所にアクセスできることを確認します。 または、データ ストアを使っている場合は、資格情報がそこで示されていることを確認します。 azureml://datastores/.../paths/.../data/
endpoint_input_type 指定する入力データの種類。 現在、バッチ エンドポイントではフォルダー (UriFolder) とファイル (UriFile) がサポートされています。 既定値は UriFolder です。 UriFolder
endpoint_output_uri エンドポイントの出力データ ファイル。 Machine Learning ワークスペースにアタッチされているデータ ストア内の出力ファイルへのパスである必要があります。 他の種類の URI はサポートされていません。 workspaceblobstore という名前の既定の Azure Machine Learning データ ストアを使用できます。 azureml://datastores/workspaceblobstore/paths/batch/predictions.csv

警告

endpoint_output_uri は、まだ存在しないファイルへのパスである必要があります。 そうでない場合は、"パスが既に存在する" というエラーでジョブは失敗します。

手順

既存の Azure Data Factory でこのパイプラインを作成してバッチ エンドポイントを呼び出すには、次の手順を行います。

  1. バッチ エンドポイントが実行されているコンピューティングに、Azure Data Factory から入力として指定されるデータをマウントするアクセス許可があることを確実にします。 エンドポイント (この場合はAzure Data Factory) を呼び出す ID によって、アクセスが引き続き付与されていることに注意してください。 ただし、バッチ エンドポイントが実行されるコンピューティングには、Azure Data Factory から指定されるストレージ アカウントをマウントするためのアクセス許可が必要です。 詳しくは、「ストレージ サービスへのアクセス」をご覧ください。

  2. Azure Data Factory Studio を開き、[ファクトリのリソース] でプラス記号をクリックします。

  3. [パイプライン]>[パイプライン テンプレートからインポートする] を選びます

  4. zip ファイルの選択を求められます。 マネージド ID を使っている場合はこちらのテンプレートを使い、サービス プリンシパルを使っている場合はこちらのテンプレートを使います。

  5. パイプラインのプレビューがポータルに表示されます。 [このテンプレートを使用] をクリックします。

  6. Run-BatchEndpoint という名前で、パイプラインが自動的に作成されます。

  7. 使っているバッチ デプロイのパラメーターを構成します。

警告

ジョブを送信する前に、バッチ エンドポイントに既定のデプロイが構成されていることを確認します。 作成したパイプラインによってエンドポイントが呼び出されるため、既定のデプロイを作成して構成しておく必要があります。

ヒント

再利用性を最大限に高めるには、作成したパイプラインをテンプレートとして使い、パイプラインの実行アクティビティを利用して他の Azure Data Factory パイプライン内から呼び出します。 その場合は、次の図に示すように、内部パイプラインでパラメーターを構成せず、外側のパイプラインからパラメーターとして渡します。

Screenshot of the pipeline parameters expected for the resulting pipeline when invoked from another pipeline.

  1. パイプラインを使用する準備ができました。

制限事項

Azure Machine Learning のバッチ デプロイを呼び出すときは、次の制限を考慮してください。

データ入力

  • 入力としてサポートされるのは、Azure Machine Learning データ ストアまたは Azure ストレージ アカウント (Azure Blob Storage、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2) のみです。 入力データが別のソースにある場合は、バッチ ジョブの実行前に Azure Data Factory の Copy アクティビティを使って、互換性のあるストアにデータをシンクします。
  • バッチ エンドポイント ジョブでは、入れ子になったフォルダーは探索されないため、入れ子になったフォルダー構造を使うことはできません。 データが複数のフォルダーに分散されている場合は、構造をフラット化する必要があることに注意してください。
  • デプロイで提供されているスコアリング スクリプトが、ジョブにフィードされることが予想されるデータを処理できることを確認します。 モデルが MLflow の場合は、バッチ デプロイでの MLflow モデルの使用に関する記事で、現時点でサポートされているファイルの種類に関する制限事項をお読みください。

データ出力

  • 現時点でサポートされているのは、登録された Azure Machine Learning データ ストアのみです。 Azure Data Factory が Azure Machine Learning のデータ ストアとして使用しているストレージ アカウントを登録することをお勧めします。 このようにして、読み取り元と同じストレージ アカウントに書き戻すことができるようになります。
  • 出力では、Azure Blob Storage アカウントのみがサポートされます。 たとえば、Azure Data Lake Storage Gen2 はバッチ デプロイ ジョブの出力としてサポートされていません。 データを別の場所やシンクに出力する必要がある場合は、バッチ ジョブを実行した後で、Azure Data Factory の Copy アクティビティを使います。

次のステップ