你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 上设计 AI 工作负载的培训数据

在应用程序中为 AI 功能设计数据时,请考虑非功能要求,例如可操作性、成本和安全性以及与数据引入、准备和验证相关的功能要求。

无法分离数据设计和应用程序设计。 应用程序设计要求你了解用例、查询模式和新鲜度要求。 为了满足驱动使用 AI 需求的业务需求,应用程序可能需要来自歧视模型、生成模型或模型类型的组合输出。

若要生成有意义的结果,需要训练 AI 模型。 模型训练涉及对模型进行分类或预测新的或看不见的情况。 训练数据必须针对特定问题和工作负荷上下文进行定制。

监督训练涉及向模型提供带标签的样本。 当所需结果明确时,这种类型的训练非常有用。 相比之下,非监督式学习允许模型识别数据中的模式和关系,而无需对预期的输出进行指导。 在训练期间,算法类型和参数会进行调整,以控制模型学习方式。 方法因模型类型而异,其中包括神经网络、决策树和其他模型。

例如,图像检测模型通常针对对象检测、面部识别或场景理解等任务进行训练。 他们从带批注的图像中学习,以识别特定对象或功能。 其他常见示例包括欺诈检测算法和价格点预测模型。 这些模型从历史财务数据中学习,以做出明智的决策。

本文主要介绍前面的用例,在这些用例中,模型在向应用程序提供有意义的输入之前对其进行训练。 本文包括有关数据收集、处理、存储、测试和维护的指南。 不包括通过 AI 探索性数据科学或商业智能进行的数据设计。 目标是通过提供有关 AI 工作负载训练数据管道的建议,通过符合工作负荷要求的策略来支持训练需求。

有关在推理过程中需要上下文的 AI 模型的数据设计的信息,请参阅“地面数据设计”。

重要

预期数据设计是一个基于统计实验的迭代过程。 若要达到可接受的质量级别,请调整训练数据、其处理、模型特征开发和模型超参数(如果可能)。 此试验循环通常在初始模型定型期间和正在进行的优化工作期间发生,以解决工作负荷中功能生命周期的数据和模型偏差。

建议

下面是本文中提供的建议摘要。

建议 说明
根据工作负荷要求选择数据源。 考虑可用资源以及数据源是否可以帮助你达到模型训练的可接受数据质量。 涵盖正示例和负示例。 结合多种数据类型来实现分析和建模的充分完整性。 考虑合成少数过度采样技术(SMOTE)等技术,了解数据稀缺性或不平衡。

数据引入和分析
尽早对收集的数据进行数据分析。 脱机执行分析过程,例如探索数据分析(EDA)。 考虑成本和安全隐患。 对于没有资源约束的小型数据集,可以考虑在源处执行分析。

数据收集存储
维护数据分段(如果业务和技术要求要求要求)。 如果使用具有不同安全要求的数据源,请为每个模型创建单独的管道。 建立访问控制以限制与特定数据子集的交互。

数据分段
预处理数据,使其对训练目标有意义。 通过筛选干扰、重新复制数据、处理重复数据以及标准化各种格式来优化引入数据的质量。

数据预处理
避免对过时数据进行训练。 监视数据偏移和概念偏移,作为内部和外部操作循环的一部分,以保持模型随时间推移的准确性和可靠性。 定期使用新观察更新训练数据。 定义触发模型重新训练并确定更新频率的条件。

数据维护

数据类型

若要在模型中生成预测能力,需要收集数据、处理数据并将其馈送给模型。 此过程通常概念化为分解为阶段的管道。 管道的每个阶段都可能处理相同的数据集,但它可能用于不同的目的。 通常,处理这些类型的数据:

  • 源数据 是时间点观察数据。 它也可以是可标记为用作数据管道的潜在输入的数据。

    此数据通常是从生产或外部源获取的。 这些数据源可以位于存储帐户、数据库、API 或其他源中。 数据可以采用各种数据格式,例如 OLTP 数据库、非结构化文档或日志文件。 此数据充当数据管道的潜在输入。

  • 训练数据 是源数据的子集,用于向模型提供示例。 这些示例是描述性的预计算数据,可帮助模型了解模式和关系。 如果没有此数据,模型将无法生成相关的输出。

  • 评估数据 是源数据的子集,用于在训练期间监视和验证机器学习模型的性能。 它不同于训练和测试数据,用于定期评估训练阶段模型的性能,并指导超参数优化。 有关详细信息,请参阅 模型评估

  • 测试数据 用于验证已训练模型的预测能力。 此数据从未用于训练的源数据采样。 它包含生产中的观察结果,以便测试过程是最终的。 从数据设计的角度来看,需要存储此数据。 有关测试模型的信息,请参阅 测试 设计区域。

在某些情况下,用户在与应用程序交互期间提供的信息最终可能会成为源数据。 一般情况下,我们建议以这种方式使用的用户输入质量很高。 否则,需要持续处理下游的质量问题可能会成问题。 本文未介绍有关处理用户数据的指南。

数据引入和分析

训练数据是在预先确定的窗口中收集的,该窗口具有足够的表示形式来训练所选模型的类型。 例如,在训练二元分类模型时,训练数据必须包含事例(正示例)的表示形式,以及情况(负示例)。 若要使训练数据有意义,请在功能设计过程中尽早执行 EDA。

EDA 有助于分析源数据,以确定特征、关系、模式和质量问题。 可以直接在源数据存储上执行 EDA,也可以将数据复制到集中式存储(如 Data Lake 或数据仓库)。 该过程的结果是通知数据收集和处理,以便进行有效的模型训练。

注意

尽管 EDA 是预生产过程,但它使用源自生产的数据。 对此过程应用与生产相同的控制级别。

下面是在准备模型训练时收集数据的一些注意事项。

数据源

可以从以下源收集数据:

  • 专有数据 由组织创建或拥有。 它不适合公共消费。 它服务于内部目的。

  • 任何人都可以访问公共源 。 这些来源包括网站、研究论文和公开共享数据库。 它可能特定于利基区域。 例如,维基百科和 PubMed 中的内容被视为可公开访问的内容。

选择数据源取决于工作负荷要求、可用资源和训练模型可接受的数据质量。 不平衡的数据集可能会导致有偏差的模型,因此你需要设计数据收集以获取足够的代表性数据样本。 可能需要过度采样少数数据或欠采样多数数据。 如果数据稀缺或不平衡,请考虑 SMOTE合成数据生成等技术。

数据收集存储

有两个主要选项可用于收集源数据:

  • 查询数据源中的数据
  • 将数据复制到本地化数据存储,然后查询该存储

选择取决于工作负荷要求和数据量。 如果数据量相对较小,则源系统可能会直接处理原始查询。 但是,常见做法是从本地化存储进行查询和分析。

权衡。 尽管本地化数据存储可能会促进分析和训练过程,但还需要平衡成本、安全性和模型要求。

复制数据会产生存储和计算成本。 维护单独的副本需要其他资源。 本地副本可能包含敏感信息。 如果这样做,则需要使用常规安全措施来保护数据。

如果将生产数据用于训练数据,则必须受该数据的所有原始数据分类约束的约束。

数据可以提供给训练过程(推送模式),或者进程本身可以查询数据源(拉取模式)。 选择取决于所有权、效率和资源约束。

将数据推送到工作负荷时,数据源所有者负责提供新数据。 工作负荷所有者在其本地化数据存储中提供了适当的位置来存储数据。 此方法适用于组织拥有的专有数据,不适用于公共源。

有两种方法可用于拉取数据。 在一种方法中,工作负荷针对数据存储进行查询,检索必要的数据,并将其放置在本地化存储中。 另一种方法是在内存中执行实时查询。 决策取决于数据量和可用的计算资源。 对于较小的数据集,内存中检索可能足以用于模型训练。

无论使用推送模式还是拉取模式,都避免在过时数据上训练模型。 数据更新的频率应符合工作负荷要求。

数据分段

特定于工作负荷的要求可能需要数据分段。 下面是一些潜在的用例:

  • 安全要求 通常推动分段决策。 例如,监管约束可能会阻止跨地缘政治区域导出数据。 如果应用程序设计允许使用单独的模型,数据设计会为每个模型合并单独的数据管道。

    但是,如果使用单个模型,则分段数据源会馈送到该模型中。 需要基于这两个地理位置的数据训练模型,这可能会增加复杂性。

    无论应用程序是使用单个模型还是多个模型,都会在每个数据段上保留安全措施,使其受到与源数据相同的严格级别保护。

  • 数据新鲜度率 可以是分离数据的一个因素。 来自不同源的数据可能会以不同的时间间隔刷新。 如果数据发生更改,则重新训练变得必要。 分段可实现对数据生命周期的精细控制。 请考虑对不同的数据段使用单独的表或管道。

无论用例如何,当数据分段时,访问控制都是关键。 数据专业人员(如数据工程师和数据科学家)探索可用的源数据,以了解模式和关系。 他们的见解有助于训练预测结果的模型。 建立访问控制,确保只有经过授权的用户才能与特定数据子集进行交互。 对被视为相关的数据应用最低特权。 与数据所有者协作以设置适当的权限。

数据预处理

在实际方案中,源数据不只是为 AI 方案存储。 有一个中间过程,用于准备用于训练的数据。 在此阶段,数据会去除干扰,使其可用于使用。 在处理源数据时,数据科学家从事探索、试验和决策过程。 他们的主要目标是识别和提取保留预测能力的源数据的一部分。

预处理逻辑取决于问题、数据类型和所需结果。 下面是一些用于预处理的常见技术。 此列表并不详尽。 工作负荷的实际条件将由业务需求驱动。

  • 质量。 预处理有助于确保训练数据被去除噪音。 目标是确保训练数据中的每个行都表示明确的观察或与用例相关的良好示例,并消除缺乏质量或预测力的观察。 例如,如果整理产品评论,可以选择消除太短的数据。 需要发现哪些数据质量会产生有意义的预测结果。

  • 重新复制。 过于具体的源数据字段可以限制预测能力。 例如,请考虑地址字段。 将范围从完整的地址(房屋号码和街道名称)扩大到更高级别,如城市、州或国家/地区,可能更相关。

  • 重复数据删除。 消除冗余可确保训练数据保持准确且具有代表性。 在某些情况下,进行观察的频率不相关。 例如,扫描日志时,如果日志条目显示 1,000 次,则表示其频率。 它不一定意味着它比只发生一次日志更严重的错误。 这种类型的冗余可能会引入干扰。

  • 敏感数据处理。 消除个人数据,除非它绝对对模型的预测能力至关重要,否则无法通过匿名实现。 训练数据应有效,而不会损害隐私。 如果数据提供价值,则需要注意处理敏感数据的道德注意事项。 有关详细信息,请参阅 负责任的 AI

  • 标准化转换。 领域专家认为上述技术是特征工程的核心部分。 广泛的范围和多样化的源数据最终需要合并到功能存储中,其中特征组织(例如,特征表)以明确训练模型。 为训练选择预测数据后,将数据转换为标准化格式。 标准化还可确保与训练模型兼容。

    将图像转换为文本表示形式是一种转换形式。 例如,可以将扫描的文档或图像转换为计算机可读文本。

    若要确保与模型兼容,可能需要调整图像的方向或纵横比,以匹配模型的预期。

注意

混合大量结构化和非结构化数据可以提高处理时间。 工作负荷团队应衡量处理各种格式的影响。 随着重新训练工作之间的窗口变短,预处理花费的时间变得更加关键。

数据保留

训练模型后,评估是否删除用于训练的数据,并为下一个训练窗口重新生成模型。

如果数据保持相对不变,则重新训练可能没有必要,除非发生模型偏移。 如果预测的准确性降低,则需要重新训练模型。 可以选择再次引入数据、预处理和生成模型。 如果自上次训练窗口以来数据存在显著增量,则最佳操作过程。 如果数据量很大且数据没有发生太大变化,则可能需要预处理和重新生成模型。 在这种情况下,请保留数据、进行就地更新并重新训练模型。 确定要保留训练数据的时间。

通常,从功能存储中删除数据,以减少性能不佳且不再与当前或将来模型相关的功能的杂乱无章和存储成本。 如果保留数据,预期管理成本并解决安全问题,这是数据重复的典型问题。

世系跟踪

数据世系 是指跟踪其源中的数据路径,使其在模型训练中使用。 跟踪数据世系对于可解释性至关重要。 尽管用户可能不需要有关数据来源的详细信息,但该信息对于内部数据管理团队至关重要。 世系元数据可确保透明度和问责,即使模型未直接使用。 这些信息可帮助进行调试。 它还有助于确定数据预处理过程中是否引入了偏差。

可以时使用平台功能进行世系跟踪。 例如,Azure 机器学习集成到 Microsoft Purview 中。 通过此集成,你可以访问 MLOps 生命周期中用于数据发现、世系跟踪和治理的功能。

数据维护

所有模型可能会随着时间推移而过时,这会导致模型的预测能力或相关性衰减。 多个外部更改可能会导致衰减,包括用户行为、市场动态或其他因素的转变。 一段时间前训练的模型可能不太相关,因为情况会发生变化。 若要以更好的保真度进行预测,需要最近的数据。

  • 采用较新的模型。 为了确保相关性,需要一个可持续评估模型性能并考虑较新的模型的操作循环,这样数据管道将中断性降至最低。 或者,可以准备一个更大的更改,涉及重新设计数据生命周期和管道。

    选择新模型时,不一定需要从新的数据集开始。 即使在模型切换期间,用于训练的现有观察可能仍然很有价值。 尽管新模型可能会揭示更窄的方案,但基本过程仍然类似。 诸如功能存储和数据网格等数据管理方法可以简化新机器学习模型的采用。

  • 基于触发器的操作与例程操作。 考虑模型重新训练是否应由特定事件或条件触发。 例如,新的、更相关的数据的可用性或与已建立的基线下方的相关性下降可能会触发重新训练。 此方法的优点是响应能力和及时更新。

    维护也可以按固定的固定时间间隔(如每日或每周)进行计划。 对于防故障操作,请考虑这两种方法。

  • 数据删除。 删除不再用于训练的数据,以优化资源使用,并尽量减少使用过时或不相关的数据进行模型训练的风险。

    遗忘的权利是指个人有权将其个人数据从联机平台或数据库中删除。 请务必制定策略以删除用于训练的个人数据。

  • 数据保留。 在某些情况下,需要重新生成现有模型。 例如,对于灾难恢复,应像发生灾难性事件之前一样重新生成模型。 建议使用遵循主管道的工作负荷要求的辅助数据管道,例如解决模型衰减问题、通过基于触发器的或常规操作进行常规更新,以及其他维护任务。

权衡。 数据维护成本高昂。 它涉及复制数据、生成冗余管道以及运行例程进程。 请记住,定期培训可能无法提高答案质量。 它只提供对过期的保证。 评估数据更改的重要性,作为确定更新频率的信号。

确保数据维护作为模型操作的一部分完成。 应建立过程,以便尽可能多地通过自动化处理更改,并使用正确的工具集。 有关详细信息,请参阅 Azure 上的 MLOps 和 GenAIOps for AI 工作负载。

后续步骤