🤖

Azure ML パイプラインを公開して、実行してみた

に公開

はじめに

本記事では、Azure Machine Learning(Azure ML)で作成したパイプラインを公開し、ローカルから実行させてみたので、その手順を紹介します。

Azure ML のパイプラインを REST API 経由で実行できるようにすることで、以下のようなメリットがあります。

  • CI/CD パイプラインからの自動実行
  • 外部システムとの連携
  • スケジュール実行や条件付き実行の実装
  • チーム間でのパイプライン共有

前提条件

以下の前提で話を進めます。

  • Azure サブスクリプションを持っていること
  • Azure ML ワークスペース、パイプラインが作成済みであること

環境

本記事で使用している環境は以下の通りです。

- Python: 3.12
- Azure CLI: 2.x

パイプラインの公開

※ 公開したいパイプラインはあらかじめ実行されている必要があります(キャンセルしても良い)

  • Azure Machine Learning スタジオにアクセスする
  • 「ジョブ」 > 「すべてのジョブ」 > 公開したいパイプラインのジョブを選択
  • 「デプロイ」 > 「公開」をクリックし、パイプラインを公開する
  • 「パイプライン」 > 「パイプラインエンドポイント」 > 公開したパイプラインを選択
  • REST エンドポイントをメモしておく

環境構築

パイプラインを実行するための環境を構築します。本記事では uv を使ってパッケージ管理を行います。

1. プロジェクトの初期化

任意のディレクトリでプロジェクトを作成します。

# プロジェクトディレクトリを作成
mkdir azure-ml-pipeline-runner
cd azure-ml-pipeline-runner

# uv プロジェクトを初期化
uv init

2. 必要なパッケージのインストール

パイプライン実行に必要な Python パッケージをインストールします。

# 必要なパッケージを追加
uv add requests azure-identity

3. 環境変数ファイルの作成

プロジェクトルートに .env ファイルを作成し、先ほどメモしたパイプラインエンドポイントの URL を設定します。

AZURE_PIPELINE_ENDPOINT_URL=パイプラインエンドポイントURL

4. Azure CLI でログイン

ローカルでAzure への認証を行います。

az login
az account set --subscription <subscription-id>

ローカル環境では Azure CLI でのログインが最も簡単です。App Service などの Azure リソースから実行する場合は、マネージド ID を利用することで認証情報を管理することなく実行できます。

これで環境構築が完了しました。

パイプラインを実行する

環境構築が完了したら、実際にパイプラインを実行してみましょう。

パイプライン実行スクリプトの作成

公開されたパイプラインエンドポイントは、REST API 経由で実行できます。

以下のコードを run_pipeline.py などのファイルに保存します。

import os
import requests
from azure.identity import DefaultAzureCredential

# 環境変数からパイプラインエンドポイントURLを取得
rest_endpoint = os.getenv("AZURE_PIPELINE_ENDPOINT_URL")

# Azure認証トークンを取得
credential = DefaultAzureCredential()
token = credential.get_token("https://management.azure.com/.default")

# パイプラインのパラメータを設定
pipeline_params = {
    "ExperimentName": "pipeline-run",  # 任意の実験名
    "ParameterAssignments": {}
}

# REST APIを呼び出してパイプラインを実行
headers = {
    "Authorization": f"Bearer {token.token}",
    "Content-Type": "application/json"
}

response = requests.post(rest_endpoint, json=pipeline_params, headers=headers)

if response.status_code == 200:
    result = response.json()
    run_id = result.get("Id", "unknown")
    print(f"パイプラインジョブを開始しました: {run_id}")
else:
    print(f"エラー: {response.status_code} - {response.text}")

スクリプトの実行

uv を使ってスクリプトを実行します。

uv run run_pipeline.py

実行が成功すると、以下のような出力が表示されます。

パイプラインジョブを開始しました: pipeline_job_20251130_123456

Azure ML Studio の「ジョブ」タブから、実行されたパイプラインの状態を確認できます。

SDKで取得もできます。
https://zenn.dev/ncdc/articles/09965bffa77493

まとめ

本記事では、Azure ML パイプラインを公開してローカルから実行する方法について紹介しました。

参考リンク

NCDCエンジニアブログ

Discussion