使用 Azure ML SDK 完成端到端数据科学项目:从 AutoML 训练、模型解释到部署消费
2026/9/13 11:38:07 网站建设 项目流程

使用 Azure ML SDK 完成端到端数据科学项目:从 AutoML 训练、模型解释到部署消费

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

导读

本指南以 Data-Science-For-Beginners 课程第 19 课(5-Data-Science-In-Cloud/19-Azure)的课后作业为核心,完整讲解如何用 Azure Machine Learning SDK(Python)以纯代码方式复现"低代码/无代码"课程中的心衰预测项目:从加载数据集、配置 AutoML、提交远程训练、查看模型解释、注册最佳模型,到部署为 ACI Web 服务端点并用 SDK 消费预测。学完后你将掌握一条可迁移到任意表格数据集上的 Azure ML SDK 端到端实战链路。

1. 作业任务解读:用 SDK 复刻 Low Code 流程

上一课(5-Data-Science-In-Cloud/18-Low-Code/README.md)通过 Azure ML Studio 图形界面完成了"训练 → 部署 → 消费"三步。本课作业要求你用 Azure ML SDK 在 Python 环境中做完全相同的事:寻找一份新数据集,用它再训练一个模型、部署并消费。两者流程一致,区别只在实现方式——这也是课程刻意设计的对照:

对比维度Low code/No codeAzure ML SDK
代码能力要求不需要需要
开发速度快速简单取决于代码功底
生产就绪

作业原文(translations/en/5-Data-Science-In-Cloud/19-Azure/assignment.md)指出:项目进入生产化阶段后,通过 GUI 手工创建资源不可行,必须用 SDK 以编程方式自动化"从资源创建到模型部署"的每个环节,这正是本作业的价值所在。示例数据集可在 Kaggle 或 Azure Open Datasets 目录中检索获取。

下面的完整实现以课程自带的心衰预测数据集为演示载体,可直接对照仓库中的 notebook.ipynb 逐步运行;作业要求的数据集可按同样流程替换。

2. 前置准备:Workspace、Compute Instance 与数据集

作业的前置条件沿用上一课(5-Data-Science-In-Cloud/18-Low-Code/README.md)已建立的资源,无需从零开始:

  • Workspace:Azure ML 的顶层资源,集中管理训练运行历史、日志、指标、输出与脚本快照。若尚未创建,按上一课 2.1 节的步骤在 Azure 门户中创建(注意:Workspace 存续期间会产生少量存储费用,用完后建议删除)。
  • Compute Instance:充当 Jupyter Notebook 的开发工作站。在 Azure ML Studio 的 Compute 菜单中点击+ New,命名后选择 CPU/GPU、VM 规格与核心数即可创建,界面如下图所示:

  • 数据集:将 Kaggle 的 Heart Failure 数据集(13 列:12 个特征 + 1 个目标列,299 行)通过 Studio 的 Datasets 菜单上传,并在 Schema 中把anaemiadiabeteshigh_blood_pressuresexsmokingDEATH_EVENT设为 Boolean 类型。上传时给数据集命名(如heart-failure-records),SDK 将按此名称从 Workspace 中取用。

两种构建方式的整体对照关系见下图:两者共用同一个数据集输入,AutoML 训练、选优、部署、消费四个阶段一一对应:

3. Notebook 环境:导入 SDK 依赖

在 Compute Instance 上打开 Jupyter(Applications 区域点击 Jupyter,勾选确认后进入,点击New创建 notebook),或直接上传仓库提供的 notebook.ipynb。首先一次性导入本作业会用到的全部 Azure ML SDK 模块:

from azureml.core import Workspace, Experiment from azureml.core.compute import AmlCompute from azureml.train.automl import AutoMLConfig from azureml.widgets import RunDetails from azureml.core.model import InferenceConfig, Model from azureml.core.webservice import AciWebservice

这些 import 覆盖了整条链路:Workspace 负责连接云资源,Experiment 组织运行记录,AmlCompute 提供训练算力,AutoMLConfig 配置自动机器学习,InferenceConfig/AciWebservice/Model 负责部署与消费。

4. 训练阶段:Workspace、Experiment、Compute Cluster 与 Dataset

4.1 初始化 Workspace 并创建 Experiment

从配置文件加载 Workspace(config.json 需已存在并包含订阅、资源组、工作区信息):

ws = Workspace.from_config() print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep = '\n')

然后按实验名获取或创建 Experiment。注意实验名的约束:长度 3–36 个字符,以字母或数字开头,只能包含字母、数字、下划线和连字符;Workspace 中不存在同名实验时会自动新建:

experiment_name = 'aml-experiment' experiment = Experiment(ws, experiment_name)

4.2 创建 Compute Cluster

训练需要可弹性伸缩的计算集群。以下代码先尝试获取已存在的集群,不存在则用provisioning_configuration创建:VM 规格Standard_D2_v2、最小 1 个节点、最大 3 个节点。该步骤通常需要数分钟:

aml_name = "heart-f-cluster" try: aml_compute = AmlCompute(ws, aml_name) print('Found existing AML compute context.') except: print('Creating new AML compute context.') aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3) aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config) aml_compute.wait_for_completion(show_output = True) cts = ws.compute_targets compute_target = cts[aml_name]

参数要点:min_nodes=0可在集群空闲时省下费用;max_nodes越大训练越快但成本越高,课程建议最大节点数为 3。

4.3 按名称加载数据集

数据集以键值方式挂在 Workspace 下,键名即上传时的数据集名称。加载后转成 pandas DataFrame 并快速查看描述性统计:

key = 'heart-failure-records' dataset = ws.datasets[key] df = dataset.to_pandas_dataframe() df.describe()

5. AutoML 配置与训练:本作业的评分核心

5.1 AutoMLConfig 参数详解

AutoML 自动迭代算法与超参数组合,找出预测效果最佳的模型。作业的**优秀档(Exemplary)**要求你主动查阅 SDK 文档、探索可用的配置参数——下面这张参数表正是作业考核的知识点:

参数作用
experiment_timeout_minutes实验自动停止前允许运行的最大分钟数,超时后自动产出结果
max_concurrent_iterations允许并发的训练迭代数上限
primary_metric决定实验状态的主评估指标
compute_target运行 AutoML 实验的 Azure ML 计算目标
task任务类型:classificationregressionforecasting
training_data训练数据,须同时包含特征列与标签列(可选样本权重列)
label_column_name标签列名
pathAzure ML 项目文件夹的完整路径
enable_early_stopping评分短期无提升时是否提前终止
featurization是否自动执行特征化,或使用自定义特征化
debug_log写入调试信息的日志文件

本项目的实际配置(与 notebook.ipynb 完全一致):心衰预测是二分类问题,选用AUC_weighted作为主指标,标签列为DEATH_EVENT

automl_settings = { "experiment_timeout_minutes": 20, "max_concurrent_iterations": 3, "primary_metric" : 'AUC_weighted' } automl_config = AutoMLConfig(compute_target=compute_target, task = "classification", training_data=dataset, label_column_name="DEATH_EVENT", path = './aml-project', enable_early_stopping= True, featurization= 'auto', debug_log = "automl_errors.log", **automl_settings )

从源码结构看,**automl_settings将三个参数展开注入AutoMLConfig,便于将"常用调参项"与"基础配置项"分离管理,是 SDK 项目里常见的可读性做法。

5.2 提交实验与运行详情

配置就绪后提交训练。AutoML 内部会尝试多种算法与超参数组合,训练时长取决于集群规模,从 30 分钟到 1 小时不等:

remote_run = experiment.submit(automl_config)

RunDetails组件在 notebook 内实时查看各迭代的运行情况:

from azureml.widgets import RunDetails RunDetails(remote_run).show()

5.3 获取并检查最佳模型(含模型解释)

remote_runAutoMLRun对象,get_output()返回最佳 run 及其已拟合模型:

best_run, fitted_model = remote_run.get_output()

打印fitted_model可查看最佳模型的参数;调用get_properties()可查看属性(其中model_name等元数据在后续注册阶段会被使用):

best_run.get_properties()

作业的**良好档(Adequate)**与优秀档均要求"检查模型解释"——在 Studio 的 Runs 页面切换到最佳模型的Explanations标签,可查看各特征对预测结果的影响度分析,这是判断模型是否可信、是否可直接上线的关键证据。

6. 部署阶段:注册模型并发布为 ACI Web 服务

6.1 下载评分脚本并注册模型

AutoML 运行会自动生成可直接部署的评分脚本outputs/scoring_file_v_1_0_0.py,下载到本地后连同模型一起注册到 Workspace:

model_name = best_run.properties['model_name'] script_file_name = 'inference/score.py' best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py') description = "aml heart failure project sdk" model = best_run.register_model(model_name = model_name, model_path = './outputs/', description = description, tags = None)

register_model将模型登记进 Workspace 的模型注册表,后续可随时按名称调取,是生产化流程的标准动作。

6.2 用 InferenceConfig 与 AciWebservice 部署

InferenceConfig描述部署用的自定义环境(入口脚本 + 环境);AciWebservice将模型发布为 Azure Container Instances 上的 Web 服务端点——一个带 REST API 的负载均衡 HTTP 端点,可接收数据并返回预测:

inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment()) aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1, tags = {'type': "automl-heart-failure-prediction"}, description = 'Sample service for AutoML Heart Failure Prediction') aci_service_name = 'automl-hf-sdk' aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig) aci_service.wait_for_deployment(True) print(aci_service.state)

部署通常需要几分钟。deploy_configuration中可调整cpu_coresmemory_gb以匹配服务的吞吐与内存需求,tagsdescription用于在 Studio 中识别服务。

7. 消费阶段:构造样本请求并调用端点

构造一条符合 12 个特征 schema 的 JSON 输入(注意字段名与上传数据集一致),编码后通过aci_service.run()发送:

import json data = { "data": [ { 'age': "60", 'anaemia': "false", 'creatinine_phosphokinase': "500", 'diabetes': "false", 'ejection_fraction': "38", 'high_blood_pressure': "false", 'platelets': "260000", 'serum_creatinine': "1.40", 'serum_sodium': "137", 'sex': "false", 'smoking': "false", 'time': "130", }, ], } test_sample = str.encode(json.dumps(data)) response = aci_service.run(input_data=test_sample) response

预期输出为'{"result": [false]}',表示该患者样本被预测为不太可能发生心衰。至此,你用 Azure ML SDK 完成了与上一课 Low Code 流程完全对等的"训练 → 部署 → 消费"闭环。

8. 评分标准与自查清单

作业的完整评分细则(Rubric)如下,提交前可逐项对照自查:

优秀(Exemplary)良好(Adequate)待改进(Needs Improvement)
配置 AutoML 时查阅了 SDK 文档并探索了可用的参数;用 Azure ML SDK 通过 AutoML 在数据集上完成训练、查看了模型解释、部署了最佳模型,并能通过 SDK 成功消费用 Azure ML SDK 通过 AutoML 在数据集上完成训练、查看了模型解释、部署了最佳模型,并能通过 SDK 成功消费用 Azure ML SDK 通过 AutoML 在数据集上完成训练、部署了最佳模型,并能通过 SDK 成功消费

三档之间的差异点清晰可见:待改进档未要求查看模型解释;良好档补上模型解释环节;优秀档额外要求在 AutoML 配置阶段主动研读 SDK 文档、探索更多参数——这提示你在AutoMLConfigautoml_settings中尝试调整如experiment_timeout_minutesmax_concurrent_iterationsprimary_metric之外的参数(如早停、特征化策略),并在文章中说明依据。

9. 资源清理与进阶方向

完成项目后务必删除相关资源(Workspace、Compute Instance、Cluster、ACI 服务),避免持续产生云费用。

课程还给出了一个进阶挑战:在 SDK 文档中检索Pipeline类(azureml.pipeline.core.Pipeline),了解如何把多步骤工作流(数据准备 → 训练 → 部署)组织为可重复执行的管道——这是从"单次实验"迈向"生产级工作流"的下一步。SDK 的能力远不止本文覆盖的部分,养成查阅官方 SDK 文档的习惯,是独立扩展技能的关键。

本文相关仓库资源速查:课程正文 5-Data-Science-In-Cloud/19-Azure/README.md、可运行的完整实现 notebook.ipynb、上一课对照材料 5-Data-Science-In-Cloud/18-Low-Code/README.md。

【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询