2. Azure机器学习工作区与资源体系搭建

Azure机器学习工作区(Azure Machine Learning Workspace)是整个平台建设的“根资源”。它本身并不存放训练数据或模型文件,而是作为控制平面,把计算、存储、密钥、镜像仓库和监控等资源以引用关系组织在一起。理解这一点非常关键:工作区是资源关系的集合,而不是一个孤立的服务实例。创建它时,Azure会自动或按需关联若干依赖资源,后续所有实验、作业、模型注册和终结点部署都围绕这套资源体系展开。

一个典型工作区会关联五类资源:存储账户(Storage Account)用于保存数据集、作业输出、模型文件和日志;密钥保管库(Key Vault)用于存放连接字符串、密钥和凭据;容器注册表(Container Registry)用于保存训练与推理使用的Docker镜像;Application Insights用于采集在线终结点的请求指标与日志;计算资源则提供实际执行训练和推理的算力。它们之间的引用关系可以用下图表示。

Azure机器学习工作区资源关系 Azure ML 工作区 控制平面 / 资源引用中心 存储账户 数据集 / 模型 / 日志 密钥保管库 密钥 / 连接字符串 容器注册表 训练 / 推理镜像 Application Insights 指标 / 日志 / 追踪 计算实例 开发调试 / Notebook 单节点,可启停 计算集群 训练作业 / 自动伸缩 0~N 节点,按需计费 推理集群 / 无服务器 在线终结点 / 批量推理 托管算力,自动扩缩

创建工作的方式主要有三种:Azure门户图形界面、Azure CLI命令和Python SDK。生产环境更推荐后两者,因为可以纳入版本控制和自动化流水线。下面以Azure CLI为例,展示一条可复现的创建工作区命令。示例中的资源组名、工作区名和区域均为教学假设值,实际执行时需替换为符合命名规范的值。

az ml workspace create \
  --resource-group rg-ml-prod \
  --name mlws-prod-eastus \
  --location eastus \
  --storage-account stmlprod001 \
  --key-vault kv-ml-prod \
  --container-registry crmlprod001 \
  --application-insights appi-ml-prod

执行成功后,工作区会与这些资源建立引用关系。需要特别注意的是,存储账户和密钥保管库在创建工作区时通常必须指定,而容器注册表和Application Insights可以在首次需要时再创建或关联。容器注册表默认在第一次训练或部署需要构建镜像时自动创建,但生产环境建议提前创建并做好访问控制,避免作业因权限问题失败。

接下来是计算资源的配置。计算实例适合个人开发和调试,它是一台单节点虚拟机,可以随时启停,停止后计算费用不再产生,但磁盘费用仍会保留。创建计算实例时,关键参数包括虚拟机规格、节点数量和空闲关机时间。例如,选择Standard_DS3_v2规格,设置空闲30分钟后自动关机,可以有效控制成本。

az ml compute create \
  --resource-group rg-ml-prod \
  --workspace-name mlws-prod-eastus \
  --name ci-dev-01 \
  --type computeinstance \
  --size Standard_DS3_v2 \
  --idle-time-before-shutdown 1800

计算集群用于训练作业,支持从0到N个节点自动伸缩。配置时需要关注最小节点数、最大节点数和每个节点的规格。最小节点数设为0意味着没有作业时集群缩容到零,不产生计算费用;最大节点数则决定了并发训练的上限。下面示例创建一个最小0节点、最大4节点的集群,空闲缩容时间为120秒。

az ml compute create \
  --resource-group rg-ml-prod \
  --workspace-name mlws-prod-eastus \
  --name cc-train-01 \
  --type amlcompute \
  --size Standard_NC6 \
  --min-instances 0 \
  --max-instances 4 \
  --idle-time-before-scale-down 120

推理集群和无服务器计算面向模型部署。推理集群(Managed Online Endpoint背后的计算)需要预先指定虚拟机规格和节点数,适合对延迟和吞吐有明确要求的在线服务;无服务器计算(Serverless Compute)则无需预先创建集群,由平台按作业需求自动分配算力,适合突发性或不确定频率的批量推理任务。选择时的一个实用判断是:如果服务需要持续在线且SLA要求明确,用推理集群;如果只是偶尔跑一次批量评分,用无服务器计算更省成本。

工作区创建完成后,建议立即检查“访问控制(IAM)”中当前账号是否具备“AzureML数据科学家”或“参与者”角色。很多后续作业失败并非代码问题,而是工作区对存储账户或密钥保管库没有读取权限。

资源体系搭建完成后,可以通过以下命令验证工作区及其关联资源是否就绪。输出中会列出工作区的基本信息、关联的存储账户、密钥保管库和容器注册表,确认这些字段与预期一致,即可进入下一阶段的实验与作业开发。

az ml workspace show \
  --resource-group rg-ml-prod \
  --name mlws-prod-eastus \
  --query "{name:name, location:location, storage:storage_account, keyvault:key_vault, acr:container_registry}"

最后需要强调的是资源命名与标签规范。生产环境中,资源组、工作区、存储账户、密钥保管库和容器注册表应遵循统一的命名约定,并打上环境、项目、负责人等标签。这样在成本分析、权限审计和故障排查时,才能快速定位资源归属。工作区本身不是终点,而是整套机器学习工程化资源的入口和协调中心。