news 2026/9/11 1:48:42

Data-Science-For-Beginners 实战:用 Azure ML SDK 完成 AutoML 训练、部署与端到端模型消费

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Data-Science-For-Beginners 实战:用 Azure ML SDK 完成 AutoML 训练、部署与端到端模型消费

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 开源课程中,5-Data-Science-In-Cloud/19-Azure 这一课系统讲解了如何用 Azure Machine Learning SDK(而非图形界面)完成「训练 → 部署 → 消费」一条完整的云端机器学习流水线。本文以该课的作业任务为主线,先拆解作业要求与评分标准,再结合课程讲义和配套 notebook 中的完整可运行代码,为你还原一套可直接照做的端到端实战方案:用 AutoML 训练心衰预测模型、核对模型解释、注册并部署最佳模型,最后通过 SDK 发起实时推理请求。

一、作业解读:要交付什么

作业原文(对应英文原版 "Data Science project using Azure ML SDK")要求如下:在完成本课、已学会"用 Azure ML SDK 训练、部署并消费模型"之后,自行寻找一份数据集(作业提示可检索 Kaggle 与 Azure Open Datasets 上的公开数据集),完成一个"从训练到上线消费"的完整闭环项目,具体包括:

  1. 通过 AutoML 对一个数据集执行训练;
  2. 查看并核对模型的解释(model explanations);
  3. 部署 AutoML 选出的最佳模型;
  4. 通过 Azure ML SDK 消费该模型端点(发起推理请求并拿到预测结果)。

也就是说,作业不要求引入新知识点,而是要求把课程里演示的「心衰预测」流水线迁移到你自己选的数据集上,验证你是否真正掌握了这套 SDK 工作流。

二、作业评分标准(Rubric)逐级拆解

作业自带三档评分表,它同时就是一份"完成度自检清单":

等级要求
优秀(Exemplary)配置 AutoML 时查阅过 SDK 文档、确认可用的参数;用 Azure ML SDK 通过 AutoML 完成训练并核对模型解释;部署最佳模型并能通过 SDK 消费
良好(Adequate)用 Azure ML SDK 通过 AutoML 完成训练并核对模型解释;部署最佳模型并能通过 SDK 消费
及格(Needs Improvement)用 Azure ML SDK 通过 AutoML 完成训练;部署最佳模型并能通过 SDK 消费

三档的差异集中在两点:是否检查了模型解释,以及是否主动研究过 AutoMLConfig 的 SDK 参数文档(而非照抄示例)。这提示我们在实战中至少要做到:训练完成后调用解释相关 API 查看特征贡献,并针对自己选的数据集调整 AutoMLConfig 参数。

三、前置条件:工作区、计算资源与数据集

课程讲义要求从"已有 Azure ML Workspace + 计算实例"起步。如果你还没有工作区,需要先在 Azure 门户创建 Machine Learning 工作区(创建时注意记下默认的存储账号、Key Vault、Application Insights 等配套资源,容器注册表会在首次部署模型到容器时自动创建),随后在 Azure ML Studio(ml.azure.com)中管理资源。工作区创建、计算资源选型(CPU/GPU、专用实例 vs 低优先级实例、节点数)的完整图文步骤见上一课 18-Low-Code 讲义的 2.1~2.3 节;本课作业直接沿用这些基础设施即可。

3.1 创建计算实例(Compute Instance)

在 Azure ML 工作区的 Compute 菜单下可以查看各类计算资源。点击+ New创建计算实例,用于托管 Jupyter Notebook:

  1. 点击+ New按钮;
  2. 为计算实例命名;
  3. 选择配置:CPU 或 GPU、VM 规格与核心数;
  4. 点击Create创建。

计算实例就绪后,进入 Notebook 页面创建(或直接上传课程配套的 notebook.ipynb):在 Applications 区域点击 Jupyter 入口,确认提示后即可在浏览器新标签页打开 Jupyter 实例,再点击New新建 notebook。

3.2 数据集准备

课程使用的 Heart Failure 数据集(Kaggle 公开数据,CC BY 4.0 许可)是 13 列(12 个特征 + 1 个目标列)、299 行的表格数据。各列含义如下:age(年龄)、anaemia(贫血,布尔)、creatinine_phosphokinase(血液中 CPK 酶水平)、diabetes(糖尿病,布尔)、ejection_fraction(每次收缩左心室泵出血的百分比)、high_blood_pressure(高血压,布尔)、platelets(血小板)、serum_creatinine(血清肌酐)、serum_sodium(血清钠)、sex(性别,布尔)、smoking(吸烟,布尔)、time(随访天数),目标列DEATH_EVENT(随访期内是否死亡,布尔)。

数据集需要先通过 Azure ML Studio 的Datasets菜单上传(选择 "From local files"),并为布尔型特征(anaemia、diabetes、high_blood_pressure、sex、smoking、DEATH_EVENT)设置 Boolean 类型。上传后在 SDK 中即可按数据集名访问。做作业时,把这里的"心衰数据"替换成你自己选的数据集即可,其余流程不变。

四、AutoML 配置参数详解:作业"优秀"档的关键

作业评分标准特别强调:优秀档要求"查看 SDK 文档、确认可配置的参数"。AutoML 的核心配置类是AutoMLConfigazureml.train.automl模块),课程中实际使用的参数及含义如下表:

参数作用课程示例值
compute_targetAutoML 实验运行的 Azure ML 计算目标compute_target(前述 AML 计算集群)
task任务类型:classificationregressionforecasting"classification"
training_data实验使用的训练数据,应同时包含特征与标签列(可选样本权重列)dataset
label_column_name标签列名称"DEATH_EVENT"
pathAzure ML 项目文件夹的完整路径'./aml-project'
enable_early_stopping分数短期内不再提升时是否提前终止True
featurization是否自动执行特征化(或使用自定义特征化)'auto'
debug_log调试信息写入的日志文件"automl_errors.log"
experiment_timeout_minutes实验最多运行时长(分钟),超时自动停止并给出结果20
max_concurrent_iterations实验允许的最大并发训练迭代数3
primary_metric用于判定实验状态的主指标'AUC_weighted'

其中experiment_timeout_minutesmax_concurrent_iterationsprimary_metric三个参数被单独放进automl_settings字典,通过**automl_settings解包传入,便于集中管理。作业要求你做的"研究参数",核心就是理解这类参数对训练时长、资源占用和模型选择的影响:例如primary_metric决定 AutoML 用哪个指标挑"最佳模型"(分类问题常用AUC_weighted),enable_early_stopping能显著节省算力,max_concurrent_iterations受集群节点上限约束。完整配置代码见 notebook.ipynb 的 "AutoML Configuration" 小节。

五、端到端代码实现:训练 → 注册 → 部署 → 消费

下面按课程 notebook 的顺序给出完整代码。所有代码都来自仓库内 notebook.ipynb,你可以在自己的 Azure ML 计算实例上逐段运行(也可以直接参考仓库中的答案 notebook)。

5.1 初始化工作区、实验与计算集群

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

从本地配置文件(config.json)加载工作区:

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

创建(或获取)实验。实验名有命名约束:3~36 个字符,以字母或数字开头,只能包含字母、数字、下划线和连字符;工作区中不存在同名实验时会自动创建:

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

创建训练用计算集群(首次创建需要几分钟;已存在则复用):

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]

注意这里AmlCompute.provisioning_configuration(vm_size="Standard_D2_v2", min_nodes=1, max_nodes=3)的意义:vm_size指定虚拟机规格(影响单节点性能与成本),min_nodes/max_nodes决定集群自动伸缩范围;最小节点设为 0 可在空闲时省钱,最大节点数越多训练越快但越贵(本课建议上限 3)。

按数据集名从工作区取出已上传的数据集,并转成 Pandas DataFrame 做初步检查:

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

5.2 配置 AutoML 并提交训练

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, # project_folder = './aml-project' enable_early_stopping=True, featurization='auto', debug_log="automl_errors.log", **automl_settings)

提交实验。根据集群规模不同,这一步最长可能需要约一小时:

remote_run = experiment.submit(automl_config)

用 RunDetails 小组件实时查看各次迭代结果:

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()可查看该 run 的属性:

best_run.get_properties()

作业要求"核对模型解释",即在此阶段利用 AutoML 生成的模型解释信息(各特征对预测的贡献度)判断模型行为是否符合业务直觉。课程讲义指出,上一课 Low code/No code 方式中可在 Studio 的 Explanations 面板查看;SDK 路径下同样可以基于best_run获取解释相关输出。

5.4 注册最佳模型

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)

这里的关键动作有两点:一是把 AutoML 自动生成的评分脚本(scoring file)下载到inference/score.py,作为后续部署的入口脚本;二是调用register_model把模型注册到工作区模型注册表,得到可复用的model对象。

5.5 部署到 Azure 容器实例(ACI)

部署使用InferenceConfig(自定义部署环境配置)与AciWebservice(Azure 容器实例上的 Web 服务端点,是负载均衡的 HTTP REST 端点):

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)

要点说明:InferenceConfig的两个核心参数是entry_script(评分脚本路径,即前面下载的inference/score.py)和environment(这里直接复用best_run.get_environment(),确保部署环境与训练环境一致);deploy_configuration指定容器资源(cpu_cores=1memory_gb=1);Model.deploy把模型、脚本和相关文件打包发布为服务,wait_for_deployment(True)会阻塞直到部署完成,随后打印服务状态。该步骤通常需要几分钟。

5.6 通过 SDK 消费端点

构造一条样本输入(注意字段需与训练数据特征一致,值以字符串形式给出),编码为 JSON 后调用run()

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]}',即模型判定这位患者不太可能发生心衰事件。至此,"训练 → 部署 → 消费"闭环完成——这正是作业要求的核心交付物。你也可以在数据字典中增删字段、修改数值,观察模型对不同输入的反应。

六、收尾与延伸挑战

完成项目后,讲义明确提醒:记得删除所有不再使用的云端资源(工作区存在期间会产生少量存储费用,部署的 ACI 服务也会持续计费),这是云上项目实操中不可省略的一步。

作业的延伸方向是探索 SDK 的Pipeline类:azureml.pipeline.core.Pipeline允许把多个步骤组织成可编排的工作流。课程给的建议是直接在 SDK 文档搜索栏输入 "Pipeline" 定位该类,这也是培养"查 SDK 文档自学新能力"这一核心方法论的练习——与本作业评分标准中"查阅 SDK 文档研究参数"的要求一脉相承。

七、把作业迁移到你的数据集:四步自查

最后,把课程的心衰示例换成你自己的数据集时,只需逐项对照以下清单,即可覆盖作业全部评分点:

  1. 数据准备:上传数据集并在 Studio 中核对列类型(布尔列记得设为 Boolean),记住数据集 key;
  2. AutoML 配置:根据数据任务类型(分类/回归/预测)设置task,正确指定label_column_name,并从 SDK 文档出发选配合适的primary_metricexperiment_timeout_minutesmax_concurrent_iterations等参数(对应"优秀"档要求);
  3. 训练与解释experiment.submit(automl_config)后检查模型解释,确认特征贡献符合业务直觉;
  4. 部署与消费:下载 scoring 脚本、注册模型、部署到 ACI,构造与训练特征一致的新样本调用端点验证输出。

完成以上四步,你就在 Data Science for Beginners 课程框架内独立交付了一个完整的云端机器学习项目。完整可运行代码与全部讲解,均可回到本课讲义及其配套 notebook中查阅。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 1:48:21

Java I/O从入门到实战:流、序列化、NIO与高频异常排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 1:47:41

OSCP提权实战:未加引号服务路径漏洞利用与加固全解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华