Data-Science-For-Beginners 实战作业指南:使用 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 课程中《Data Science in the Cloud: The "Azure ML SDK" way》一课的结课实战作业,来源于 5-Data-Science-In-Cloud/19-Azure/assignment.md。在前面的课程中,你已经学习了如何借助 Azure ML 平台,用 Azure ML SDK 完成"训练模型—部署模型—消费模型"的完整链路;本作业要求你跳出示例数据,独立寻找一份新数据集,把这条链路完整跑通一遍。读完本文,你将掌握:如何用 SDK 为 AutoML 配置参数、如何提交训练并解读最优模型解释、如何注册并部署模型为 REST 端点,以及如何通过 SDK 构造请求消费该端点。
作业任务概览
本作业的核心指令非常明确:在 5-Data-Science-In-Cloud/19-Azure/README.md 所演示的心力衰竭预测项目(Heart Failure Prediction)之外,自行寻找一份可以用来训练另一个模型的数据集,然后依次完成:
- 用 Azure ML SDK 配置 AutoML(查阅 SDK 文档,选择并理解可用参数);
- 基于该数据集跑一次 AutoML 训练;
- 检查(review)训练产生的最优模型及其解释(explanations);
- 部署最优模型;
- 通过 Azure ML SDK 消费已部署的模型。
课程推荐的找数据来源包括 Kaggle 与 Azure Open Datasets(可用与课程示例不同的分类、回归或预测类数据集)。
评分标准拆解:三个层次的能力要求
作业配套的 Rubric(评分量表)将完成度划分为三档,理解它可以帮你对照检查自己做到哪一步:
| 档次 | 必须完成的能力 | 达标要点 |
|---|---|---|
| 需要改进(Needs Improvement) | 用 Azure ML SDK 通过 AutoML 在数据集上跑训练;部署最优模型;通过 SDK 消费模型 | 跑通主链路即可 |
| 足够(Adequate) | 在上一档基础上,补充"检查模型解释"(model explanations) | 不仅训练,还要看懂模型为什么这样选 |
| 优秀(Exemplary) | 在配置 AutoML 时,通读 SDK 文档,明确每个参数的作用;训练后检查模型解释;部署并消费 | 体现出对AutoMLConfig参数的主动查阅与合理解释 |
也就是说,从"能跑通"到"懂原理"再到"会查文档做设计",三个层次分别对应作业的及格、良好与优秀标准。下面的章节将按作业要求,逐一给出可复制的代码与原理说明。
前置条件:从课程示例出发
本作业建立在前一课《The "Low code/No code" way》与本节课程示例的基础上,建议先具备以下前置条件(详见 5-Data-Science-In-Cloud/19-Azure/README.md 第 2 节):
- 已创建一个 Azure ML workspace(工作区);
- 已创建一个 compute instance(计算实例),用于承载 Jupyter Notebook;
- 已将数据集上传到工作区(Azure ML Studio 的 Datasets 菜单,或沿用示例的
heart-failure-records数据集); - 可在 Jupyter Notebook(或任意 Python 环境)中安装并导入
azureml-core、azureml-train-automl、azureml-widgets等 SDK 包。
课程提供了一个可上传到 Azure ML Studio 直接运行的完整示例 notebook.ipynb,它展示了从 Workspace 初始化到端点消费的全部 9 个步骤;作业即要求你把同样的步骤迁移到你自己挑选的新数据集上。仓库中另有一份 solution/notebook.ipynb(该文件当前为空占位,实际可运行的参考实现以课程主 notebook 为准)。
课程架构图清晰地展示了低代码/无代码方式与 Azure ML SDK 两种路径殊途同归:都以 Dataset 为输入,经过 AutoML 训练 → 选择最优模型 → 部署 → 消费端点的统一流程。SDK 路径的价值在于:当项目需要生产化(production ready)、需要以代码方式自动化资源创建与部署时,GUI 方式不再可行,而这正是本作业训练的正是这种能力。
第一步:用 Azure ML SDK 配置 AutoML
1.1 初始化工作区、实验、计算集群与数据集
在跑 AutoML 之前,需要先把环境四要素准备齐全。课程示例代码(与 notebook.ipynb 完全一致)如下:
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加载 Workspace:从配置文件(config.json)读取工作区信息:
ws = Workspace.from_config()创建 Experiment:实验名有命名约束——长度 3–36 个字符,以字母或数字开头,只能包含字母、数字、下划线和短横线。若同名实验不存在则自动创建:
experiment_name = 'aml-experiment' experiment = Experiment(ws, experiment_name)创建计算集群(compute cluster):训练需要独立的计算目标。课程使用AmlCompute.provisioning_configuration配置集群,min_nodes/max_nodes控制弹性伸缩范围(min_nodes=0时集群空闲不产生费用);wait_for_completion(show_output=True)会阻塞等待资源就绪,这一步通常需要几分钟:
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]加载数据集:以数据集名从工作区取出已上传的数据,并转成 pandas DataFrame 做快速查看:
dataset = ws.datasets['heart-failure-records'] df = dataset.to_pandas_dataframe() df.describe()作业提示:做自己的项目时,把
heart-failure-records换成你自己上传的数据集名即可,其余逻辑完全复用。
1.2 AutoMLConfig 核心参数(作业"优秀"档的考察点)
优秀档要求"配置 AutoML 时通读 SDK 文档、搞清可用参数"。课程示例用到的参数及其含义如下表(来源:5-Data-Science-In-Cloud/19-Azure/README.md 第 2.5.2 节):
| 参数 | 作用 | 课程示例取值 |
|---|---|---|
experiment_timeout_minutes | 实验允许运行的最大时长(分钟),超时自动停止并产出结果 | 20 |
max_concurrent_iterations | 允许并行的训练迭代(iteration)数上限 | 3 |
primary_metric | 用于判定实验状态的主指标 | 'AUC_weighted' |
compute_target | AutoML 实验运行的计算目标 | compute_target |
task | 任务类型,取值classification/regression/forecasting | "classification" |
training_data | 训练数据,须同时含特征列与标签列 | dataset |
label_column_name | 标签列名 | "DEATH_EVENT" |
path | Azure ML 项目文件夹的完整路径 | project_folder |
enable_early_stopping | 指标短期内不再提升时是否提前终止 | True |
featurization | 是否自动做特征化,可选auto或自定义 | 'auto' |
debug_log | 调试日志写入的文件名 | "automl_errors.log" |
作业要求"自己去查 SDK 文档看看还能用哪些参数",这是设计意图所在——AutoMLConfig远不止这几个参数,还有迭代次数控制、模型可解释性开关、验证集划分等,选新数据集时值得根据数据规模与任务类型补充阅读。完整的可运行配置如下(来自课程 notebook):
project_folder = './aml-project' 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 = project_folder, enable_early_stopping= True, featurization= 'auto', debug_log = "automl_errors.log", **automl_settings )第二步:提交 AutoML 训练并检查模型解释
配置就绪后提交训练任务:
remote_run = experiment.submit(automl_config)submit返回一个AutoMLRun对象,训练在云端计算集群上异步执行;训练耗时与集群规模强相关(课程示例在默认集群下约 30 分钟到 1 小时)。可以在 Notebook 中用 Azure ML 自带的 RunDetails 小组件实时查看各次迭代(iteration)的进度与指标:
from azureml.widgets import RunDetails RunDetails(remote_run).show()训练完成后,作业明确要求"检查模型解释"(check the model explanations)。这一步对应 5-Data-Science-In-Cloud/18-Low-Code/README.md 中的建议——在 Azure ML Studio 的"Models"标签页查看 AutoML 为候选模型生成的 Explanations(解释),分析每个特征对预测的贡献、为什么最优模型优于其他候选算法。在 SDK 路径下,模型解释同样可以从运行结果中获取并审查,它是判断模型可信度、向业务方解释预测依据的关键环节。
第三步:获取并注册最优模型
AutoMLRun.get_output()返回最优的 run 及其对应的已拟合模型:
best_run, fitted_model = remote_run.get_output()- 直接打印
fitted_model可查看最优模型使用的算法与超参数; - 调用
best_run.get_properties()可查看最优模型的属性(如model_name等元信息)。
随后用register_model将模型注册到工作区。注册前先把 AutoML 自动生成的推理脚本(scoring file)下载到本地inference/score.py,后续部署时作为 entry script 使用:
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让模型进入工作区的模型仓库,具备版本、描述与标签管理能力,是后续部署与运维的基础。
第四步:部署最优模型为 ACI 端点
部署需要两类配置:
InferenceConfig:描述部署环境的自定义配置,包括入口脚本entry_script与运行环境(这里直接复用 AutoML 最佳运行的get_environment(),保证依赖与训练环境一致);AciWebservice.deploy_configuration:描述 Azure Container Instances(ACI)上的 Web 服务配置,包括 CPU 核数、内存大小、标签与描述。ACI 服务是一个负载均衡的 HTTP 端点,提供 REST API 供应用调用。
from azureml.core.model import InferenceConfig, Model from azureml.core.webservice import AciWebservice 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)Model.deploy接收工作区、服务名、模型列表、推理配置与部署配置;wait_for_deployment(True)阻塞直到部署完成并打印服务状态。部署通常需要几分钟,可在 Azure ML Studio 的 Endpoints 页面查看进度与最终状态。
第五步:通过 SDK 消费端点
部署完成后即可构造样本输入调用端点。注意课程示例把每个特征值以字符串形式放在"data"数组中,特征名与心力衰竭数据集的 12 个特征一一对应(age、anaemia、creatinine_phosphokinase、diabetes、ejection_fraction、high_blood_pressure、platelets、serum_creatinine、serum_sodium、sex、smoking、time):
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))把 JSON 序列化并编码为字节后,交给服务的run方法即可获得预测结果:
response = aci_service.run(input_data=test_sample) response课程示例中该调用返回'{"result": [false]}',即模型判断这位患者"不太可能发生心力衰竭"。这说明端到端链路已经打通:训练 → 注册 → 部署 → 消费。
提示:在你的新数据集项目中,
data字典的键必须替换为你自己数据集的列名;布尔型特征用"true"/"false"字符串,数值特征用字符串形式的数字。此前的低代码课程 5-Data-Science-In-Cloud/18-Low-Code/README.md 第 3.2 节演示了同一数据集下返回[true, false]两条预测的对照示例,可作参考。
延伸挑战:用 SDK 探索 Pipeline
作业所在课程的 Challenge 部分还推荐了一个进阶方向:在 Azure ML SDK 文档中检索Pipeline类(azureml.pipeline.core.Pipeline),它允许把多个步骤组织成可执行的工作流(workflow)。这对你的结课项目是一个很好的延伸——比如把"数据预处理 → AutoML 训练 → 模型注册 → 部署"串成一条可重复执行的管道。搜索 SDK 文档中的关键词 "Pipeline" 即可找到该类。
收尾与自检清单
课程反复强调:项目结束后务必删除所有云资源(workspace、compute instance、compute cluster、ACI 服务),避免持续产生费用(workspace 存在期间即会产生少量存储费用)。
对照作业评分标准做最终自检:
- 我用自己的数据集跑通了 AutoML 训练(
experiment.submit+RunDetails查看迭代过程); - 我检查了最优模型的解释(explanations)并理解了特征贡献;
- 我用
get_output()拿到最优模型并用register_model注册; - 我用
InferenceConfig+AciWebservice完成部署,state为健康状态; - 我通过
aci_service.run(input_data=...)成功获得预测结果; - 我通读了
AutoMLConfig的 SDK 文档,能解释每个所用参数的作用(优秀档要求)。
完成以上清单,你就在 Data-Science-For-Beginners 的云上数据科学课程中,掌握了用 Azure ML SDK 从零构建、部署并消费一个数据科学项目的能力。更多 SDK 细节可继续研读课程 19-Azure README 及其配套 notebook.ipynb。
【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考