Azure Pipelines
將工作流程自動化的一種選擇是使用 Azure Pipelines,這是屬於 Azure DevOps Services。 使用 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 管線。
- 觸發 Azure Pipeline。 通常會變更存放庫 (認可或提取要求)。
- 執行 Azure Pipeline,這是由步驟組成的一組工作。
- 步驟會起始 Azure Machine Learning 管線。
- Azure Machine Learning 管線會執行指令碼或 Azure Machine Learning 元件。
- 指令碼或元件代表機器學習工作。
若要建立 Azure Pipeline,需定義想要納入 YAML 檔案中的步驟。 在 Azure Pipeline 的 YAML 檔案中,需納入以下項目:
- 觸發程序:什麼事件會起始管線。
- 階段:通常會與不同開發環境 (開發/測試/生產) 保持一致的一組工作。
- 工作:一組在代理程式上執行的步驟。 針對機器學習工作負載,建議使用 Microsoft 裝載的 Ubuntu 代理程式。
- 步驟:想要執行的指令碼或工作。 例如,CLI 命令會起始 Azure Machine Learning 管線 (
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 Pipeline 其中一個步驟的形式執行 Azure Machine Learning 管線,需採取以下動作:
- 安裝適用於 CLI 的 Azure Machine Learning 延伸模組。
- 在 Azure Machine Learning 中使用
az ml job create
命令執行管線工作。
安裝和 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 中,瀏覽至 [Pipelines] 索引標籤,然後選取 [Pipelines]。
- 建立新管線。
- 選取 [Azure Repos Git] 做為程式碼的位置。
- 選擇您的程式碼所在的存放庫。
- 選擇 [現有 Azure Pipelines] YAML 檔案。
- 選擇指向您為 Azure Pipeline 建立的 YAML 檔案路徑。
- 檢閱管線之後,您可以儲存並執行。
管線是由至主要分支的認可所觸發。 當您設定管線時,Azure Pipelines 會認可主要分支的變更,這會觸發管線的第一次執行。 設定之後,您可以隨時將認可從 Visual Studio Code 或 Azure Repos 推送至存放庫,以觸發管線。
當您選取工作時,可以檢視其流程。 工作中的每個步驟都會反映在左側瀏覽窗格中。 概觀中會顯示哪些步驟已成功執行,哪些步驟失敗。 當您選取該步驟時,命令列介面中會顯示任何潛在的錯誤訊息。 檢閱輸出便能針對錯誤疑難排解。
當工作觸發 Azure Machine Learning 管線開始執行時,您也可以檢閱 Azure Machine Learning 工作區中的管線執行,以檢視可能感興趣的任何計量或錯誤。