1. Azure机器学习平台全景与工程化部署导论
Azure Machine Learning(简称 Azure ML)是微软在 Azure 上提供的端到端机器学习平台。它要解决的核心问题不是“如何训练一个模型”,而是“如何让模型从一次性的实验代码,变成可复现、可监控、可回滚的生产服务”。理解这一点,才能理解平台为什么由工作区、Studio、SDK v2、CLI v2、计算资源、数据存储、模型注册表和终结点这些组件共同构成——它们分别对应工程化链条上的不同职责。
一、平台的核心对象与职责分工
Azure ML 工作区(Workspace)是整个平台的顶层容器与协作边界。它本身不存储训练数据,也不执行计算,而是把关联的资源组织在一起:计算资源、数据存储、模型、环境、作业记录、终结点等都以工作区为命名空间。创建时通常需要指定资源组、区域、存储账户、密钥保管库和容器注册表,这些依赖资源由平台自动关联。工作区是权限控制(RBAC)和成本归集的单位,因此生产环境一般按项目或团队划分工作区,而不是所有项目共用一个。
Studio是浏览器中的可视化入口,适合数据浏览、作业监控、终结点测试和低代码创作(如自动化机器学习、设计器)。SDK v2(Python)和CLI v2(az ml 命令)则是面向工程化的主要接口,二者共享同一套 YAML 资源规范,因此“本地用 CLI 调试、CI/CD 中用同一份 YAML 部署”是可行的。SDK 适合在 Notebook 中做交互式开发,CLI 适合脚本化和流水线集成。
计算资源分为几类:计算实例(单机开发环境)、计算集群(可弹性伸缩的训练集群,支持 GPU)、无服务器计算(按需自动分配,无需自建集群)、推理集群(托管在线终结点)以及附加的 Kubernetes 集群。选择依据是任务形态:交互式调试用计算实例,批量训练用计算集群或无服务器计算,低延迟在线服务用托管在线终结点。
数据存储与数据资产是两层概念。数据存储(Datastore)是对 Azure 存储账户(Blob、文件共享等)的引用,保存连接信息;数据资产(Data Asset)则是对具体数据路径的版本化登记,分为 URI 文件、URI 文件夹和 MLTable 三种类型。把数据登记为资产而不是直接写路径,是为了让训练作业能引用固定版本,从而保证可复现。
模型注册表保存训练产出的模型及其版本、标签、描述和所属作业。注册后的模型有唯一名称和版本号,部署时引用“名称:版本”而不是本地文件路径,这是从实验走向生产的关键一步。环境则登记了依赖(Conda、pip、Docker 镜像),与模型一样需要版本化,否则“同一模型在不同机器上行为不一致”几乎无法避免。
终结点是模型对外提供服务的入口,分为在线终结点(实时推理,HTTP 请求-响应)和批处理终结点(对大批量数据异步打分)。在线终结点内部通过“部署”承载具体模型、环境和计算配置,支持流量分配,因此可以做蓝绿发布或金丝雀发布。
二、从实验到生产的工程化路径
一个典型的工程化路径可以概括为:数据登记 → 环境定义 → 训练作业 → 模型注册 → 部署终结点 → 监控与迭代。每一步的产物都是下一步的输入,且都被版本化,这是可复现性的来源。
以房价回归为例。第一步,把训练数据上传到 Blob 并登记为数据资产:
az ml data create --file data-asset.yml --resource-group rg-ml --workspace-name ws-prod
# data-asset.yml 关键字段
# name: housing-train
# version: 1
# type: uri_folder
# path: azureml://datastores/workspaceblobstore/paths/housing/2024-06/
第二步,定义环境。环境 YAML 中写明基础镜像和依赖,例如 conda_file: env.yml,其中包含 scikit-learn=1.4、pandas 等。第三步,提交训练作业,指定 compute: azureml:cpu-cluster、environment: azureml:housing-env:1、inputs: housing-train。作业完成后,指标(如 RMSE)写入运行记录,模型文件写入输出目录。
第四步,把模型注册为资产:az ml model create --name housing-model --version 1 --path ./outputs/model。第五步,创建在线终结点并部署,部署配置中引用 azureml:housing-model:1 和 azureml:housing-env:1,实例类型可选 Standard_DS3_v2,实例数 1。部署成功后,终结点提供评分 URI 和密钥,可用 az ml online-endpoint invoke 发送测试请求。
Succeeded;调用返回 HTTP 200 且响应结构与预期一致;在 Studio 的终结点页面能看到请求延迟和错误率指标。三、工程化中容易忽略的关键点
第一,环境与模型必须一起版本化。只注册模型不注册环境,等于把“模型能跑”这件事寄托在运行机器上,生产环境一旦重建就可能失败。第二,数据资产要按时间或批次切分版本,避免用“最新数据”训练导致结果不可复现。第三,终结点部署支持流量分配,新版本先给 10% 流量,观察指标正常后再全量切换,这是比“直接替换”更安全的做法。第四,工作区不是越多越好,但生产与开发建议分开,避免实验作业占用生产配额或误删生产资产。