共用方式為


搭配 Azure Machine Learning 使用 GitHub Actions

適用於:Azure CLI ml 延伸模組 v2 (目前)Python SDK azure-ai-ml v2 (目前)

開始使用 GitHub Actions,在 Azure Machine Learning 上訓練模型。

本文將說明如何建立 GitHub Actions 工作流程,以建置機器學習模型,並將其部署至 Azure Machine Learning。 您將根據 NYC 計程車資料集來定型 scikit-learn 線性迴歸模型。

GitHub Actions 會使用您的存放庫內 /.github/workflows/ 路徑中的工作流程 YAML (.yml) 檔案。 此定義包含組成工作流程的各種步驟與參數。

必要條件

遵循本文中的步驟之前,請確定您已滿足下列必要條件:

  • GitHub 帳戶。 如果您沒有 Microsoft 帳戶,請免費註冊

步驟 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 入口網站中的 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

在上述範例中,將預留位置換成為您的訂用帳戶識別碼、資源群組名稱和應用程式名稱。 輸出是一個 JSON 物件,內有角色指派認證可讓您存取 App Service 應用程式,如下所示。 複製此 JSON 物件以供後續使用。

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

建立秘密

  1. GitHub (英文) 中,前往您的存放庫。

  2. 移至導覽功能表中的 [設定]

  3. 選取 [安全性] > [祕密和變數] > [動作]。

    新增祕密的螢幕擷取畫面

  4. 選取 [新增存放庫祕密]。

  5. 將得自 Azure CLI 命令的整個 JSON 輸出貼到祕密的 [值] 欄位中。 將祕密命名為 AZURE_CREDENTIALS

  6. 選取 [新增祕密]。

步驟 3:更新 setup.sh 以連線至您的 Azure Machine Learning 工作區

您必須更新 CLI 安裝檔案變數,以符合您的工作區。

  1. 在分支存放庫中移至 azureml-examples/cli/

  2. 編輯 setup.sh 並更新檔案中的這些變數。

    變數 描述
    GROUP 資源群組的名稱
    LOCATION 工作區的位置 (範例:eastus2)
    工作區 Azure Machine Learning 工作區名稱

步驟 4:以您的計算叢集名稱更新 pipeline.yml

您將使用 pipeline.yml 檔案來部署 Azure Machine Learning 管線。 這是機器學習管線,而不是 DevOps 管線。 只有在使用 cpu-cluster 以外的名稱作為電腦叢集名稱時,才需要進行此更新。

  1. 在分支存放庫中移至 azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml
  2. 每當您看到 compute: azureml:cpu-cluster 時,即應以您的計算叢集名稱更新 cpu-cluster 的值。 例如,如果您的叢集名為 my-cluster,則新的值應為 azureml:my-cluster。 更新共有五項。

步驟 5:執行您的 GitHub Actions 工作流程

您的工作流程會向 Azure 進行驗證、設定 Azure Machine Learning CLI,並使用 CLI 在 Azure Machine Learning 中定型模型。

您的工作流程檔案由觸發程序區段和作業所組成:

  • 觸發程序會在 on 區段中啟動工作流程。 工作流程依預設會按 cron 排程執行,以及從相符的分支和路徑提出提取要求時執行。 深入了解觸發工作流程的事件
  • 在工作流程的 [作業] 區段中,您會簽出程式碼,並使用服務主體秘密登入 Azure。
  • 作業區段也包含會安裝及設定機器學習 CLI (v2) 的安裝動作。 安裝 CLI 之後,執行作業動作會執行您的 Azure Machine Learning pipeline.yml 檔案,以使用 NYC 計程車資料來定型模型。

啟用您的工作流程

  1. 在您的分支存放庫中開啟 .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
    
  2. 選取 [檢視執行]

  3. 選取 [我了解我的工作流程,繼續啟用這些工作流程],以啟用工作流程。

  4. 選取 [cli-jobs-pipelines-nyc-taxi-pipeline 工作流程],然後選擇 [啟用工作流程]啟用 GitHub Actions 工作流程的螢幕擷取畫面。

  5. 選取 [執行工作流程],然後選擇立即 [執行工作流程] 的選項。 執行 GitHub Actions 工作流程的螢幕擷取畫面。

步驟 6:確認您的工作流程執行

  1. 開啟已完成的工作流程執行,並確認建置作業已成功執行。 您會在作業旁邊看到綠色核取記號。

  2. 開啟 Azure Machine Learning Studio,並瀏覽至 nyc-taxi-pipeline-example。 確認作業的每個部分 (準備、轉換、定型、預測、評分) 皆已完成,並且出現綠色核取記號。

    Machine Learning 工作室執行成功的螢幕擷取畫面。

清除資源

不再需要資源群組和存放庫時,請刪除資源群組和 GitHub 存放庫,以清除您所部署的資源。

下一步