Azure ML 低代码/无代码数据科学实战:在 Azure ML Studio 中用 AutoML 训练、部署与消费心力衰竭预测模型
本文是 Data Science for Beginners 课程"云端数据科学"模块第二节的技术指南(源文档位于 5-Data-Science-In-Cloud/18-Low-Code/README.md)。它以"心力衰竭风险预测"这一真实医学案例为主线,系统讲解如何在不编写代码的前提下,借助 Azure Machine Learning Studio 的可视化界面完成工作区创建、计算资源规划、数据集加载、AutoML 自动训练、模型部署与 REST 端点消费的完整链路。读完本文,你将掌握低代码/无代码(Low code/No code)方式在云端构建一个可落地 POC 的机器学习项目全流程,并能清晰判断它与 Azure ML SDK 编程方式 的适用边界。
1. 为什么选择 Azure Machine Learning,以及它提供哪些工具
Azure 云平台包含超过 200 种产品与云服务,旨在帮助开发者快速落地新方案。对数据科学家而言,探索与预处理数据、尝试多种模型训练算法以得到准确模型,是极其耗时的环节,且常常无法高效利用昂贵的计算硬件。Azure Machine Learning(Azure ML) 正是一个面向这类场景的云端平台,用于构建和运营机器学习解决方案:它涵盖数据准备、模型训练、预测服务发布与用量监控等功能,核心价值在于自动化大量与训练模型相关的重复性任务,并借助可按需伸缩、按实际使用计费的云端计算资源,以可控成本处理大规模数据。
Azure ML 面向"开发者 + 数据科学家"的机器学习工作流提供了多种工具:
| 工具 | 用途定位 |
|---|---|
| Azure Machine Learning Studio | 面向低代码/无代码的 Web 门户,支持模型训练、部署、自动化、追踪与资产管理的可视化操作,并与 Azure ML SDK 深度集成 |
| Jupyter Notebooks | 快速原型验证与测试 ML 模型 |
| Azure Machine Learning Designer | 以拖拽模块方式搭建实验并在低代码环境中部署管道 |
| Automated machine learning UI(AutoML) | 自动化机器学习模型开发的迭代任务,在高规模、高效率、高生产力的同时保证模型质量 |
| Data Labelling(数据标注) | 辅助 ML 工具,可自动标注数据 |
| Visual Studio Code 的机器学习扩展 | 面向构建和管理 ML 项目的全功能开发环境 |
| 机器学习 CLI | 通过命令行管理 Azure ML 资源 |
| 开源框架集成 | 与 PyTorch、TensorFlow、Scikit-learn 等主流框架集成,覆盖端到端的训练、部署与管理 |
| MLflow | 开源实验生命周期管理库;其中 MLflow Tracking 负责记录与追踪训练运行的指标与模型工件,与实验运行环境无关 |
2. 项目背景:心力衰竭预测 + 两种实现路线
云上数据科学三节课程沿用的是同一主题与数据集:先由 17-Introduction 章节 讲解"为什么用云做数据科学",本节用低代码/无代码方式实现,19-Azure 章节 再用 Azure ML SDK 复现同一项目。
2.1 两种路线的取舍
在 Azure ML Studio 中构建心力衰竭预测数据科学项目,存在两条路径:低代码/无代码(GUI) 与 Azure ML SDK(代码)。
低代码/无代码路线只需与图形界面(GUI)交互,无需任何编程基础,非常适合快速验证项目可行性、制作 POC(Proof Of Concept,概念验证);但项目一旦成长并进入生产化阶段,靠 GUI 逐个创建资源并不可行——资源创建、模型部署等一切环节都需要以代码方式自动化完成,这正是 Azure ML SDK 的关键价值所在。两种方式的对比总结如下:
| 维度 | 低代码/无代码 | Azure ML SDK |
|---|---|---|
| 代码能力要求 | 不需要 | 需要 |
| 开发时间 | 快速、容易 | 取决于代码熟练度 |
| 生产就绪程度 | 否 | 是 |
定位提示:本节属于本课程第 18 讲,配套的章节涂鸦笔记见 sketchnotes/18-DataScience-Cloud.png;训练用 Notebook 与代码路径相关资源均可对照 19-Azure 章节 查看。
2.2 心力衰竭数据集
心血管疾病(CVDs)是全球第一大死因,占全球总死亡人数的 31%。烟草使用、不健康饮食与肥胖、缺乏运动、有害饮酒等环境与行为风险因素,可作为特征用于风险估计模型;若能量化个体罹患心血管疾病的概率,将极大助力高危人群的预防。
本项目使用 Kaggle 公开的 Heart Failure(心力衰竭临床数据) 数据集。这是一个表格型数据集,包含 13 列(12 个特征 + 1 个目标变量)与 299 行观测。各变量说明如下:
| # | 变量名 | 类型 | 描述 | 示例 |
|---|---|---|---|---|
| 1 | age | 数值型 | 患者年龄 | 25 |
| 2 | anaemia | 布尔型 | 是否贫血(红细胞或血红蛋白减少) | 0 或 1 |
| 3 | creatinine_phosphokinase | 数值型 | 血液中 CPK 酶的水平 | 542 |
| 4 | diabetes | 布尔型 | 患者是否患糖尿病 | 0 或 1 |
| 5 | ejection_fraction | 数值型 | 每次心脏收缩时离开心脏的血液百分比 | 45 |
| 6 | high_blood_pressure | 布尔型 | 患者是否患高血压 | 0 或 1 |
| 7 | platelets | 数值型 | 血液中的血小板数 | 149000 |
| 8 | serum_creatinine | 数值型 | 血液中血清肌酐水平 | 0.5 |
| 9 | serum_sodium | 数值型 | 血液中血清钠水平 | — |
| 10 | sex | 布尔型 | 性别(女/男) | 0 或 1 |
| 11 | smoking | 布尔型 | 患者是否吸烟 | 0 或 1 |
| 12 | time | 数值型 | 随访期(天) | 4 |
| 目标 | DEATH_EVENT | 布尔型 | 随访期内患者是否死亡 | 0 或 1 |
数据集来源信息可参见 5-Data-Science-In-Cloud/README.md 中的致谢说明(数据来自 Kaggle 的 Larxel,采用 CC BY 4.0 许可)。下载好数据后即可进入 Azure 开始项目。
3. 在 Azure ML Studio 中进行低代码/无代码模型训练
3.1 创建 Azure ML 工作区
训练模型的第一步是创建 Azure ML 工作区(Workspace)。工作区是 Azure Machine Learning 的顶层资源,为使用 Azure ML 过程中产生的所有工件提供集中管理位置:它会保留所有训练运行的历史记录,包括日志、指标、输出以及脚本快照,据此可以判断哪次训练运行产出了最佳模型。
工作区界面建议使用与操作系统兼容的最新版浏览器:Microsoft Edge(新版最新版,非 legacy 版本)、Safari(最新版,仅 Mac)、Chrome(最新版)、Firefox(最新版)。
⚠️ 计费提示:只要工作区存在于订阅中,Azure 订阅就会为数据存储收取少量费用。因此不再使用时,建议删除该 Azure ML 工作区。
创建步骤如下:
- 使用与 Azure 订阅关联的 Microsoft 凭据登录 Azure 门户。
- 选择 +Create a resource,搜索 "Machine Learning",选择 Machine Learning 磁贴,点击 create(创建)按钮。
- 按下述配置填写设置:
- Subscription:你的 Azure 订阅
- Resource group:创建或选择资源组
- Workspace name:为工作区输入唯一名称
- Region:选择离你最近的地理区域
- Storage account:注意将为工作区创建的默认新存储账户
- Key vault:注意将为工作区创建的默认新密钥保管库
- Application insights:注意将为工作区创建的默认新 Application Insights 资源
- Container registry:None(首次将模型部署到容器时才会自动创建一个)
- 点击 Review + create,再点击 create,等待工作区创建完成(可能需要几分钟)。之后可在门户中通过 Machine Learning Azure 服务找到它。
- 在工作区的 Overview(概述) 页面启动 Azure Machine Learning studio(或在新浏览器标签页中访问 ml.azure.com),用 Microsoft 账户登录;如被提示,选择你的 Azure 目录、订阅及 Azure ML 工作区。
- 进入 Azure Machine Learning studio 后,切换左上角的 ☰ 图标即可查看界面中的各类页面,用于管理工作区内的资源。
虽然也可以通过 Azure 门户管理工作区,但对数据科学家与 ML 运维工程师而言,Azure Machine Learning Studio 提供了更聚焦的管理界面。
3.2 计算资源(Compute Resources)
计算资源是用于运行模型训练与数据探索过程的云端资源,共四种类型:
- Compute Instances(计算实例):供数据科学家处理数据与模型用的开发工作站——本质是创建一台虚拟机(VM)并启动 Notebook 实例,可在 Notebook 中通过调用计算集群来训练模型。
- Compute Clusters(计算集群):按需处理实验代码的可伸缩 VM 集群,训练模型时必须使用;可选用 GPU 或 CPU 等专用资源。
- Inference Clusters(推理集群):使用已训练模型提供预测服务的部署目标。
- Attached Compute(附加计算):链接已有的 Azure 计算资源,如虚拟机或 Azure Databricks 集群。
3.2.1 如何为计算资源选型
创建计算资源时,以下选择往往是关键决策。
需要 CPU 还是 GPU? CPU(中央处理器)是执行计算机程序指令的电子电路;GPU(图形处理器)是一种能以极高速度执行图形相关代码的专用电路。二者架构的本质差异在于:CPU 擅长以高时钟速度快速处理广泛类型的任务,但并发能力受限;GPU 专为并行计算设计,因此远更擅长深度学习任务。
| CPU | GPU |
|---|---|
| 更便宜 | 更昂贵 |
| 并发度较低 | 并发度更高 |
| 训练深度学习模型更慢 | 对深度学习最优 |
集群大小(Cluster Size):更大的集群更昂贵但响应性更好。时间充裕而预算有限,就从小的集群起步;反之,预算充足而时间紧迫,则选用更大的集群。
VM 大小(VM Size):可根据时间与预算约束调整 RAM、磁盘、核心数与时钟频率。提升这些参数成本更高,但性能更好。
专用实例还是低优先级实例(Dedicated or Low-Priority)? 低优先级实例意味着可被中断——Azure 可随时回收这些资源分配给其他任务,从而打断你的作业;专用实例不可中断,作业不会被未经许可地终止。这又是一次"时间 vs 金钱"的权衡:可中断实例比专用实例更便宜。
3.2.2 创建计算集群
在 Azure ML 工作区 中进入 Compute,即可看到上文讨论的各类计算资源(计算实例、计算集群、推理集群与附加计算)。本项目训练模型需要计算集群:在 Studio 中点击 Compute 菜单 → Compute cluster 标签 → 点击 + New 创建。
- 选择配置:专用 vs 低优先级、CPU 或 GPU、VM 大小与核心数(本项目可直接保留默认设置)。
- 点击 Next。
- 为集群命名(compute name)。
- 选择配置:最小/最大节点数(Minimum/Maximum number of nodes)、缩容前的空闲秒数(Idle seconds before scale down)、SSH 访问。
- 若最小节点数为 0,集群空闲时将为你省钱;
- 最大节点数越高,训练耗时越短,推荐最大节点数为 3。
- 点击 Create,该步骤可能需要几分钟。
创建好计算集群后,就可以把数据加载进 Azure ML Studio 了。
3.3 加载数据集
- 在 Azure ML 工作区 中,点击左侧菜单的 Datasets,点击 + Create dataset 创建数据集,选择 From local files 并选取前面下载的 Kaggle 数据集文件。
- 为数据集命名、指定类型与描述,点击 Next;从文件上传数据,再点 Next。
- 在 Schema 页面中,将以下特征的数据类型改为 Boolean:
anaemia、diabetes、high_blood_pressure、sex、smoking与目标列DEATH_EVENT。Schema 中列类型默认依据数据前 200 行自动检测,可按需手工修正;类型不匹配的值在转换时会失败,可能被填充为 null 或替换为错误值。点击 Next 再点击 Create。
该页面中
age、ejection_fraction、time等数值列建议保持数值类型,布尔列显式设为 Boolean 可避免后续 AutoML 特征化时产生误解——这与本课程 08 讲"数据准备"中强调的类型正确性理念一脉相承。
数据集就绪、计算集群创建完毕后,即可开始模型训练。
3.4 使用 AutoML 进行低代码/无代码训练
传统机器学习模型开发需要消耗大量资源,并依赖显著的领域知识与时间才能产出并比较数十个模型。自动化机器学习(AutoML) 将模型开发中耗时的迭代任务自动化,使数据科学家、分析师与开发者能够以高规模、高效率、高生产力构建模型,同时保持模型质量,大幅缩短获得生产就绪模型的时间。
在 Azure ML 工作区 中进行 AutoML 训练的完整步骤如下:
- 点击左侧菜单的 Automated ML,选择刚上传的数据集,点击 Next。
- 输入新的 experiment name(实验名称)、选择目标列
DEATH_EVENT与之前创建的计算集群,点击 Next。 - 选择任务类型 Classification(分类),点击 Finish。根据计算集群大小不同,此步骤可能需要 30 分钟到 1 小时。
- 运行完成后,点击 Automated ML 标签,进入本次运行,再点击 Best model summary 卡片中的算法。
此处可以看到 AutoML 生成的最佳模型的详细信息;也可以在 Models 标签中探索其生成的其它模型。建议花几分钟在 Explanations(预览) 中查看模型解释。选定要使用的模型后(本项目直接采用 AutoML 挑选的最佳模型),即可进行部署。
从课程配套的 19-Azure 章节 中的 SDK 实现可以反推 GUI 背后的机制:AutoML 会同时配置
task = "classification"、label_column_name = "DEATH_EVENT"、primary_metric(如AUC_weighted)等参数并提交实验,迭代比较多种算法与超参数组合后挑选最优模型——GUI 上的每次点击,对应后台一次 AutoML 配置与experiment.submit()运行。
4. 低代码/无代码的模型部署与端点消费
4.1 模型部署
自动化机器学习界面允许你以几步操作将最佳模型部署为 Web 服务。部署即模型集成过程,使其能基于新数据做出预测、识别潜在机会区域。对本项目而言,部署为 Web 服务意味着医疗类应用程序将能够消费该模型,对患者的心脏病发作风险做出实时预测。
在最佳模型详情页点击 Deploy 按钮,然后:
- 填写名称、描述、计算类型(Azure Container Instance),启用身份验证(enable authentication),点击 Deploy。此步骤大约需要 20 分钟完成。
- 部署过程包含多个环节:注册模型、生成资源、为 Web 服务完成配置;
- Deploy status 下会出现状态消息,可定期点击 Refresh 查看部署状态;当状态变为 "Healthy" 时即表示已部署并运行。
- 部署完成后,点击 Endpoint 标签,再点击刚部署的端点,即可查看端点的全部详情。
模型部署完成,即可开始消费端点。
4.2 端点消费
点击 Consume 标签,可找到 REST 端点与消费选项中的 Python 脚本。这段脚本可直接在本地机器上运行并消费端点,其核心是这两行代码:
url = 'http://98e3715f-xxxx-xxxx-xxxx-9ec22d57b796.centralus.azurecontainer.io/score'
api_key = '' # Replace this with the API key for the web service
url变量即 Consume 页中展示的 REST 端点;api_key变量即同样位于 Consume 页的主密钥(Primary key)——仅当你启用了身份验证时才需要填入。
从截图界面可见,Consume 页的 Basic consumption info 区域同时提供 Primary key 与 Secondary key(支持 Regenerate 重新生成),消费选项则提供 C#、Python、R 三种语言示例,默认选中的 Python 脚本已包含处理自签名证书校验的辅助函数,可直接复制使用。
运行该脚本,会得到如下输出:
b'"{\\"result\\": [true]}"'
这说明:对脚本中给定数据的预测结果为 true,即预测该患者会发生心力衰竭。这也符合直觉——因为脚本自动生成的示例数据各项默认都是 0 / false(极端健康且无风险信号的输入,从数据本身看并非真实患者画像)。将数据替换为下面的输入样本后再运行:
data = {
"data":
[
{
'age': "0",
'anaemia': "false",
'creatinine_phosphokinase': "0",
'diabetes': "false",
'ejection_fraction': "0",
'high_blood_pressure': "false",
'platelets': "0",
'serum_creatinine': "0",
'serum_sodium': "0",
'sex': "false",
'smoking': "false",
'time': "0",
},
{
'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",
},
],
}
脚本应返回:
b'"{\\"result\\": [true, false]}"'
即:第一组(全 0 占位)样本被判为高风险 true,第二组较真实的 60 岁患者样本被判为 false。至此,你就完成了在 Azure ML 上"训练 + 部署 + 消费"模型的低代码/无代码全流程。
⚠️ 清理提醒:项目结束后,务必删除全部相关资源,避免持续产生费用。
5. 进阶挑战与作业
挑战:仔细查看 AutoML 为最优模型生成的模型解释与详情,尝试理解为什么最佳模型优于其它模型——AutoML 比较了哪些算法?它们之间有何差异?为什么在本次任务中这个模型表现更好?
课后巩固:建议进一步钻研 AutoML 为 Top 模型生成的模型解释,理解最佳模型胜出的原因,并把本节流程迁移到自己的数据上。
随堂作业:完成 Low code/No code Data Science project on Azure ML。作业要求使用 Azure ML 平台,以低代码/无代码方式对新数据完成训练、部署与消费,评分细则如下:
| 优秀(Exemplary) | 合格(Adequate) | 待改进(Needs Improvement) |
|---|---|---|
| 上传数据时注意修正必要特征类型并清理数据;通过 AutoML 完成训练并检查模型解释;部署最佳模型并成功消费 | 上传数据时修正必要特征类型;通过 AutoML 完成训练,部署最佳模型并成功消费 | 部署了 AutoML 训练出的最佳模型并成功消费 |
关于评分细则中"注意修正特征类型"与"必要时清洗数据",可回到本课程的 08 讲数据准备 复习类型转换与缺失值处理的通用方法;若想了解同一项目用代码实现(自动创建资源、AutoML 配置、SDK 部署与 aci_service.run() 消费)的完整对照,可直接学习下一节 Data Science in the Cloud: The "Azure ML SDK" way 及其 Notebook 实现。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0629
MiniCPM5-2BMiniCPM5-2B 是一款面向端侧、本地部署和资源受限场景的 2B 稠密 Transformer,能够达到同尺寸开源模型 SOTA 水平。Markdown00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python07
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00