Azure Machine Learning を DevOps ツールと統合する

完了

自分が機械学習プロジェクトでデータ サイエンス チームと働いているところを想像してください。 あなたのチームは、作業の計画、コード リポジトリの格納、ワークフローの自動化に、Azure DevOps または GitHub を使うことを選択できます。

どちらのツール セットにも、通常、次の 2 つの役割があります。

  • "管理者": DevOps 環境を設定し、ツールを管理します。
  • "エンド ユーザー": 開発で共同作業を行うことで、プロジェクトに貢献します。 ツールに接続しますが、DevOps 環境の構成へのアクセスは制限されています。

管理者には、Azure Machine Learning と Azure DevOps または GitHub を接続する責任があります。 Azure Machine Learning との統合の設定方法を理解するため、管理者が Azure DevOps と GitHub を Azure Machine Learning と安全に接続する方法を調べましょう。

Azure DevOps を設定する

Azure DevOps と Azure Machine Learning を接続するには、まず組織とプロジェクトを作成する必要があります。 組織を使って、プロジェクトをグループ化および管理します。

最初に、Microsoft または GitHub のアカウントを使って Azure DevOps にサインインします。

サインインしたら、組織を作成できます。

New organization in Azure DevOps

組織内では、複数のプロジェクトを作成できます。

New project in Azure DevOps

プロジェクトごとに、BoardsReposPipelines などのツールにアクセスして、プロジェクトの DevOps の原則を適用します。

Azure DevOps を Azure Machine Learning に接続する

Azure DevOps から Azure Machine Learning ワークスペースに安全にアクセスするには、サービス接続を作成する必要があります。

サービス接続を作成するときに、Azure DevOps で別のサービスに接続するために認証を行う方法を定義します。 Azure Machine Learning を使用するときに推奨されるオプションは、Azure DevOps でサービス プリンシパルを自動的に作成することです。

サービス プリンシパルは、Microsoft Entra ID 内の ID として作成されます。 チーム メンバーの資格情報を使って Azure Machine Learning と接続する代わりに、Azure DevOps はサービス プリンシパルの資格情報を使います。

Azure DevOps プロジェクトが作成されるときに、ユーザーは既存の Azure Machine Learning ワークスペースに接続できます。

  1. プロジェクト内で、[プロジェクトの設定] に移動します。
  2. [サービス接続] を選んで、新しい接続を作成します。
  3. [Azure Resource Manager] を選びます。
  4. 自動サービス プリンシパルでの認証を選びます。
  5. スコープ レベルを [Machine Learning ワークスペース] に設定し、自分がアクセス権を持つ既存の Azure Machine Learning ワークスペースに接続します。
  6. [すべてのパイプラインへのアクセス許可を与える] :
  7. サービス接続に名前を付けます。 Azure Machine Learning ワークスペースを管理するために Azure DevOps で認証を行う必要がある場合は常に、その名前を使います。

New service connection in Azure DevOps

サービス接続が作成されると、新しく作成されたサービス プリンシパルに、Azure Machine Learning ワークスペースへの "共同作成者" アクセス権があることがわかります。

GitHub を設定する

GitHub を Azure Machine Learning と接続するには、最初に GitHub リポジトリを作成する必要があります。

まず、GitHub にサインインします。

GitHub にサインインした後は、リポジトリを個人として所有するか、GitHub 組織で所有する必要があるかを選ぶことができます。

New repo in GitHub

ヒント

GitHub 組織を使ってリポジトリを管理する方法について詳しくは、こちらをご覧ください。

GitHub と Azure Machine Learning を接続する

GitHub を使って機械学習のワークフローを自動化するには、GitHub が Azure Machine Learning と接続するのを認証できます。 セキュリティ保護された接続を設定するには、次のようにする必要があります。

  • Azure でサービス プリンシパルを作成します。
  • サービス プリンシパルの資格情報をリポジトリのシークレットに追加します。

サービス プリンシパルを作成するには、Azure CLI を使用できます。 CLI を使用するための 1 つのオプションは、Azure Cloud Shell でコマンドを送信することです。

次のコマンドを使うと、Azure Machine Learning ワークスペースへの "共同作成者" アクセス権を付与された github-aml-sp という名前のサービス プリンシパルを作成できます。

az ad sp create-for-rbac --name "github-aml-sp" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name> \
                            --sdk-auth

サービス プリンシパルが作成されると、GitHub が Azure リソース グループに接続するために必要な資格情報含む JSON テキストが出力として返されます。 次のステップのため、その JSON テキストをコピーして保存します。

これらの資格情報を GitHub に格納するには:

  1. リポジトリの [設定] に移動します。
  2. [シークレット] ページに移動します。
  3. [Actions](アクション) を選択します。
  4. 新しいリポジトリ シークレットを追加します。
  5. 名前として「AZURE_CREDENTIALS」と入力します。
  6. 資格情報を含む出力 JSON を貼り付けて、シークレットを追加します。

New secret in GitHub

シークレットが GitHub に追加されたら、Azure Machine Learning ワークスペースを使うために GitHub の認証を行う必要があるときは常に、AZURE_CREDENTIALS シークレットを使用できます。

ヒント

GitHub と Azure Machine Learning の統合についての学習を続けて、GitHub Actions を Azure Machine Learning で使用する方法を調べます。 このチュートリアルでは、AZURE_CREDENTIALS シークレットを使って Azure に接続します。