Data Science for Beginners 云端实战:基于 Azure ML Studio 的低代码/无代码机器学习全流程指南
【免费下载链接】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 课程的 18-Low-Code 章节(原始课程文档),系统讲解如何在不编写任何代码的前提下,借助 Azure Machine Learning Studio 完成「数据准备 → AutoML 自动训练 → 模型部署 → REST 端点消费」的完整数据科学项目闭环。文章以心力衰竭风险预测项目为主线,读者学完后将掌握 Azure ML 工作区与计算集群的创建方法、AutoML 无代码训练的配置技巧,以及通过 REST API 与 Python 脚本消费已部署模型的实际能力,并与后续的 Azure ML SDK 课程形成「无代码与有代码」两条路线对照。
1. 引言:为什么需要低代码/无代码的云上数据科学
数据科学家在模型研发中会消耗大量时间用于数据探索、预处理以及反复试验不同的训练算法。这些任务耗时费力,还常常造成昂贵计算资源的低效使用。微软 Azure 云平台提供了超过 200 种产品与云服务,其中Azure Machine Learning(Azure ML)正是一套专为构建和运营机器学习解决方案而设计的云端平台:它帮助数据科学家准备数据、训练模型、发布预测服务并监控其使用情况,同时通过自动化许多耗时任务来提升效率;更重要的是,它支持按需弹性伸缩的云端计算资源,只在真正使用时才产生费用。
Azure ML 为开发者与数据科学家提供了覆盖完整机器学习工作流的工具矩阵:
- Azure Machine Learning Studio:Azure ML 的 Web 门户,提供低代码/无代码的模型训练、部署、自动化、追踪与资产管理能力,并与 Azure ML SDK 无缝集成;
- Jupyter Notebooks:快速原型化与测试 ML 模型;
- Azure Machine Learning Designer:通过拖拽模块构建实验并以低代码方式部署管道;
- 自动机器学习(AutoML):自动化模型开发中的迭代任务,在保证模型质量的同时以高规模、高效率构建 ML 模型;
- 数据标注(Data Labelling):辅助 ML 的自动数据标注工具;
- 机器学习 Visual Studio Code 扩展:完整的 ML 项目开发环境;
- 机器学习 CLI:从命令行管理 Azure ML 资源;
- 开源框架集成:支持 PyTorch、TensorFlow、Scikit-learn 等,覆盖训练、部署与端到端流程管理;
- MLflow:开源实验生命周期管理库,其中的MLFlow Tracking可记录并追踪训练运行指标与模型工件,与实验环境无关。
1.1 项目设定:心力衰竭预测的两种实现路线
本课程围绕同一目标探讨两条实现路径:在 Azure ML Studio 中构建心力衰竭预测数据科学项目。如下图所示,两种路径共享数据集与 AutoML 训练阶段,区别在于操作方式——低代码/无代码走图形界面(GUI),SDK 路线则以 Python 代码编程实现:
两种方式各有利弊。低代码/无代码方式上手门槛极低——只需与 GUI 交互、无需任何编码知识,适合快速验证项目可行性、产出概念验证(POC);但当项目规模扩张、需要进入生产环境时,通过 GUI 创建资源便不再现实,此时需要以编程方式自动化「资源创建到模型部署」的全部环节,这正是 Azure ML SDK 的用武之地。二者对比如下:
| 维度 | 低代码/无代码 | Azure ML SDK |
|---|---|---|
| 编码知识 | 不需要 | 需要 |
| 开发时间 | 快速且简单 | 取决于编码水平 |
| 生产就绪 | 否 | 是 |
1.2 心力衰竭数据集(Heart Failure Dataset)
心血管疾病(CVD)是全球第一大死亡原因,占全球死亡总数的 31%。吸烟、不健康饮食与肥胖、缺乏运动、酗酒等环境与行为风险因素可作为评估模型的输入特征;若能评估个体罹患 CVD 的概率,对高危人群的预防意义重大。
课程采用 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 | 数值 | 血液中血清钠水平 | jun |
| 10 | sex | 布尔 | 女性或男性 | 0 或 1 |
| 11 | smoking | 布尔 | 患者是否吸烟 | 0 或 1 |
| 12 | time | 数值 | 随访期(天) | 4 |
| 21 | DEATH_EVENT(目标变量) | 布尔 | 随访期内患者是否死亡 | 0 或 1 |
拿到数据集后,即可在 Azure 中启动项目。
2. 在 Azure ML Studio 中进行低代码/无代码模型训练
2.1 创建 Azure ML 工作区(Workspace)
工作区是 Azure Machine Learning 的顶级资源,提供集中管理所有工件(artifacts)的场所。它会保留全部训练运行的历史记录,包括日志、指标、输出以及脚本快照,供你判断哪一次训练运行产出了最佳模型。浏览器方面建议使用与操作系统兼容的最新版本,官方支持:新版 Microsoft Edge(最新版,非 legacy 版)、Safari(最新版,仅 Mac)、Chrome(最新版)、Firefox(最新版)。
注意:只要 Azure ML 工作区存在于订阅中,订阅就会被收取少量数据存储费用,因此不再使用时请及时删除工作区。
创建工作区步骤:
使用与 Azure 订阅关联的 Microsoft 凭据登录 Azure 门户;
选择+创建资源(Create a resource),搜索 Machine Learning 并选择对应磁贴,点击创建按钮:
按下述配置填写:
- 订阅(Subscription):你的 Azure 订阅
- 资源组(Resource group):创建或选择资源组
- 工作区名称(Workspace name):输入唯一名称
- 区域(Region):选择离你最近的地理区域
- 存储账户(Storage account):注意将为工作区新建的默认存储账户
- Key vault:注意将为工作区新建的默认密钥保管库
- Application insights:注意将为工作区新建的默认资源
- 容器注册表(Container registry):无(首次向容器部署模型时将自动创建)
点击「创建 + 审阅(Create + review)」再点击「创建(Create)」,等待工作区创建完成(可能需要几分钟),随后在门户的 Machine Learning 服务中进入该工作区;
在工作区概览页启动 Azure Machine Learning Studio(或直接在浏览器访问 https://ml.azure.com 并使用 Microsoft 账户登录),如被提示则选择你的 Azure 目录、订阅及工作区;
在 Studio 中点击左上角 ☰ 图标即可展开各功能页面,用于管理工作区中的各类资源:
工作区也可通过 Azure 门户管理,但对数据科学家与 MLOps 工程师而言,Studio 提供了更聚焦的资源管理界面。
2.2 计算资源(Compute Resources)
计算资源是承载模型训练与数据探索过程的云端资源,共有四类:
- 计算实例(Compute Instances):数据科学家的开发工作站,创建虚拟机(VM)并启动 Notebook 实例,可再从 Notebook 中调用计算集群训练模型;
- 计算集群(Compute Clusters):按需处理实验代码的可伸缩 VM 集群,训练模型时必需,可使用专用 GPU 或 CPU 资源;
- 推理集群(Inference Clusters):使用已训练模型部署预测服务的部署目标;
- 挂接计算(Attached Compute):关联现有的 Azure 计算资源(如虚拟机、Azure Databricks 集群)。
2.2.1 计算资源选型的关键决策
CPU 还是 GPU?
CPU(中央处理器)是以较高时钟频率快速处理广泛任务的电子电路,但并发任务数受限;GPU(图形处理器)专为并行计算设计,因此更擅长深度学习任务。二者取舍如下:
| CPU | GPU |
|---|---|
| 更便宜 | 更昂贵 |
| 并发度较低 | 并发度较高 |
| 训练深度学习模型较慢 | 深度学习最优 |
集群大小(Cluster Size):更大的集群更贵但响应更好。有时间但预算有限应从集群起步;反之资金充裕、时间紧张则选择更大的集群。
虚拟机大小(VM Size):根据时间与预算约束可调节 RAM、磁盘、核心数与时钟频率——提升所有参数都会增加成本,但带来更好的性能。
专用还是低优先级实例(Dedicated or Low-Priority):低优先级实例是可被抢占的——Azure 可能将这些资源调配给其他任务从而中断当前作业;专用(不可抢占)实例则不会未经许可被终止。这是又一层「时间 vs 金钱」的权衡,可抢占实例更便宜。
2.2.2 创建计算集群
在之前创建的 Azure ML 工作区进入「Compute(计算)」菜单,即可看到上述四类计算资源。本项目训练模型需要计算集群:在 Studio 中点击「Compute」菜单 →「Compute cluster」标签 → 点击「+ New」按钮:
- 选择选项:专用 vs 低优先级、CPU 或 GPU、VM 大小与核心数(本项目可保留默认设置),点击「Next」;
- 为集群命名,然后选择选项:最小/最大节点数、缩容前的空闲时间、SSH 访问。注意:最小节点数设为 0可在集群空闲时省钱;最大节点数越大训练耗时越短,官方推荐最大节点数为 3;
- 点击「Create」,此步骤可能需要几分钟。
完成集群创建后,需要把数据加载进 Azure ML Studio。
2.3 加载数据集
在 Azure ML 工作区点击左侧菜单「Datasets(数据集)」,点击「+ Create dataset」按钮,选择「From local files(从本地文件)」并选取此前下载的 Kaggle 数据集:
为数据集命名、选择类型、填写描述,点击「Next」,上传数据文件后再点「Next」;
在 Schema(架构)页面,将以下特征的数据类型改为 Boolean(布尔):anaemia、diabetes、high blood pressure、sex、smoking、DEATH_EVENT。点击「Next」与「Create」。
数据集就绪、计算集群创建完成后,即可开始模型训练。这里将布尔特征显式声明为 Boolean 类型至关重要——它与原文档给出的数据字段类型表完全对应(6 个布尔特征 + 6 个数值特征),可避免 AutoML 将二值特征误判为数值回归问题。
2.4 使用 AutoML 进行低代码/无代码训练
传统 ML 模型开发资源密集、需要大量领域知识,并且要花费时间生成和比较几十个模型。自动机器学习(AutoML)将模型开发中耗时、迭代的任务自动化,让数据科学家、分析师与开发者以高可扩展性、高效率构建模型且不牺牲质量,大幅缩短生产级模型的产出时间。
操作流程:
在 Azure ML 工作区点击左侧菜单「Automated ML」,选择刚上传的数据集,点击「Next」:
输入新的实验名称(Experiment name)、目标列(Target column)选择DEATH_EVENT,并选择之前创建的计算集群,点击「Next」;
选择任务类型Classification(分类),点击「Finish」。此步骤根据计算集群大小约需30 分钟到 1 小时;
运行完成后,点击「Automated ML」标签进入你的运行,再点击「Best model summary(最佳模型摘要)」卡片中的算法,即可查看 AutoML 生成的最佳模型详情:
在「Models」标签可浏览 AutoML 生成的其他候选模型,也建议花几分钟探索「Explanations (preview)(解释预览)」功能查看模型可解释性分析。确定要使用的模型后(本课程直接采用 AutoML 选出的最佳模型),即可进入部署环节。
3. 低代码/无代码模型部署与端点消费
3.1 部署模型
自动化机器学习界面允许你以几步操作将最佳模型部署为 Web 服务。部署(Deployment)即模型的集成落地,使其能基于新数据做出预测。就本项目而言,部署为 Web 服务意味着医疗应用可以实时调用模型,预测患者发生心脏病的风险。
在最佳模型描述页点击「Deploy」按钮:
为部署命名、填写描述,计算类型选择Azure Container Instance(Azure 容器实例),启用身份验证(Enable authentication),点击「Deploy」。此步骤约需20 分钟:部署过程包括注册模型、生成资源并为其配置 Web 服务等多个环节,可在「Deploy status」下查看状态消息,定期点「Refresh」刷新;当状态变为"Healthy"时即部署成功并运行中;
部署完成后点击「Endpoint(端点)」标签,选中刚部署的端点,即可查看该端点的全部细节:
3.2 消费端点(Endpoint Consumption)
点击「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 serviceurl变量即「Consume」标签页中的 REST 端点地址;api_key变量即「Consume」标签页中的主密钥(Primary key,仅当你启用了身份验证时才需要)——这正是脚本消费端点的凭据机制。
运行脚本应得到如下输出:
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/全 false)预测为true,第二条真实临床样本(60 岁、射血分数 38、随访 130 天等)预测为false——至此,你已在 Azure ML 上完成了模型的训练、部署与消费。注意请求体结构遵循{"data": [ {特征字典}, ... ]}的约定,字段名必须与数据集 Schema 中的 12 个特征完全一致。
注意:项目结束后,记得删除所有资源以避免持续计费。
4. 从低代码到 SDK:两条路线的对照与进阶
低代码/无代码体验到的每一步,都能在 19-Azure 课程的 notebook.ipynb 中找到对应的 SDK 代码实现,这恰好印证了 Studio 与 SDK 的无缝集成设计。对照要点如下:
- 工作区与实验:
Workspace.from_config()加载配置,Experiment(ws, experiment_name)创建或获取实验(实验名需为 3-36 个字符,以字母或数字开头,仅含字母、数字、下划线与连字符); - 计算集群:SDK 中
AmlCompute.provisioning_configuration(vm_size="Standard_D2_v2", min_nodes=1, max_nodes=3)与 GUI 中的节点配置一一对应(见 notebook.ipynb 中的heart-f-cluster创建代码); - AutoML 配置:GUI 选择的实验名、目标列、集群与任务类型,对应 SDK 的
AutoMLConfig参数——experiment_timeout_minutes=20(运行超时分钟数)、max_concurrent_iterations=3(最大并发迭代数)、primary_metric='AUC_weighted'(主评估指标)、task="classification"(任务类型,可选 classification/regression/forecasting)、training_data、label_column_name="DEATH_EVENT"、path、enable_early_stopping=True(指标短期无提升时提前终止)、featurization='auto'(自动特征化)与debug_log(调试日志文件); - 部署与消费:SDK 使用
InferenceConfig+AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1)在 Azure 容器实例上部署(对应 GUI 的 Deploy 按钮),并以aci_service.run(input_data=test_sample)消费端点。
从源码结构看,GUI 的每次点击背后都是这些 SDK 对象的等价操作,这也解释了课程中「项目成长后必须转向 SDK 自动化」的判断依据。
5. 课后挑战与延伸练习
- 模型可解释性挑战:仔细观察 AutoML 为顶级模型生成的 Explanations 与详情,尝试理解为什么最佳模型优于其他模型——AutoML 比较了哪些算法?它们之间有何差异?为什么在此案例中该模型表现更好?
- 独立实战任务:参考 课程作业 的要求——从 Kaggle 或 Azure Open Datasets 寻找新的数据集,上传时按需调整特征类型并清理数据,通过 AutoML 完成一次训练、检查模型解释、部署最佳模型并成功消费。作业评分标准(Rubric)依次为:完成「类型调整 + 数据清洗 + AutoML 训练 + 解释检查 + 部署消费」为优秀;省略解释检查为合格;仅完成「部署并消费 AutoML 最佳模型」为待改进。
总结
本课程完整走通了「创建工作区 → 创建计算集群 → 上传数据集 → AutoML 无代码训练 → 部署 Web 服务 → REST 端点消费」的低代码数据科学闭环,并借由 19-Azure 的 SDK 对照实现 与 notebook.ipynb 展示了同一流程的编程化写法。低代码/无代码路线适合快速验证与 POC,SDK 路线适合生产级自动化,二者的结合正是云端数据科学的完整能力图谱。
【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考