尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Data-Science-For-Beginners 第 19 课实战:用 Azure ML SDK 在云端完成心衰预测模型的 AutoML 训练、部署与端点消费

Data-Science-For-Beginners 第 19 课实战:用 Azure ML SDK 在云端完成心衰预测模型的 AutoML 训练、部署与端点消费 Data-Science-For-Beginners 第 19 课实战用 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 篇为核心系统讲解如何使用 Azure Machine Learning SDK以下简称 Azure ML SDK在云端完成一个完整的机器学习工作流创建 Azure ML 工作区与计算实例、在 Jupyter Notebook 中配置 AutoML 训练心衰风险预测模型、注册最优模型、以 Azure Container InstancesACIWeb 服务形式部署并通过 REST 端点消费预测结果。读完本文你可以复制仓库中现成的 Notebook 代码独立跑通从数据集加载到端点推理的 SDK 全流程并理解每个关键类Workspace、Experiment、AmlCompute、AutoMLConfig、AutoMLRun、InferenceConfig、AciWebservice的职责与参数含义。1. Azure ML SDK 是什么本课解决什么问题数据科学家与 AI 开发者使用 Azure ML SDK 来构建和运行基于 Azure Machine Learning 服务的机器学习工作流。你几乎可以在任何 Python 环境中与该项服务交互包括 Jupyter Notebook、Visual Studio Code或任意偏好的 Python IDE。SDK 的核心能力覆盖五个关键领域数据集生命周期管理探索、准备和管理机器学习实验中所用数据集的整个生命周期云资源管理管理用于监控、记录和整理机器学习实验的云资源模型训练支持本地训练或使用云资源训练包括 GPU 加速的模型训练AutoML接受配置参数和训练数据自动遍历算法与超参数组合寻找用于预测的最优模型Web 服务部署把训练好的模型转换为 RESTful 服务供任意应用消费。从课程脉络看前一课第 18 课低代码/无代码方式见 18-Low-Code/README.md已经演示过如何用低代码方式训练、部署并消费一个基于心衰数据集Heart Failure dataset的预测模型。本课要做的是完全相同的事但改用 Azure ML SDK 以代码方式实现——这也是本文的全部主题。1.1 项目与数据集简介本课沿用第 18 课的心衰预测项目与数据集介绍详见 18-Low-Code/README.md。结合仓库中配套 Notebook 的 pre-requisites 说明可以确认三个前提条件已创建一个 Azure ML 工作区已将 Heart Failure 数据集Kaggle 上的 heart-failure-clinical-data上传到 Azure ML 工作区且数据集名称key为heart-failure-records已将本课 Notebook 上传到 Azure ML Studio。模型目标是预测数据集的标签列DEATH_EVENT二分类问题样本输入包含age、anaemia、diabetes、sex等 12 个临床特征这一点可以从第 3.3 节的端点请求示例中直接印证。2. 使用 Azure ML SDK 训练模型2.1 创建 Azure ML 工作区为保持简单本课所有代码都在 Jupyter Notebook 中执行。这隐含要求你已经拥有一个工作区Workspace和一个计算实例Compute Instance。如果你已经有工作区可以直接跳到 2.4 节「创建 Notebook」。若还没有工作区请按照前一课 18-Low-Code/README.md 中「2.1 Create an Azure ML workspace」一节的说明创建本课不重复该过程。2.2 创建计算实例Compute Instance在之前创建的 Azure ML 工作区中进入 Compute 菜单可以看到可用的各类计算资源。按下面 4 步创建一个用于承载 Jupyter Notebook 的计算实例点击 New按钮为计算实例命名选择配置选项CPU 或 GPU、虚拟机VM尺寸、核心数点击Create按钮。创建完成即可使用。这个计算实例将在下一节被用来启动 Jupyter 实例。2.3 上传数据集如果尚未上传数据集请参考前一课 18-Low-Code/README.md 中「2.3 Loading the Dataset」一节的上传步骤。后续代码通过ws.datasets[heart-failure-records]按名称引用该数据集因此上传时的命名必须与此一致。2.4 创建 Notebook注意下一步你可以从零新建一个 Notebook也可以直接上传仓库中已写好的 notebook.ipynb。上传方式是在 Azure ML Studio 中点击 Notebook 菜单再上传文件。Notebook 是数据科学流程中非常重要的一环它可以用于执行探索性数据分析EDA、调用计算集群训练模型、调用推理集群部署端点。要创建 Notebook需要一个承载 Jupyter 实例的计算机器。回到 Azure ML 工作区点击Compute instances列表中应能看到前面创建的计算实例。在Applications区域点击Jupyter选项勾选 Yes, I understand 复选框点击Continue按钮此时会打开一个新的浏览器标签页显示你的 Jupyter 实例。点击New按钮即可创建 Notebook。至此环境准备完毕可以开始用 SDK 训练模型。2.5 训练模型如果实现过程中有疑问应查阅 Azure ML SDK 官方文档其中包含本课所涉及全部模块的说明。仓库中的 notebook.ipynb 按「Initialize Workspace → Create an Azure ML experiment → Create a Compute Cluster → Data → AutoML Configuration → AutoML Run → Save the best model → Deploy → Consume the Endpoint」的顺序组织代码单元与下面的各小节一一对应。2.5.1 工作区、实验、计算集群与数据集的初始化Notebook 的第一个代码单元一次性导入了本课用到的全部 SDK 模块这也是理解本课涉及 API 面的最简洁清单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 AciWebservice1从配置文件加载工作区。Workspace.from_config()依赖工作区持久化的配置文件配套 Notebook 中明确要求配置文件中存在config.json即Workspace.from_config()读取.config.jsonfrom azureml.core import Workspace ws Workspace.from_config()这返回一个Workspace类型的对象代表工作区本身。2创建实验。使用以下代码创建或获取一个Experimentfrom azureml.core import Experiment experiment_name aml-experiment experiment Experiment(ws, experiment_name)按名称向工作区请求实验即可获取或创建实验。实验名称必须满足命名约束长度 3–36 个字符以字母或数字开头只允许包含字母、数字、下划线和连字符如果工作区中找不到该实验则会自动创建新实验。3创建训练用计算集群。使用以下代码创建AmlCompute集群此步骤可能需要几分钟。从源码结构看这段代码采用「先查询、后创建」的幂等写法重复运行不会重复建集群from azureml.core.compute import AmlCompute 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]参数含义vm_size Standard_D2_v2训练节点使用的虚拟机尺寸min_nodes1集群最少保持的节点数max_nodes3允许弹性扩容到的最大节点数配合后文max_concurrent_iterations3最多可同时跑 3 个训练迭代wait_for_completion(show_outputTrue)阻塞等待集群创建完成并打印进度输出最后两行把集群对象取出存入compute_target供 AutoML 配置使用。4从工作区按名称加载数据集。dataset ws.datasets[heart-failure-records] df dataset.to_pandas_dataframe() df.describe()to_pandas_dataframe()把云端数据集转为本地 DataFramedf.describe()用于快速查看数值特征的分布概况EDA 的第一步。2.5.2 AutoML 配置与训练配置 AutoML 使用AutoMLConfig类。官方文档中可供调节的参数很多本项目实际使用以下参数参数含义experiment_timeout_minutes实验自动停止并输出结果前允许运行的最长时间分钟max_concurrent_iterations实验允许的最大并发训练迭代数primary_metric用于判定实验状态的主指标compute_target运行 AutoML 实验的 Azure ML 计算目标task任务类型可取classification、regression或forecastingtraining_data实验使用的训练数据须包含训练特征列与标签列可选样本权重列label_column_name标签列名pathAzure ML 项目文件夹的完整路径enable_early_stopping短期分数不提升时是否启用早停featurization特征工程步骤是否自动执行或使用自定义特征工程debug_log写入调试/排错信息的日志文件本项目使用的完整配置如下from azureml.train.automl import AutoMLConfig 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 )关键取值说明taskclassification表明这是二分类问题primary_metricAUC_weighted是以加权 AUC 作为挑选最优模型的评判标准featurizationauto让 SDK 自动处理类别特征编码、缺失值填充等预处理enable_early_stoppingTrue在分数停滞时提前结束节约集群时间。配置完成后提交训练此步骤可能长达一小时取决于集群大小remote_run experiment.submit(automl_config)随后用RunDetails小组件在 Notebook 中实时展示各次迭代的实验进展from azureml.widgets import RunDetails RunDetails(remote_run).show()3. 模型部署与端点消费3.1 保存最优模型remote_run是一个AutoMLRun类型对象它提供get_output()方法返回最优 run 及其对应的已拟合模型best_run, fitted_model remote_run.get_output()直接打印fitted_model即可看到最优模型使用的参数用get_properties()方法可以查看最优 run 的属性best_run.get_properties()然后通过register_model方法把最优模型注册到工作区。注意先下载自动生成的评分脚本scoring_file_v_1_0_0.py到本地inference/score.py该脚本稍后会作为部署的入口脚本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)3.2 部署模型保存好最优模型后用InferenceConfig类完成部署。InferenceConfig表示用于部署的自定义环境配置AciWebservice类表示以 Azure Container Instances 环境中的 Web 服务端点形式部署的机器学习模型。部署服务由模型、入口脚本及相关文件构成最终产出是一个带负载均衡、带 REST API 的 HTTP 端点向该 API 发送数据即可收到模型返回的预测。部署通过Model.deploy方法完成from azureml.core.model import InferenceConfig, Model from azureml.core.webservice import AciWebservice 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)参数说明InferenceConfig的entry_script指向 3.1 节下载的评分脚本environment直接复用最优 run 的训练环境以保证依赖一致deploy_configuration中cpu_cores1、memory_gb1为 ACI 服务的资源规格tags用于在工作区中检索该服务。wait_for_deployment(True)阻塞等待部署完成最后打印服务状态。此步骤通常需要几分钟。3.3 消费端点消费端点的方式是构造一个样本输入并发送预测请求。注意请求体是{data: [...]}的批量结构每个特征值以字符串形式给出布尔特征用false/truedata { 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_datatest_sample) response预期输出为{result: [false]}我们发给端点的患者输入产生了false的预测意味着该患者不太可能面临心梗风险。至此你用 Azure ML SDK 在 Azure ML 上完成了模型的训练、部署与消费全链路。注意项目结束后务必删除所有已创建的资源计算实例、集群、已部署服务等避免持续计费。4. 挑战自行探索 Pipeline 类SDK 能做的事远不止本课范围。学习快速检索 SDK 文档的能力会让你走得更远请在 Azure ML SDK 文档中搜索Pipeline关键词找到azureml.pipeline.core.Pipeline类——它允许创建由多个可顺序执行的步骤组成的工作流Pipeline把数据准备、训练、评估、部署串成可复现的自动化流水线。5. 小结与课后任务本课你学习了如何使用 Azure ML SDK 在云端训练、部署并消费一个心衰风险预测模型。整个流程可以浓缩为九步创建实验 → 创建计算集群 → 加载数据集 → 用AutoMLConfig配置 AutoML → 提交实验运行 → 探索结果并取出最优模型 → 注册模型 → 部署为 ACI Web 服务 → 消费端点。仓库中的 notebook.ipynb 是可直接上传到 Azure ML Studio 的完整实现solution/notebook.ipynb 提供了参考解答可按需对照。课后作业见 assignment.md自选一份数据Kaggle 或 Azure Open Datasets用 Azure ML SDK 通过 AutoML 训练、部署并消费一个新模型。评分标准Rubric关注三个层次是否运行了 AutoML 训练并部署消费了模型基础、是否查看了模型解释良好、是否在配置 AutoML 时主动查阅 SDK 文档理解可用参数优秀。参考文件本课教程原文19-Azure/README.md爱沙尼亚语版见 translations/et/5-Data-Science-In-Cloud/19-Azure/README.md配套 Notebook19-Azure/notebook.ipynb参考解答19-Azure/solution/notebook.ipynb前一课低代码方式与数据集上传18-Low-Code/README.md课后作业19-Azure/assignment.md【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表