ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/11 20:58:20 拓冰建站 浏览量
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 课程第 19 课Azure ML SDK 路线的课后实战作业在掌握 Azure ML SDK 训练、部署、消费模型的基础流程后独立寻找一个数据集走通「AutoML 配置 → 远程训练 → 模型解释与最佳模型保存 → 云端部署 → REST 端点消费」的完整链路。读完后你将具备把任意表格数据集快速落地为可调用预测服务的工程能力并理解本课作业评分标准Rubric中每个档位对应的具体技术动作。一、作业目标与交付物原作业要求见 assignment.md本文所依据的孟加拉语译本位于 translations/bn/5-Data-Science-In-Cloud/19-Azure/assignment.md非常聚焦我们已经看到如何使用 Azure ML SDK 在 Azure ML 平台上训练、部署并消费一个模型。现在请自行寻找一份可用于训练新模型的数据完成训练、部署与消费的完整流程。数据集可参考 Kaggle 或 Azure Open Datasets。也就是说上一课用「低代码/无代码」方式完成了心力衰竭预测项目本作业要求你用纯 SDK 代码方式复现同一条链路从而体会两条路径的差异对比维度低代码/无代码方式Azure ML SDK 方式代码能力要求不要求需要开发速度快速简单取决于代码熟练度生产就绪否是低代码方式适合快速验证项目可行性与搭建 POC但项目要进入生产环境时从资源创建到模型部署都必须可编程自动化这正是掌握 Azure ML SDK 的价值所在参见 18-Low-Code 课程说明 中的对比表。二、评估标准Rubric解读三个档位意味着什么作业的评分标准是理解本作业完成度的关键它把任务拆成了四个可验证的动作优秀Exemplary合格Adequate需改进Needs Improvement配置 AutoML 时查阅了 SDK 文档确认可用的参数使用 Azure ML SDK 通过 AutoML 在数据集上完成训练并检查了模型解释部署了最佳模型并能通过 Azure ML SDK 消费它使用 Azure ML SDK 通过 AutoML 在数据集上完成训练并检查了模型解释部署了最佳模型并能通过 Azure ML SDK 消费它使用 Azure ML SDK 通过 AutoML 在数据集上完成了训练部署了最佳模型并能通过 Azure ML SDK 消费它把评分标准翻译成技术动作清单可以得到本作业的「最低完成线」与「满分线」AutoML 配置使用AutoMLConfig类并依据 SDK 文档理解所用参数满分线额外要求主动研读参数文档远程训练通过experiment.submit()在计算集群上跑通 AutoML 训练模型解释检查模型解释如特征重要性等可解释性信息部署与消费注册最佳模型 → 部署为 ACI Web 服务 → 通过 SDK 发送输入并接收预测结果。下文将围绕这四个动作结合本课 notebook.ipynb 的完整代码给出可复制执行的实现方案。三、前置准备Workspace、计算实例与数据集作业假设你已经具备一个可用的 Azure ML 环境具体包括三件事详细步骤见上一课 18-Low-Code 课程说明创建 Azure ML Workspace工作区是 Azure ML 的顶层资源集中管理数据、计算资源、代码、模型与训练历史。若已有工作区可直接跳过创建计算实例Compute Instance用于承载 Jupyter Notebook 的开发工作站。在 Azure ML 门户的 Compute 菜单中点击 New命名后选择 CPU/GPU、VM 规格与核心数点击 Create 即可上传数据集在上一课中已经将心衰数据集上传到工作区数据集 key 为heart-failure-records。本作业你需自行寻找新数据集同样上传后即可在 SDK 中按 key 引用。四、创建 Notebook 并初始化 SDK在计算实例的 Applications 区域点击Jupyter入口即可打开 Jupyter 文件管理器通过New按钮新建 Notebook也可以直接上传本课现成的 notebook.ipynb 到 Azure ML Studio 的 Notebook 菜单Notebook 在数据科学流程中扮演枢纽角色既能做探索性数据分析EDA也能调用计算集群训练模型、调用推理集群部署端点。首先完成 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 AciWebservice4.1 加载工作区Workspace.from_config()会从当前目录的配置文件config.json中读取订阅信息并返回代表工作区的对象ws Workspace.from_config() print(ws.name, ws.resource_group, ws.location, ws.subscription_id, sep \n)4.2 创建实验Experiment实验用于组织和管理一组训练运行。命名规则需注意实验名长度为 3–36 个字符必须以字母或数字开头只能包含字母、数字、下划线和短横线若工作区中不存在同名实验会自动创建experiment_name aml-experiment experiment Experiment(ws, experiment_name)五、创建计算集群Compute ClusterAutoML 训练需要计算目标。下面的代码使用AmlCompute先尝试获取已有集群不存在时则用provisioning_configuration创建vm_size指定虚拟机规格这里用入门级Standard_D2_v2min_nodes/max_nodes控制集群弹性伸缩的最小/最大节点数。该步骤通常需要几分钟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_nodes1, max_nodes3) 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]要点说明wait_for_completion(show_outputTrue)会阻塞当前 Notebook 单元直到集群就绪并输出进度日志通过ws.compute_targets字典按名称取回刚创建/已存在的计算目标供后续AutoMLConfig使用集群空闲时节点会自动缩容到min_nodes按需计费避免常驻浪费。六、加载数据集通过工作区中注册的数据集名称key获取数据集并转为 Pandas DataFrame 做初步探查。注意 key 必须与上传数据集时的名称完全一致key heart-failure-records dataset ws.datasets[key] df dataset.to_pandas_dataframe() df.describe()df.describe()输出各数值特征的统计摘要计数、均值、标准差、四分位数等用于快速判断数据质量。本课使用的数据集是公开的 Heart Failure 数据集299 行、13 列12 个特征 1 个目标变量特征包括age年龄、anaemia贫血、creatinine_phosphokinaseCPK 酶水平、ejection_fraction射血分数、platelets血小板、serum_creatinine血清肌酐、serum_sodium血清钠、sex、smoking、diabetes、high_blood_pressure、time随访天数目标变量为DEATH_EVENT随访期内是否死亡。完整字段说明可参考 18-Low-Code 课程的数据集表格。七、AutoML 配置与远程训练7.1 AutoMLConfig 核心参数AutoML 的核心是AutoMLConfig类它接受训练数据与配置参数自动遍历算法和超参数组合以寻找最优预测模型。本课使用的参数及其含义如下参数含义experiment_timeout_minutes实验允许运行的最大分钟数超时后自动停止并给出当前结果max_concurrent_iterations实验允许的最大并发训练迭代数primary_metric用于判定实验状态的主指标分类问题常用AUC_weightedcompute_target运行 AutoML 实验的 Azure ML 计算目标task任务类型可选classification、regression、forecastingtraining_data训练数据需同时包含特征与标签列可选样本权重列label_column_name标签列名称pathAzure ML 项目文件夹的完整路径enable_early_stopping短期内评分无提升时是否提前终止featurization是否自动执行特征化或使用自定义特征化debug_log写入调试信息的日志文件7.2 组装配置并提交训练project_folder ./aml-project automl_settings { experiment_timeout_minutes: 20, max_concurrent_iterations: 3, primary_metric : AUC_weighted } automl_config AutoMLConfig(compute_targetcompute_target, task classification, training_datadataset, label_column_nameDEATH_EVENT, path project_folder, enable_early_stopping True, featurization auto, debug_log automl_errors.log, **automl_settings )配置要点**automl_settings把超时、并发、主指标三个高频调优项独立成字典便于复用与调整training_data直接传入工作区注册的数据集对象而非本地 DataFrame这样训练可以发生在远程集群上featurizationauto让 AutoML 自动完成缺失值填补、编码、缩放等特征工程步骤。提交实验后AutoML 会在计算集群上自动迭代多种算法与超参数组合整个过程根据集群规模可能需要几十分钟remote_run experiment.submit(automl_config)还可以使用RunDetails小组件在 Notebook 内实时可视化各次迭代的运行状态from azureml.widgets import RunDetails RunDetails(remote_run).show()八、获取最佳模型、检查解释并注册8.1 取回最佳运行与模型remote_run是AutoMLRun类型对象其get_output()方法返回最佳运行及其对应的已拟合模型best_run, fitted_model remote_run.get_output()打印fitted_model可以查看最佳模型的参数用get_properties()可以查看该次运行的各种属性如model_name等best_run.get_properties()8.2 下载评分脚本并注册模型AutoML 运行会自动生成可供部署使用的评分脚本scoring file。将其下载到本地inference/score.py然后调用register_model把最佳模型注册到工作区模型注册表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 运行会记录可解释性相关工件可通过 SDK 的模型解释能力查看特征重要性等解释信息在配置阶段查阅 SDK 文档确认可用参数也是「优秀」档位的加分动作。建议在部署前后使用 SDK 提供的解释工具对最佳模型进行检查以完成评分标准中的「checked the model explanations」项。九、部署最佳模型到 ACI 端点9.1 部署机制说明部署涉及两个核心类InferenceConfig表示部署所用的自定义环境配置这里指向入口脚本score.py并复用 AutoML 最佳运行对应的环境best_run.get_environment()AciWebservice把机器学习模型部署为 Azure 容器实例上的 Web 服务端点部署完成后得到一个负载均衡的 HTTP REST API可向其发送数据并接收预测。9.2 执行部署inference_config InferenceConfig(entry_scriptscript_file_name, environmentbest_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)cpu_cores/memory_gb指定容器资源配额这里各为 1可按负载调整Model.deploy将模型、评分脚本与关联文件打包发布wait_for_deployment(True)阻塞等待部署完成随后可通过aci_service.state查看服务状态Healthy即部署成功。整个部署过程通常需要几分钟期间可在 Azure ML 门户中观察部署状态。十、通过 SDK 消费端点部署完成后构造一个符合评分脚本输入格式的样本键为data值为记录列表字段与本数据集 12 个特征一一对应序列化后发送给服务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))调用aci_service.run()发送请求并获取预测结果response aci_service.run(input_datatest_sample) response预期输出为{result: [false]}表示该患者样本的预测结果为false——即此人不属于心力衰竭高风险人群。至此你就完成了用 Azure ML SDK 从训练、部署到消费的完整闭环。注意项目完成后请记得删除所有相关资源工作区、计算实例、计算集群与部署的服务避免持续产生云资源费用。十一、本作业的完成清单与进阶挑战11.1 对照评分标准的自检清单评分动作对应章节验证方式AutoML 配置并理解参数第七节AutoMLConfig成功提交且能说明每个参数的作用优秀档要求查阅 SDK 文档通过 AutoML 完成数据集训练第七节remote_run返回RunDetails展示运行进度检查模型解释第八节使用 SDK 解释能力查看特征重要性等解释信息部署最佳模型第九节aci_service.state为Healthy通过 SDK 消费端点第十节response返回合法的预测 JSON11.2 进阶挑战探索 Pipeline完成作业后可以继续深入 SDK 的其他能力。本课 Challenge 建议查阅 Azure ML SDK 文档中的Pipeline类Pipeline 是可由工作流执行的步骤集合能将数据准备、训练、部署等环节编排为可复用、可调度的一体化流程。在 SDK 文档中搜索 Pipeline 即可定位到azureml.pipeline.core.Pipeline类适合进一步探索生产化改造方向本课的完整可运行代码见 notebook.ipynb上一课的低代码对照实现见 18-Low-Code 课程。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考