適用於:
Azure CLI ml 延伸模組 v2 (目前)
Python SDK azure-ai-ml v2 (目前)
開始使用 GitHub Actions,在 Azure Machine Learning 上訓練模型。
本文將教導您如何建立 GitHub Actions 工作流程,以建置機器學習模型並將其部署至 Azure 機器學習。 您可以在 NYC Taxi 數據集上訓練 scikit-learn 線性回歸模型。
GitHub Actions 會使用存放庫中 /.github/workflows/ 路徑下的工作流程 YAML (.yml) 檔案。 此定義包含組成工作流程的各種步驟與參數。
必要條件
Azure Machine Learning 工作區。 如需建立工作區的步驟,請參閱 建立工作區。
適用於 Python v2 的 Azure Machine Learning SDK。 若要安裝 SDK,請使用下列命令:
pip install azure-ai-ml azure-identity若要將現有的 SDK 安裝更新為最新版本,請使用下列命令:
pip install --upgrade azure-ai-ml azure-identity如需詳細資訊,請參閱 適用於 Python 的 Azure Machine Learning 套件用戶端連結庫。
- GitHub 帳戶。 如果您沒有訂用帳戶,請建立免費帳戶。
步驟 1:取得程式碼
在 GitHub 複製下列存放庫:
https://github.com/azure/azureml-examples
在本機複製您 Fork 的存放庫。
git clone https://github.com/YOUR-USERNAME/azureml-examples
步驟 2:使用 Azure 進行驗證
首先,定義如何使用 Azure 進行認證。 建議且更安全的選項是 透過 OpenID Connect 與 Microsoft Entra 應用程式或使用者指定的管理身份登入。 如有需要,您也可以使用服務主體和祕密登入。 這種方法較不安全,不建議使用。
產生部署認證
若要搭配 OIDC 使用 Azure 登入操作,您必須在 Microsoft Entra 應用程式或使用者指派的受控識別上設定聯邦身分識別憑證。
選項 1:Microsoft Entra 應用程式
- 透過 Azure 入口網站、Azure CLI 或 Azure PowerShell,建立具有服務主體的 Microsoft Entra 應用程式。
- 複製 用戶端 ID、訂用戶 ID 和 目錄(租用戶)ID 的值,以便稍後在 GitHub Actions 工作流程中使用。
- Azure 入口網站、Azure CLI 或 Azure PowerShell,將適當的角色指派給您的服務主體。
- 在 Microsoft Entra 應用程式 上設定同盟身分識別認證,以信任 GitHub Actions 簽發給 GitHub 存放庫的令牌。
選項 2:使用者指派的受控識別
- 建立使用者指派的受控識別。
- 複製 用戶端 ID、訂用戶 ID 和 目錄(租用戶)ID 的值,以便稍後在 GitHub Actions 工作流程中使用。
- 為您使用者指派的受管理識別指派一個適切的角色。
- 在使用者指派的受控識別 上設定同盟身分識別認證,以信任 GitHub Actions 簽發給 GitHub 存放庫的令牌。
建立祕密
您必須將應用程式的 用戶端識別碼、 目錄(租使用者)標識碼和 訂用帳戶識別碼 提供給登入動作。 這些值可以直接在工作流程中提供,也可以儲存在 GitHub 的秘密中,並在您的工作流程中參考。 將值儲存為 GitHub 秘密是較安全的選擇。
在 GitHub (英文) 中,前往您的存放庫。
選取 [安全性] > [祕密和變數] > [動作]。
選擇 [新增存放庫祕密]。
注意
若要增強公用存放庫中的工作流程安全性,請使用環境秘密,而不是存放庫秘密。 如果環境需要核准,則作業在其中一位必要的檢閱者核准之前,無法存取環境秘密。
建立
AZURE_CLIENT_ID、AZURE_TENANT_ID和AZURE_SUBSCRIPTION_ID的機密資訊。 從您的 Microsoft Entra 應用程式或 GitHub 祕密的使用者指派受控識別複製這些值:GitHub 祕密 Microsoft Entra 應用程式或使用者指派的受控識別 AZURE_CLIENT_ID(Azure 用戶端識別碼) 用戶端識別碼 AZURE_SUBSCRIPTION_ID 訂用帳戶識別碼 AZURE_TENANT_ID 目錄識別碼 (租用戶) ID 注意
基於安全性考慮,我們建議使用 GitHub 秘密,而不是將值直接傳遞至工作流程。
步驟 3:更新 setup.sh 以連線至您的 Azure Machine Learning 工作區
更新 CLI 的設定檔變數以符合你的工作區。
在您 Fork 的存放庫中,前往
azureml-examples/cli/。編輯
setup.sh並更新檔案中的這些變數。變數 描述 GROUP資源群組的名稱 LOCATION工作區的位置 (範例: eastus2)WORKSPACEAzure Machine Learning 工作區名稱
步驟 4:以您的計算叢集名稱更新 pipeline.yml
使用 pipeline.yml 檔案來部署你的 Azure 機器學習管線。 管線是機器學習管線,而不是 DevOps 管線。 只有當你使用非 cpu-cluster 運算叢集名稱時,才需要進行這次更新。
- 在您 Fork 的存放庫中,前往
azureml-examples/cli/jobs/pipelines/nyc-taxi/pipeline.yml。 - 每當您看到
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 排程執行,並在符合的分支與路徑提出提取要求時執行。 深入了解觸發工作流程的事件。 - 在工作流程的 jobs 區段中,您會簽出程式碼,並使用 OpenID Connect 搭配 Azure login 動作登入 Azure。
- 工作區段也包含用于設定和安裝機器學習 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 paths: - cli/jobs/pipelines/nyc-taxi/** - .github/workflows/cli-jobs-pipelines-nyc-taxi-pipeline.yml - cli/run-pipeline-jobs.sh - cli/setup.sh permissions: id-token: write jobs: build: runs-on: ubuntu-latest steps: - name: check out repo uses: actions/checkout@v4 - name: azure login uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - 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 Studio,然後前往 nyc-taxi-pipeline-example。 確認作業的每個部分 (準備、轉換、定型、預測、評分) 皆已完成,並且出現綠色核取記號。
清除資源
當你不再需要資源群組和儲存庫時,刪除資源群組和 GitHub 儲存庫來清理已部署的資源。