Azure Machine Learning 管線
身為數據科學家,您主要是使用 Azure Machine Learning 來定型和管理模型。 測試之後,您應該將工作轉換成生產 Python 程式碼,以允許使用 Azure (DevOps) Pipelines 或 GitHub Actions 進行自動化。
Azure Machine Learning 的實驗
Azure Machine Learning 提供一組功能,可協助您組織工作。 例如,使用 Azure Machine Learning,您就可以:
- 註冊資料集,以輕鬆地重複使用儲存在資料湖中的資料。
- 根據您的需求,在遠端計算執行個體或叢集上定型模型。
- 使用 實驗 追蹤所有已執行的指令碼,以輕鬆比較您的工作。
- 註冊定型的模型,並部署模型以進行批次或即時使用量。
身為資料科學家大部分的工作將包括測試:測試不同的組態來定型模型,並檢閱效能計量,以決定要部署到生產環境的模型。
假設您在 Jupyter Notebook (.ipynb
檔案) 中實驗,您會想要將實驗轉換成生產 Python 程式碼,方法是:
- 移除所有非必要的程式碼。
- 將程式碼重構為函式。
- 在 Python 指令碼中結合相關函式 (
.py
檔案)。 - 為每個 Python 指令碼建立單元測試。
- 建立管線,將指令碼分組到可自動化的工作流程中。
一旦程式碼做好用於生產環境的準備,您就可以使用 Azure Machine Learning 管線自動執行指令碼。
建立 Azure Machine Learning 管線
管線的概念可在各種工具中找到,通常以特定順序分組工作的方式提供。 管線的主要優點是您可以透過排程或觸發來執行。
Azure Machine Learning 工作區內會建立 Azure Machine Learning管線。 若要建立管線,您可以使用 Python 指令碼來定義步驟。
您可以選擇性地建立具有 Azure Machine Learning 元件的管線。 當您建立元件時,指令碼會如同 Azure Machine Learning 工作區中的必要環境一樣搭配中繼資料儲存。 相同工作區內的任何人可以共用及使用元件,讓其他人更輕鬆地快速建立新的管線,以建置您的工作。
若要建立可用於自動化的管線,建議您在 YAML 中定義可使用 CLI (v2) 命令觸發的管線作業。
定義管線的 YAML 檔案必須指定下列資訊:
- 要執行的內容:定義為 Python 指令碼或元件的步驟。
- 如何執行:步驟可能需要的輸入或輸出。
- 執行的位置:執行程式碼所需的計算 (通常是 Azure Machine Learning 計算叢集)。
例如,以原始資料作為輸入、轉換及定型模型的管線,可能會在檔案中 pipeline-job.yml
定義:
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: nyc-taxi-pipeline-example
experiment_name: nyc-taxi-pipeline-example
jobs:
transform-job:
type: command
raw_data:
type: uri_folder
path: ./data
outputs:
transformed_data:
mode: rw_mount
code: src/transform
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
compute: azureml:cpu-cluster
command: >-
python transform.py
--raw_data ${{inputs.raw_data}}
--transformed_data ${{outputs.transformed_data}}
train-job:
type: command
inputs:
training_data: ${{parent.jobs.transform-job.outputs.transformed_data}}
outputs:
model_output:
mode: rw_mount
test_data:
mode: rw_mount
code: src/train
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest
compute: azureml:cpu-cluster
command: >-
python train.py
--training_data ${{inputs.training_data}}
--test_data ${{outputs.test_data}}
--model_output ${{outputs.model_output}}
若要在 Azure Machine Learning 內執行管線,請使用下列 CLI 命令:
az ml job create --file pipeline-job.yml
管線完成執行之後,您就可以檢閱管線及其在 Azure Machine Learning 工作區中執行的步驟。
當您將機器學習工作負載轉換成管線內的 Python 指令碼和群組工作時,您的模型將會做好用於生產環境的準備。 在 YAML 檔案中定義管線可讓您透過觸發管線執行 CLI (v2),將定型和重新定型自動化。 您可以從 Azure (DevOps) Pipelines 或 GitHub Actions 執行 CLI 命令,請參考管線 YAML 檔案。