全部产品
Search
文档中心

人工智能平台 PAI:构建与调试模型

更新时间:Dec 30, 2024

Designer提供了丰富的建模组件,可视化地灵活构建和调试模型。本文以构建心脏病预测为例,介绍如何在Desigenr工作流中进行具体的模型构建与调试。

前提条件

创建工作流

模型构建

通常一个模型可以拆分为多个细分的节点(即组件)任务,通过节点任务的前后编排形成工作流来最终实现模型预期效果。在建模前,建议您先拆分模型并规划好细分的节点任务。通常建议一个节点完成一个最简单的任务。模型构建总体流程如下:

  1. 在左侧组件列表中搜索或找到目标组件,将目标组件拖入画布中。

    其中,在组件列表中有紫色标识的为Alink组件(例如下图中的读CSV文件组件),除了具备普通组件的用法外还支持聚合成组,通过对组进行资源配置,提升执行效率和资源利用率,详情请参见Alink组件

  2. 单击目标节点,在界面右侧进行组件参数配置。

  3. 通过连线将各个节点组织成具有上下游关系的工作流。

    每个节点有一个或多个输入/输出端。将鼠标悬浮至组件的各端口上,可以查看端口的数据类型,从而根据数据类型进行连线。

后续模型实际运行时,上游节点会先运行,所有上游节点均运行完成后,下游节点才会触发运行。

image

模型构建通常包含以下任务模块:

读取数据

在工作流中通过添加源/目标类型组件实现数据读取,支持读取MaxCompute、OSS等数据,详情可参见组件参考:源/目标下具体组件文档。本文以读取MaxCompute数据为例。

  1. 已在MaxCompute创建表并导入数据,详情请参见创建并使用MaxCompute表

    本文以在test项目下新建heartdisease表为例,并导入测试数据。

    --创建表
    CREATE TABLE IF NOT EXISTS heartdisease(
      age STRING COMMENT '对象的年龄。',
      sex STRING COMMENT '对象的性别,取值为female或male。',
      cp STRING COMMENT '胸部疼痛类型,痛感由重到轻依次为typical、atypical、non-anginal及asymptomatic。',
      trestbps STRING COMMENT '血压。',
      chol STRING COMMENT '胆固醇。',
      fbs STRING COMMENT '空腹血糖。如果血糖含量大于120mg/dl,则取值为true,否则取值为false。',
      restecg STRING COMMENT '心电图结果是否有T波,由轻到重依次为norm和hyp。',
      thalach STRING COMMENT '最大心跳数。',
      exang STRING COMMENT '是否有心绞痛。true表示有心绞痛,false表示没有心绞痛。',
      oldpeak STRING COMMENT '运动相对于休息的ST Depression,即ST段压值。',
      slop STRING COMMENT '心电图ST Segment的倾斜度,程度取值包括down、flat及up。',
      ca STRING COMMENT '透视检查发现的血管数。',
      thal STRING COMMENT '病发种类,由轻到重依次为norm、fix及rev。',
      `status` STRING COMMENT '是否患病。buff表示健康,sick表示患病。',
      style STRING);
    --本文仅为展示,直接导入PAI公开的测试数据
    INSERT INTO heartdisease select * from pai_online_project.heart_disease_prediction;
  2. 读数据表组件拖入右侧画布中,用于读取MaxCompute表数据。

    画布中会自动生成一个名称为读数据表-1(名称中的数字按画布中相同组件拖入的先后顺序,首次为1,以此类推)的工作流节点。

  3. 在节点配置页面配置源数据表名,更多参数详情请参见读数据表

    在画布中选中读数据表-1节点,在右侧节点配置页面的表名中填写对应的MaxCompute表名。本示例填写为heartdisease

    说明

    跨MaxCompute项目(Project)读取表数据时,表名需要使用项目名.表名格式(例如test2.heartdisease),并确认具有项目权限。

  4. 将右侧的节点配置页面切换到字段信息页签,查看此公开数据的字段详情。

数据预处理

读取数据后,通常需要对数据进行预处理,以满足训练或预测模型输入要求。Designer提供了丰富的数据预处理大模型数据处理组件。

image

此外,您可以使用SQL脚本组件自定义待实现功能的SQL脚本。例如,本文通过SQL脚本对输入特征进行数据类型转换,脚本示例如下:

select age,
(case sex when 'male' then 1 else 0 end) as sex,
(case cp when 'angina' then 0  when 'notang' then 1 else 2 end) as cp,
trestbps,
chol,
(case fbs when 'true' then 1 else 0 end) as fbs,
(case restecg when 'norm' then 0  when 'abn' then 1 else 2 end) as restecg,
thalach,
(case exang when 'true' then 1 else 0 end) as exang,
oldpeak,
(case slop when 'up' then 0  when 'flat' then 1 else 2 end) as slop,
ca,
(case thal when 'norm' then 0  when 'fix' then 1 else 2 end) as thal,
(case status  when 'sick' then 1 else 0 end) as ifHealth
from  ${t1};

模型训练

模型组件通常上游接入预处理后的数据,下游接入预测或推理等组件。模型组件可能有一个或多个输入/输出端。将鼠标悬浮至组件的各端口上可以查看端口类型,从而根据类型进行正确连线。

逻辑回归二分类组件为例,其有2个输出端口:

  • 逻辑回归模型:训练后的模型输出端口,可作为预测等组件的模型结果输入。

  • PMML:模型部署通常依赖PMML模型。例如,如果您需要通过预置的Processor(如PMML Processor)部署生成的模型,则需在支持生成模型的组件参数中选中是否生成PMML,再运行组件。

image

您也可以同时针对多个模型或相同模型配置不同参数进行训练。例如,在LLM大语言模型端到端链路:数据处理+模型训练+模型推理案例中您可以并行地对qwen-7b-chat和llama2-7b-chat两个模型进行微调,然后使用同一批测试数据来比较它们推理后生成的结果。

image

模型预测或推理

模型训练后,您可以连接预测或推理等组件,测试模型效果。

预测组件为例,预测组件有2个输入端口:

  • 模型结果输入:将模型训练部分训练好的模型作为输入。

  • 预测结果输入:将(预处理后的)测试数据作为输入。

image

模型评估

部分模型提供了评估组件,您可以使用对应的评估组件通过相关指标对模型效果进行分析。

例如,机器学习提供了如下评估组件,您可以根据需要作为预测组件的下游。

image

模型调试

调试运行

  • 整个工作流:单击画布左上方的运行(运行)图标,直接运行整个工作流。当工作流比较复杂时,建议您分模块运行某个节点或部分节点,以方便进行调试。

  • 单个或局部组件:右键目标组件进行单个或局部节点运行,支持多种运行方式。

    image

运行成功后对应组件上会显示image,失败会显示image,您可以右键单击组件查看日志及结果

查看日志及结果

image

  • 查看数据和可视化分析:

    组件运行成功后,您可以右键单击组件选择查看数据,查看产出数据。

    对于部分组件,Designer支持将数据转化为图形和图表,以直观、易懂的方式展示复杂的数据和分析结果,帮助您快速获取关键信息,识别趋势和模式,从而更高效地进行分析和决策。您还可以单击可视化分析或画布上方的可视化图标,进行可视化分析,详情请参见可视化分析

  • 查看日志:组件运行失败时,您可以可右键单击对应组件选择查看日志,排查具体失败原因。

查看运行任务

单击画布右上方全部任务查看,查看所有历史任务的运行详情。在建模过程中,您的每次运行都会被记录为一次历史任务。每次运行涉及的节点、节点的配置、产出结果均会保留在历史任务中。

image

image

说明

如果需要进行版本回滚,建议在回滚之前查看历史任务的详情,并确认回滚的版本是否正确。同时,回滚前建议将最新的任务保存并运行一次。如果回滚后出错,您可以再次回滚至最新的任务状态。

相关文档