Azure 机器学习管道
作为数据科学家,你将主要使用 Azure 机器学习来训练和管理模型。 试验后,应将工作转换为生产 Python 代码,以允许使用 Azure (DevOps) Pipelines 或 GitHub Actions 实现自动化。
Azure 机器学习中的试验
Azure 机器学习提供了一套有助于组织工作的功能。 例如,使用 Azure 机器学习可执行以下操作:
- 注册数据集以轻松重用 Data Lake 中存储的数据。
- 根据要求,使用远程计算实例或群集训练模型。
- 使用试验跟踪所有已执行的脚本,以轻松比较工作。
- 注册已训练的模型并部署模型以用于批量或实时消耗。
数据科学家的大多数工作都将包含试验:测试用于训练模型的不同配置并查看性能指标以确定要部署到生产中的模型。
假设你在 Jupyter 笔记本(.ipynb 文件)中进行试验,则需要通过以下方式将试验转换为生产 Python 代码:
- 删除所有不必要的代码。
- 将代码重构为函数。
- 合并 Python 脚本(
.py文件)中的相关函数。 - 为每个 Python 脚本创建单元测试。
- 创建管道,将脚本分组到可自动执行的工作流中。
代码准备好进入生产阶段后,可以使用 Azure 机器学习管道自动执行脚本。
创建 Azure 机器学习管道
管道概念在各种工具中均可发现,通常提供按特定顺序对任务进行分组的方法。 管道的主要优点是可以计划管道或触发管道运行。
Azure 机器学习管道在 Azure 机器学习工作区中创建。 若要创建管道,可以使用 Python 脚本定义步骤。
(可选)可以创建包含 Azure 机器学习组件的管道。 创建组件时,脚本将使用元数据(如 Azure 机器学习工作区中所需的环境)存储。 组件可以由同一工作区中的任何人共享和使用,使其他人能够在你的工作的基础上更轻松地快速创建新管道。
若要创建可用于自动化的管道,建议在 YAML 中定义可以使用 CLI (v2) 命令触发的管道作业。
定义管道的 YAML 文件需要指定以下信息:
- 要运行的步骤:定义为 Python 脚本或组件的步骤。
- 运行方式:步骤可能需要的任何输入或输出。
- 运行位置:执行代码所需的计算(通常是 Azure 机器学习计算群集)。
例如,获取原始数作为输入、转换数据并训练模型的管道可以在 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 机器学习内运行管道,请使用以下 CLI 命令:
az ml job create --file pipeline-job.yml
管道完成执行后,可以在 Azure 机器学习工作区中查看管道及其执行的步骤。
将机器学习工作负载转换为管道中的 Python 脚本和分组任务后,模型将准备好进入生产阶段。 通过定义 YAML 文件中的管道,可以通过使用 CLI (v2) 触发管道运行来自动执行训练和重新训练。 可以从 Azure (DevOps) Pipelines 或 GitHub Actions 运行 CLI 命令,引用管道 YAML 文件。