Azure Pipelines

完了

ワークフローを自動化する 1 つのオプションは、Azure DevOps Services の一部である Azure Pipelines を使用することです。 Azure Pipelines を使用すると、コードを自動的にビルド、テスト、デプロイすることができます。

機械学習プロジェクト内では、Azure Pipelines を使用して、ワークスペース自体、データ資産、コンピューティング クラスター、ジョブなどの Azure Machine Learning ワークスペース資産を作成し、Azure Machine Learning パイプラインを実行できます。

注意

Azure Machine Learning パイプラインで Azure Pipelines を使用するには、サービス接続を使用して Azure DevOps を Azure Machine Learning ワークスペースに接続する必要があります。

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

Azure パイプラインを作成する

Azure Pipelines は、トリガーが発生するたびに手順を実行することで作業を自動化するのに役立ちます。 Azure Pipelines を使用して機械学習ワークロードを自動化するには、Azure Pipelines で Azure Machine Learning パイプラインをトリガーします。

パイプラインの階層の図。

  1. Azure パイプラインをトリガーします。 一般に、リポジトリが変更されます (コミットまたは pull request)。
  2. ステップで構成されるジョブのグループである Azure パイプラインを実行します。
  3. ステップによって、Azure Machine Learning パイプラインが開始されます。
  4. Azure Machine Learning パイプラインによって、スクリプトまたは Azure Machine Learning のコンポーネントが実行されます。
  5. スクリプトまたはコンポーネントは、機械学習タスクを表します。

Azure パイプラインを作成するには、YAML ファイルに含める手順を定義します。 Azure パイプラインの YAML ファイルには、次のものを含めます。

  • トリガー: パイプラインを開始するイベント。
  • ステージ: 一般に異なる開発環境 (開発、テスト、運用) に合わせて調整されるジョブのグループ。
  • ジョブ: エージェントで実行される一連のステップ。 機械学習ワークロードの場合は、Microsoft でホストされた Ubuntu エージェントを使用することがよくあります。
  • ステップ: 実行するスクリプトまたはタスク。 たとえば、Azure Machine Learning パイプラインを開始する CLI コマンド (az ml job create) などです。

ヒント

Azure Pipelines で使用される主な概念の詳細を理解してください。

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

trigger: 
- main

stages:
- stage: deployDev
  displayName: 'Deploy to development environment'
  jobs:
    - deployment: publishPipeline
      displayName: 'Model Training'
      pool:
        vmImage: 'Ubuntu-18.04'
      environment: dev
      strategy:
       runOnce:
         deploy:
          steps:
          - template: aml-steps.yml
            parameters:
              serviceconnectionname: 'spn-aml-workspace-dev'

パイプラインのジョブでは、aml-steps.yml を使用して、実行する必要があるステップの一覧を示します。 pipeline-job.yml で定義されている Azure Machine Learning パイプラインを実行するには、CLI (v2) を使用できます。 Azure パイプラインのステップとして Azure Machine Learning パイプラインを実行するには、次のようにします。

  1. CLI 用の Azure Machine Learning 拡張機能をインストールします。
  2. az ml job create コマンドを使用して、Azure Machine Learning でパイプライン ジョブを実行します。

インストールと Azure Machine Learning ジョブの開始のための aml-steps.yml ファイルは、次のようになります。

parameters:
- name: serviceconnectionname
  default: ''

steps:
- checkout: self

- script: az extension add -n ml -y
  displayName: 'Install Azure ML CLI v2'

- task: AzureCLI@2
  inputs:
    azureSubscription: ${{ parameters.serviceconnectionname }}
    scriptType: bash
    scriptLocation: inlineScript
    workingDirectory: $(Build.SourcesDirectory)
    inlineScript: |
      cd src
      az ml job create --file aml_service/pipeline-job.yml --resource-group dev-ml-rg --workspace-name dev-ml-ws
  displayName: 'Run Azure Machine Learning Pipeline'

例に示すように、パイプラインの定義全体でパラメーターを使用して (serviceconnectionname など)、YAML ファイルを他のプロジェクトでいっそう再利用しやすくすることができます。

Azure DevOps でパイプラインを実行する

YAML ファイルを作成して Azure リポジトリに格納した後は、パイプラインを実行するように Azure DevOps を構成できます。

Azure DevOps でのパイプラインの構成のスクリーンショット。

  1. Azure DevOps で [パイプライン] タブに移動し、[パイプライン] を選択します。
  2. 新しいパイプラインを作成します。
  3. コードの場所として [Azure Repos Git] を選択します。
  4. コードが含まれるリポジトリを選択します。
  5. [既存の Azure Pipelines YAML ファイル] を選択します。
  6. Azure パイプライン用に作成した YAML ファイルを指すパスを選択します。
  7. パイプラインを確認したら、保存して実行できます。

メイン ブランチへのコミットによって、パイプラインがトリガーされます。 パイプラインを構成すると、Azure Pipelines によってメイン ブランチに変更がコミットされ、それによってパイプラインが初めて実行されます。 セットアップ後はいつでも、Visual Studio Code または Azure Repos からリポジトリにコミットをプッシュすることでパイプラインをトリガーできます。

Azure Pipelines で失敗したジョブのスクリーンショット。

ジョブを選択すると、そのプロセスを見ることができます。 ジョブの各ステップが、左側のナビゲーション ウィンドウに反映されます。 概要には、実行が成功したステップと失敗したステップが表示されます。 発生しているかもしれないエラー メッセージは、そのステップを選択するとコマンド ライン インターフェイスに表示されます。 出力を確認することで、エラーのトラブルシューティングを行うことができます。

タスクによって Azure Machine Learning パイプラインの実行がトリガーされると、Azure Machine Learning ワークスペースでパイプラインの実行を確認し、関心のあるメトリックやエラーを見ることもできます。