Azure Machine Learning で GitHub Actions を使用する
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
Azure Machine Learning でモデルをトレーニングするために GitHub Actions を使ってみましょう。
この記事では、機械学習モデルを構築して Azure Machine Learning にデプロイする GitHub Actions ワークフローを作成する方法について説明します。 NYC タクシー データセットで scikit-learn 線形回帰モデルをトレーニングします。
GitHub Actions では、お使いのリポジトリの /.github/workflows/
パスにあるワークフロー YAML (.yml) ファイルが使用されます。 この定義には、ワークフローを構成するさまざまな手順とパラメーターが含まれます。
前提条件
この記事の手順に従う前に、次の前提条件が満たされていることをご確認ください。
Azure Machine Learning ワークスペース。 所有していない場合は、クイック スタート: ワークスペース リソースの作成に関する記事の手順に従って作成してください。
Python SDK v2 をインストールするには、次のコマンドを使用します。
pip install azure-ai-ml azure-identity
SDK の既存のインストールを最新バージョンに更新するには、次のコマンドを使用します。
pip install --upgrade azure-ai-ml azure-identity
詳細については、「Azure Machine Learning 用 Python SDK v2 のインストール」を参照してください。
- GitHub アカウント。 お持ちでない場合は、無料でサインアップしてください。
ステップ 1: コードを取得する
GitHub で次のリポジトリをフォークします。
https://github.com/azure/azureml-examples
フォークしたリポジトリをローカルで複製します。
git clone https://github.com/YOUR-USERNAME/azureml-examples
手順 2: Azure による認証
まず、Azure で認証する方法を定義する必要があります。 サービス プリンシパルまたは OpenID Connect を使用できます。
デプロイ資格情報を生成する
Azure CLI で az ad sp create-for-rbac コマンドを使用して、サービス プリンシパルを作成します。 このコマンドは、Azure portal で Azure Cloud Shell を使用するか、[試してみる] ボタンを選択して実行します。
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
--json-auth
パラメーターは、Azure CLI バージョン 2.51.0 以降で使用できます。 これ以前のバージョンでは --sdk-auth
を使用し、非推奨の警告が表示されます。
上記の例で、プレースホルダーをご利用のサブスクリプション ID、リソース グループ名、アプリ名に置き換えます。 これにより、以下のようなご自分の App Service アプリにアクセスするためのロールの割り当て資格情報を含む JSON オブジェクトが出力されます。 この JSON オブジェクトを後のためにコピーします。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
シークレットを作成する
GitHub で、お使いのリポジトリに移動します。
ナビゲーション メニューで [設定] に移動します。
[Security] (セキュリティ) > [Secrets and variables] (シークレットと変数) > [Actions] (アクション) を選びます。
[New repository secret](新しいリポジトリ シークレット) を選択します。
Azure CLI コマンドからの JSON 出力全体をシークレットの値フィールドに貼り付けます。 シークレットに
AZURE_CREDENTIALS
と名前を付けます。[Add secret](シークレットの追加) を選択します。
手順 3: setup.sh
を更新して Azure Machine Learning ワークスペースに接続する
ご自分のワークスペースに合わせて CLI セットアップ ファイル変数を更新する必要があります。
フォークしたリポジトリで、
azureml-examples/cli/
に移動します。setup.sh
を編集してファイル内のこれらの変数を更新します。変数 説明 GROUP リソース グループの名前 LOCATION ご自分のワークスペースの場所 (例: eastus2
)ワークスペース Azure Machine Learning ワークスペースの名前
手順 4: コンピューティング クラスター名で pipeline.yml
を更新する
pipeline.yml
ファイルを使用して、Azure Machine Learning パイプラインをデプロイします。 これは機械学習パイプラインであり、DevOps パイプラインではありません。 コンピューター クラスター名に cpu-cluster
以外の名前を使用している場合にのみ、この更新を行う必要があります。
- フォークしたリポジトリで、
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
に移動します。 compute: azureml:cpu-cluster
が表示されるたびに、cpu-cluster
の値をご自分のコンピューティング クラスター名で更新します。 たとえば、クラスター名がmy-cluster
の場合、新しい値はazureml:my-cluster
になります。 5 つの更新プログラムがあります。
手順 5: GitHub Actions ワークフローを実行する
このワークフローは、Azure で認証し、Azure Machine Learning CLI を設定し、CLI を使用して Azure Machine Learning でモデルをトレーニングします。
ワークフロー ファイルは、トリガー セクションとジョブで構成されます。
- トリガーは、
on
セクションでワークフローを開始します。 ワークフローは、既定で cron スケジュールで実行され、一致するブランチとパスから pull request が行われたときに実行されます。 ワークフローをトリガーするイベントについて確認してください。 - ワークフローのジョブ セクションで、コードをチェックアウトし、ご自分のサービス プリンシパル シークレットを使用して Azure にログインします。
- ジョブ セクションには、Machine Learning CLI (v2) をインストールして設定するセットアップ アクションも含まれています。 CLI がインストールされると、実行ジョブ アクションによって Azure Machine Learning
pipeline.yml
ファイルが実行され、NYC タクシー データを使用してモデルがトレーニングされます。
ワークフローを有効にする
フォークしたリポジトリで
.github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml
を開き、ワークフローが次のようになっていることを確認します。name: cli-jobs-pipelines-nyc-taxi-pipeline on: workflow_dispatch: schedule: - cron: "0 0/4 * * *" pull_request: branches: - main - sdk-preview paths: - cli/jobs/pipelines/nyc-taxi/** - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml - cli/run-pipeline-jobs.sh - cli/setup.sh jobs: build: runs-on: ubuntu-latest steps: - name: check out repo uses: actions/checkout@v2 - name: azure login uses: azure/login@v1 with: creds: ${{secrets.AZURE_CREDENTIALS}} - name: setup run: bash setup.sh working-directory: cli continue-on-error: true - name: run job run: bash -x ../../../run-job.sh pipeline.yml working-directory: cli/jobs/pipelines/nyc-taxi
[実行の表示] を選びます。
[自分のワークフローを理解し、先に進んで有効にする] を選んでワークフローを有効にします。
cli-jobs-pipelines-nyc-taxi-pipeline ワークフローを選び、[ワークフローを有効にする] を選びます。
[ワークフローの実行] を選び、今すぐ [ワークフローの実行] オプションを選びます。
手順 6: ワークフローの実行を確認する
完了したワークフロー実行を開き、ビルド ジョブが正常に実行されたことを確認します。 ジョブの横に緑色のチェックマークが表示されます。
Azure Machine Learning スタジオを開き、nyc-taxi-pipeline-example に移動します。 ジョブの各部分 (準備、変換、トレーニング、予測、スコア) が完了し、緑色のチェックマークが表示されていることを確認します。
リソースをクリーンアップする
リソース グループとリポジトリが不要になったら、リソース グループと GitHub リポジトリを削除して、デプロイしたリソースをクリーンアップします。