GitHub のアクション

完了

GitHub でワークフローを自動化したい場合は、GitHub Actions を使用します。

GitHub は、主にコード プロジェクトをホストするために使用されます。 機械学習のコードを GitHub リポジトリでホストすると、コードのビルド、テスト、デプロイを自動的に行う GitHub Actions を作成できます。

注意

Azure Machine Learning パイプラインで GitHub Actions を使用するには、GitHub リポジトリがセキュリティで保護された接続を介して Azure Machine Learning ワークスペースにアクセスできるようにする必要があります。

ここでは、GitHub Actions を使用して Azure Machine Learning パイプラインを実行する方法について学習します。

GitHub アクションを作成する

Diagram of the hierarchy of pipelines.

  1. ワークフローをトリガーするイベントを定義します。
  2. ジョブで構成されるワークフローを実行します。
  3. ジョブには、1 つ以上のステップが含まれています。
  4. ステップとして、Azure Machine Learning パイプラインを実行します。
  5. Azure Machine Learning パイプラインは、スクリプトまたは Azure Machine Learning のコンポーネントで構成されます。

GitHub Actions 用のワークフローを作成するには、YAML ファイルで実行する手順を定義します。 YAML ファイルには次の項目を含めます。

  • イベント: ワークフローをトリガーする方法。
  • ジョブ: ランナーで実行するステップのグループ。 機械学習ワークロードの場合は、Ubuntu Linux 仮想マシンを使用することがよくあります。
  • ステップ: 実行するスクリプトまたはアクション。 たとえば、Azure Machine Learning パイプラインを開始する CLI コマンド (az ml job create) などです。

ヒント

GitHub Actions で使用されるコア概念の詳細を理解してください。

変更がリポジトリにプッシュされるたびに Azure Machine Learning パイプラインを実行するには、次のような YAML ファイルを使用できます。

name: Train model

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest 
    steps:
    - name: check out repo
      uses: actions/checkout@v2
    - name: install az ml extension
      run: az extension add -n ml -y
    - name: azure login
      uses: azure/login@v1
      with:
        creds: ${{secrets.AZURE_CREDENTIALS}}
    - name: set current directory
      run: cd src
    - name: run pipeline
      run: az ml job create --file src/aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws

ワークフローの例は次のようになります。

  1. リポジトリをチェックアウトして、ランナーで使用できるようにします。
  2. CLI 用の Azure Machine Learning 拡張機能をインストールします。
  3. あらかじめ定義されている AZURE_CREDENTIALS を使用して Azure にサインインします。
  4. すべての運用コードが含まれる src フォルダーに移動します。
  5. Azure Machine Learning パイプラインを実行します。

GitHub Actions でワークフローを実行する

ワークフローを定義する YAML ファイルを作成したとします。 YAML ファイルはリポジトリ内の .github/workflows/ ディレクトリに格納します。

ワークフローを表示するには、リポジトリの GitHub [Actions] タブに移動します。

Screenshot of GitHub Actions overview.

GitHub によって、.github/workflows/ ディレクトリに格納されているすべてのワークフローが自動的に選択されます。

ヒント

ワークフローの YAML ファイルに workflow_dispatch: を追加している場合は、[Actions] タブからワークフローを手動でトリガーして実行できます。

ワークフローの YAML ファイルで指定したイベントを使用してワークフローをトリガーできます。 この例では、リポジトリへのプッシュによってワークフローの実行がトリガーされます。 変更を行い、リポジトリにコミットをプッシュするたびに (Visual Studio Code でローカルに、または GitHub に直接)、ワークフローが実行されます。

最新の実行を選択して、すべてのステップが正常に実行されたかどうか、または受け取ったエラー メッセージをさらに調べます。

Screenshot of successfully executed workflow.

ワークフローによって Azure Machine Learning パイプラインがトリガーされたときは、Azure Machine Learning パイプライン内でエラーが発生する可能性があるため、Azure Machine Learning ワークスペースでもパイプラインの実行を確認する必要があります。 エラー メッセージは、Azure Machine Learning パイプライン実験の実行の出力フォルダーに表示されます。