Azure ML机器学习管道:分步教程
Azure ML 管道的核心是五个对象:工作区、计算、组件、管道、端点。这篇按建资源、注册数据、写组件、跑管道、注册模型、部署端点的顺序,给出一套能照着走的分步流程。
💡 你将学到
Azure ML 管道的核心是五个对象:工作区、计算、组件、管道、端点。这篇按建资源、注册数据、写组件、跑管道、注册模型、部署端点的顺序,给出一套能照着走的分步流程。
Azure ML机器学习管道分步教程:从工作区到在线端点
先认清五个对象
Azure ML 的学习曲线不在代码,而在概念。把这五个对象的关系理清楚,后面就是填参数:
| 对象 | 作用 | 类比 |
|---|---|---|
| Workspace | 顶层资源,装着所有东西 | 一个项目仓库 |
| Compute | 跑任务的托管集群(CPU/GPU) | 可伸缩的构建机 |
| Component | 可复用、带版本的步骤,输入输出有契约 | 一个函数 |
| Pipeline | 组件的 DAG,按依赖顺序执行 | 一条工作流 |
| Endpoint | 推理入口,在线(实时)或批处理 | 一个 API |
关键设计取舍:计算是任务级的,不是常驻的。任务结束集群自动缩容到零,这是 Azure ML 相对自建集群最直接的省钱点;代价是在线端点为保证可用性通常需要保留最小实例。
第一步:建工作区与计算
工作区里需要至少有:一个存储账户(放数据与产物)、一个 Key Vault(放密钥)、一个容器注册库存镜像(一般随工作区自动创建)。计算按用途分开建:
| 用途 | 规格建议 | 说明 |
|---|---|---|
| 数据预处理 | CPU 中小规格 | 按需起,跑完即停 |
| 模型训练 | GPU 节点 | 需要时把最小节点设为 0,任务来了再扩 |
| 在线推理 | CPU 或小 GPU | 至少 1 个常驻实例,否则冷启动影响体验 |
| 批处理打分 | CPU 或 GPU | 任务级,跑完即释放 |
建立计算时把自动缩容的空闲时间调短(例如几分钟),这是最容易被忽略的成本开关。
第二步:注册数据集
不要在每个组件里各自读一份原始文件,而是把数据注册成带版本的资产:azureml:<name>:<version>。好处是:
- 每次训练用的数据版本可追溯,出问题能复现
- 组件通过名字引用数据,换路径不用改代码
- 可以设数据漂移监控,作为重训信号
第三步:写三个组件
最小可用的管道是三步:预处理 → 训练 → 评估。每个组件是一个带输入输出声明的命令。
from azure.ai.ml import command, Input, Output, dsl
from azure.ai.ml.constants import AssetTypes
train = command(
code="./src",
command="python train.py --data ${{inputs.data}} --model ${{outputs.model}}",
inputs={"data": Input(type=AssetTypes.URI_FOLDER)},
outputs={"model": Output(type=AssetTypes.URI_FOLDER)},
environment="azureml:AzureML-pytorch-2.4-ubuntu22.04-py311-cuda12@latest",
compute="gpu-cluster",
)
@dsl.pipeline(name="train-pipeline", default_compute="cpu-cluster")
def build_pipeline(raw_data):
p = prep(raw=raw_data) # 预处理组件按同样写法声明
t = train(data=p.outputs.clean)
return {"model": t.outputs.model}
组件化的三个实际好处:可缓存(输入没变则跳过执行)、可单独调试(每个组件能本地跑)、可复用(换模型只换训练组件)。
第四步:跑管道并记录指标
提交后可以在界面看到每个节点的状态、日志和耗时。建议在训练脚本里显式记录评估指标,这样不同版本可以直接对比,而不是靠翻日志。失败重跑时,只要上游输入没变,已完成的组件会命中缓存,不会白烧 GPU。
第五步:注册模型并部署端点
训练完把模型注册成带版本的资产,再选择部署方式:
| 方式 | 适用 | 注意 |
|---|---|---|
| 在线端点 | 实时请求、低延迟 | 需要最小常驻实例;支持流量拆分做灰度 |
| 批处理端点 | 大批量离线打分 | 任务级计费,适合夜间跑 |
在线端点常见的两个坑:一是忘记设置自动伸缩规则,流量上来就超时;二是没做灰度,直接全量替换,出问题只能回滚。正确做法是先给新版本分配一小部分流量观察指标。
第六步:监控与重训
平台自带的数据漂移检测可以直接挂在数据集上,漂移超阈值就触发告警,再接流水线重训。监控重点看三件事:输入漂移、端点延迟与错误率、单次推理成本。
成本控制清单
- 计算集群空闲缩容时间调到最短
- 训练用竞价(Spot)节点,可显著降低重训成本,但要注意任务可能被抢占——所以训练脚本要支持检查点续跑
- 在线端点只保留必要的最小实例,其余交给自动伸缩
常见问题
Q:Azure ML 和自己在虚拟机上跑有什么区别? A:省掉集群管理与环境配置,代价是平台溢价与一定自由度损失。团队没有专职平台工程师时,前者通常更划算。
Q:能部署自带的模型或本地大模型吗? A:可以。用自定义环境打包依赖和模型,端点里加载即可。注意镜像体积会影响冷启动时间。
Q:为什么组件跑第二次很快? A:命中缓存。输入与代码都没变时平台会复用上次的输出,改代码或数据会重新执行。
Q:竞价节点被抢占怎么办? A:训练脚本定期写检查点,被抢占后从最近检查点续跑;同时关键任务保留一小部分按需节点兜底。
相关文章
❓ 常见问题
Azure ML vs plain Kubernetes?
Azure ML removes cluster management; you pay a platform premium.
Can I use my own models?
Yes - bring any model, including local LLMs via custom environments.
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。