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

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

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

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

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

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

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

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

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

重要

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

建议

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

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

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

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

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

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

数据维护

数据类型

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

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

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

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

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

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

数据可以结构化(数据库、电子表格)、半结构化(JSON、XML)或非结构化(文本文档、图像)。 多模式数据 将不同的数据类型(如文本、图像、音频或视频)合并在同一训练数据集中。 使用多模式数据时,在整个处理和特征工程过程中保留跨模式关系并维护不同数据类型之间的语义连接。 确保同步的数据处理,以便在预处理和训练期间保持不同形式的相关信息保持一致。

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

数据引入和分析

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

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

注意

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

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

数据源

可以从以下源收集数据:

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

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

  • 用户生成的数据 包括从用户交互、专家反馈和协作工作流中捕获的信息。 此专有数据支持持续学习体系结构,这些体系结构随着新信息可用而以增量方式更新。 设计数据管道以适应反馈循环,同时保持数据质量标准并防止低质量输入下降。

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

数据收集存储

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

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

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

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

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

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

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

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

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

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

数据分段

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

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

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

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

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

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

数据预处理

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

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

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

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

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

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

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

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

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

注意

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

功能存储设计

功能存储充当集中式存储库,用于存储、管理和为机器学习模型提供工程功能。 它们提供跨训练和推理阶段的一致性,同时在多个模型和团队之间实现功能重用。 组织可以实现多种实现功能存储的方法:

  • 集中式功能存储 为整个组织中的所有功能提供单一事实来源。 所有团队都在共享的特性库中贡献并获取。 此方法促进一致性并减少重复,但需要强有力的治理和标准化做法。

  • 分布式功能存储 允许团队维护自己的功能存储库,同时提供受控共享机制。 此模式为单个团队提供了更大的自主权,但需要仔细协调,以防止模型之间的功能不一致。

  • 混合方法 将集中式治理与分布式实现相结合。 常见功能是集中管理的,而领域特定的功能仍由各团队自行管理。

具有强大数据治理团队和标准化 ML 做法的组织中的工作负荷团队可能会遵循集中式方法,或者混合模型(如果需要遵守组织标准,同时仍具有一些自治性)。 分布式模式适用于团队具有不同的数据要求并具有高度自治性运营的组织。

设计注意事项

  • 设计功能定义、存储和服务层之间的明确分离
  • 将功能组织到符合业务域和模型要求的逻辑分组中
  • 建立一致的命名约定和架构演变做法
  • 在发布后使功能不可变,为更改创建了新版本
  • 与数据预处理、模型训练和模型服务基础结构集成
  • 实现数据偏移、功能分布更改和质量降级的自动检查

基础模型微调

基础模型微调的训练数据遵循不同于从头开始的传统模型训练模式。 你不需要训练整个模型,而是将预先训练的功能适应特定的域或任务。

特定于域的微调 需要高质量的与任务相关的训练示例,这些示例表示希望模型学习的特定模式。 训练数据的数量通常比传统的训练方案小,但质量和代表性变得更加关键。

例如,微调医学文档的一般语言模型需要训练示例,这些示例准确表示特定于组织或域的医疗术语、临床推理模式和文档标准。

任务特定的适应 将训练数据集中于特定功能或输出格式。 此方法可能涉及训练模型以遵循特定说明、生成结构化输出或与特定工作流集成。

考虑训练数据管道如何有效地提供特选的高质量示例,以便微调,同时维护不同模型变体的可跟踪性和版本控制。

数据保留

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

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

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

世系跟踪

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

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

数据维护

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

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

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

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

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

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

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

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

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

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

后续步骤