Vertex AI 托管数据集制作指南

Google 的 Vertex AI 是一个基于 Google Cloud 的平台,企业家、开发者和 AI 研究人员可以使用它来管理他们的 AI 项目。我们在之前的文章“Google Vertex AI:加速 AI 开发及更多”中详细讨论了整个 Vertex AI 生态系统的架构。

本文将讨论 Vertex AI 中的托管 ML 数据集以及如何使用它们来创建生成式 AI 应用程序。

1、什么是托管数据集?

托管数据集是在 Vertex AI 框架内工作的数据集。你需要它们进行 AutoML 训练(和 Gemini 训练),但不需要它们进行自定义模型。

但是,通过提供多种功能,管理数据库可以减少你在 Vertex 生态系统中的工作量。托管数据库的好处是:

  • 你可以从集中位置管理数据集。
  • 你可以轻松创建标签和多个注释集。
  • 你可以创建人工标记任务。
  • 你可以根据 AI 模型跟踪此数据库的沿袭以进行迭代和训练。
  • 你可以通过使用同一数据集训练多个模型来比较 AI 模型性能。
  • 你可以生成统计数据,
  • Vertex 允许你将数据集拆分为训练、测试和验证数据。

这些功能允许你使用想要的任何数据集在 Vertex AI 上以本地方式端到端运行你的 AI 项目。你还可以使用 Google 提供的数据集来训练你的模型并检查其性能。

但是,你可以访问的数据库将取决于数据集的服务器位置。由于训练和迭代的速度取决于你与所选服务器之间的物理距离,因此建议你选择距离项目所需的模型和训练数据集最近的位置。

现在,让我们来谈谈如何创建数据集。

如何为 Vertex AI 准备数据集?

可以使用 Google Cloud Platform (GCP) 或 Google Vertex API 创建 Vertex AI 的托管数据集。你的流程将根据使用的数据类型和要执行的操作而有所不同。

对于你导入的每个数据集,都需要一个结构化的 JSON 或 CSV 文件,将数据放入结构中并允许标注。

2、制作用于分类的图像数据集

分类任务是自动标记图像和识别特征的任务。例如,分类任务可能是找到照片中描绘的花朵类型。让我们来谈谈训练这种模型所需的数据。

2.1 支持的图像格式

你可以使用 Vertex 训练单标签和多标签分类模型。两种类型的模型都接受以下类型的图像作为输入:

  • PNG
  • JPEG
  • GIF
  • BMP
  • ICO

输出图像将遵循相同的文件格式,但如果需要,这些模型也可以训练为输出 TIFF 和 WEBP 文件。

注意:另外,请记住你的文件需要进行 Base64 编码。

2.2 准备数据

现在,我们将准备用于单标签分类的图像。你需要遵循如下所示的 JSON 格式:

{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotation": {
    "displayName": "LABEL",
    "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
   },
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

这里,

  • imageGCsUrl — 指定图像的位置
  • commentResourceLabels — 用于注释输入数据。系统只保留 "aiplatform.googleapis.com/annotation_set_name":"isplayName"
  • dataitemResourceLabels — 用于指定要上传图像的元数据。系统保留 "aiplatform.googleapis.com/ml_use":"training/test/validation"

为了说明,如果我们在用于 Kommunicate 的 gs://bucket 中有三个图像,我们可能会生成如下 JSON 格式:

此外,你可以使用 label_type 自定义键值对对你添加到图像的多个标签进行分类。

2.3 指南

现在,你需要遵循这些数据集的一些指南:

  • Vertex 针对真实世界图像进行了优化。
  • 你的训练数据决定了输出,因此图像应该接近。例如,如果你想分析低质量、模糊的照片,必须在类似的图像上训练你的模型。
  • Vertex AI 的预测能力有限,因此如果人类无法在 1-2 秒内对图像进行分类,Vertex AI 也无法做到。
  • 建议你至少使用 1000 张图像进行训练。
  • 最好将出现频率最高的标签的图像保留在 100 倍于原始图像的数量
  • 标有最不常见标签的照片。
  • None_of_the_above 分类器可以帮助模型更好地运行。

基于图像的 ML 模型的另一个流行业务用例是对象检测,接下来让我们讨论一下。

3、制作用于对象检测的图像数据集

在对象检测模型中,模型会尝试在照片中找到特定对象。这对于在图像中查找特定图案或对象很有用。例如,你可以使用它在街头摄影数据集中查找品牌徽标。

让我们讨论如何为这些任务准备数据集。

3.1 支持的图像格式

Vertex AI 支持以下用于对象检测和识别的图像格式:

  • PNG
  • JPEG
  • GIF
  • BMP
  • ICO

3.2 输出格式

经过训练的模型通常以与训练数据相同的格式输出图像。但是,Vertex AI 也可以输出:

  • TIFF
  • WEBP

3.3 准备用于对象识别的图像

Vertex AI 使用特定的 JSON 格式进行对象识别任务。以下是示例:

{
  "imageGcsUri": "gs://bucket/filename.ext",  # Location of the image
  "objectAnnotations": [
    {
      "boundingBox": {
        "normalizedVertices": [
          { "x": 0.1, "y": 0.2 },
          { "x": 0.3, "y": 0.2 },
          { "x": 0.3, "y": 0.4 },
          { "x": 0.1, "y": 0.4 }
        ]
      },
      "displayName": "LABEL",  # Label associated with the object
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",  # Annotation set name
        "env": "prod"  # Optional custom key-value pair (e.g., environment)
      }
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"  # Intended use of the data item
  }
}

在此示例中,JSON 字段表示:

  • imageGcsUri:指定图像文件的 Google Cloud Storage URI
  • objectAnnotations:此数组包含表示图像中检测到的对象的对象
  • boundingBox:此对象定义对象周围的边界框
  • normalizedVertices:此数组以规范化坐标(0 到 1)指定边界框顶点的坐标
  • displayName:此键保存与检测到的对象关联的标签
  • annotationResourceLabels:此对象提供有关注释的其他元数据
  • aiplatform.googleapis.com/annotation_set_name:此键引用现有注释集,其中相关注释分组在一起。将“displayName”替换为实际的集合名称
  • env(可选):在此处添加自定义键值对以获取更多信息(例如环境)
  • dataItemResourceLabels:此对象提供有关数据项本身的元数据
  • aiplatform.googleapis.com/ml_use:此键指定数据项的预期用途(“训练”、“测试”、“验证”)

例如,对于我们 Google Cloud 存储桶中名为 Kommunicate_1.jpeg 的图像,我们将编写一个 JSON:

3.4 数据集指南

图像大小:

  • 最佳范围:图像大小介于 512×512 和 1024×1024 像素之间。
  • 缩放:建议的最大值是 1024×1024。如果图像明显较大,请考虑缩小它们,同时保持纵横比。

边界框大小:

  • 准确度:确保边界框紧密贴合物体。
  • 避免重叠:尽量减少边界框之间的重叠。
  • 尺寸变化:包括各种尺寸的边界框。
  • 规范化:对边界框使用规范化坐标(0 到 1)。

其他注意事项:

  • 纵横比:保持图像的原始纵横比。
  • 数据增强:尝试裁剪、填充和调整大小等技术。
  • 硬件限制:设置图像和边界框大小时考虑硬件资源。

数据集质量和多样性:

  • 图像质量:使用具有不同背景、光照条件和对象大小的高质量图像。
  • 标签准确性:确保准确一致的标签。
  • 数据量:争取足够大的数据集。
  • 数据平衡:保持平衡的数据集。
  • 注释一致性:确保注释类型和属性的一致性。

标注集管理:

  • 创建集:根据对象类别或属性将标注组织成集。
  • 分配标注:将标注与适当的集关联。

元数据:

  • 包括元数据:添加相关元数据,如对象类型、属性或时间戳。

数据格式:

  • JSON 格式:使用提供的 JSON 格式进行对象检测和分类任务。
  • 模式定义:为您的数据集定义一个明确的模式。

为两个基于图像的任务准备指定格式的数据集后,你就可以开始在任务中使用它们了。接下来是表格数据集。

4、制作用于分类和回归的表格数据集

此上下文的分类任务是预测分类结果的任务。因此,如果你想预测客户是否会流失,可以使用这些模型。

回归任务用于预测连续数值数据,因此如果你想将房价与数据关联起来时。

重要提示:对于表格数据,Vertex 会将 80% 的数据随机拆分为训练、10% 用于验证和 10% 用于测试用例。如果你想要手动拆分或按时间顺序映射,则需要添加单独的拆分列。

除此之外,你的数据集必须具有以下内容。

4.1 数据集指南

  • 最大尺寸:数据集必须为 100 GB 或更小
  • 最小列数:2 列(包括目标和至少一个特征)
  • 最大列数:1,000 列(包括特征和非特征)
  • 目标列:指定 Vertex AI 可用于将训练数据与所需结果相关联的目标列,目标列不能包含缺失值
  • 你可以添加两种数据类型:分类或数值。
  • 分类:最少两个不同值,最多 500 个不同值
  • 数值:无限制
  • 列名:允许数字、字符和下划线但是,列名不能以下划线开头。
  • 行数:最小1,000 行,最大100,000,000 行
  • 首选宽数据格式:每行代表一个训练数据项。
  • 除非你为数据添加特定权重,否则所有数据都将被视为相等。如果你想强调某个特定子集,请在权重列中从范围 [0,10000] 中分配一个相对更重要的数字。

4.2 数据源

你可以从 BigQuery 或 CSV 导入表格数据:

  • 对于 BigQuery,你需要一个位置 ID,格式如下: bq://<project_id>.<dataset_id>.<table_id>
  • 对于 CSV,每个文件应小于 10GB,但如果总文件大小小于 100GB,您可以上传多个文件。

此外,表格数据集也用于预测任务。让我们继续介绍它们。

5、制作用于预测的表格数据集

预测任务尝试根据历史数据预测未来的数值。这些任务具有强制性的时间序列组件。

重要提示:与分类和回归表格数据一样,你的数据将被随机拆分为训练、验证和测试子集。根据您的训练要求,您可以手动或按时间顺序拆分。

此处所需数据的基本准则如下。

5.1 数据集准则

  • 数据集大小:最大 100GB。
  • 列数:最少 3 列(目标、时间、时间序列 ID),最多 100 列。考虑使用 3 列以上以获得更好的性能。
  • 目标列:必填。你不能添加空值。
  • 时间列:必填。你需要为每一行添加一个值,并且建议数据粒度保持一致的周期性。
  • 时间序列标识符列:为每一行添加一个值,以标识观察结果属于哪个时间序列。
  • 列名:使用字母数字字符和下划线;不能以下划线开头。
  • 行数:最少 1,000 行,最多 100,000,000 行。考虑使用 1,000 行以上以获得更好的性能。
  • 数据格式:使用窄(长)数据格式,其中每行代表时间序列 ID 及其数据的特定时间点。
  • 行间间隔:确保行间间隔一致,以实现一致的数据粒度。
  • 时间序列长度:每个时间序列最多 3,000 个时间步长。

5.2 数据源

你可以从 BigQuery 或 CSV 导入表格数据。

  • 对于 BigQuery,你需要一个位置 ID,格式如下: bq://<project_id>.<dataset_id>.<table_id>
  • 对于 CSV,每个文件应小于 10GB,但如果总数小于 100 GB,你可以上传多个文件。

如果你想要处理基于文本的任务,如情绪分析或 NLP,请转到下一部分。

准备文本数据集。你可以使用 Vertex 中的 Gemini AI 模型来处理文本数据集。用于文本提取、分类和实体识别的 AutoML 将从 2024 年 9 月 15 日起停用。

现在,让我们看看如何为各种任务准备数据集。

6、制作用于分类的文本数据集

分类模型尝试将文档分类为不同的类别。这可用于将书籍分类为流派,将不同的研究论文分类为主题等。让我们来谈谈具体的数据要求。

数据准则

  • 最少文档数:20
  • 最多文档数:1,000,000
  • 唯一标签:最少 2 个,最多 5000 个
  • 每个标签的文档数:每个标签至少 10 个文档
  • 数据格式:内联或引用 Cloud Storage 存储桶中的 TXT 文件

最佳实践:

  • 数据变化:使用具有不同长度、作者、措辞和样式的多样化训练数据。
  • 人工分类能力:确保文档可由人工轻松分类。
  • 足够的示例:为每个标签提供尽可能多的训练文档。
  • 标签平衡:争取使最常见标签的文档数比标准最低的标签多 100 倍。
  • 域外标签:考虑为不符合定义标签的文档添加“None_of_the_above”标签。
  • 过滤:过滤掉与您的标签不匹配的文档,以避免预测出现偏差。

多标签分类:

  • 多标签:文档可以有一个或多个标签。
  • 数据要求:遵循与单标签相同的准则

要准备数据集,请按照此 .yaml 文件中的说明进行操作。

JSON 模式的示例如下:

准备好此格式的数据集后,你可以将文本用于分类任务。我们将尝试从文本中提取一些特征以用于下一组任务。

7、制作用于实体提取的文本数据集

实体提取模型经过训练,可以识别并从文本中提取特定实体。例如,你可以使用它来收集潜在客户并从聊天对话中查找潜在客户的姓名。

以下是数据要求。

数据指南:

  • 最少文档:50
  • 最多文档:100,000
  • 唯一标签:最少 1 个,最多 100 个
  • 标签长度:2 到 30 个字符之间
  • 每个标签的注释:每个标签至少出现 200 次
  • 标注位置:考虑结构化文档(例如发票、合同)的空间位置。

数据格式:

  • JSON 行:直接在 JSON 行文件中包含注释。
  • 云存储:引用云存储存储桶中的 TXT 文件以获取文档。

最佳实践:

  • 标注所有出现:标注要提取的每个实体实例。
  • 数据变化:使用具有不同长度、作者、措辞和样式的多样化训练数据。
  • 这些模型无法进行人类无法进行的实体提取。因此,任何人类无法分类的内容都无法通过模型进行分类。

其他注意事项:

  • 结构化文档:结构化文档将允许您使用实体的位置进行更好的提取。
  • 数据质量:强烈建议您拥有高质量的注释和干净的数据。
  • 标签一致性:在整个数据集中保持一致的标签实践。

架构:

优先考虑 JSON 文件会更好,因为用于基于文本的任务的 AutoML 将于 2024 年 9 月停止使用。Gemini 将取而代之,只允许使用 JSON 文件执行任务

8、制作用于情感分析的文本数据集

情感分析任务试图检查文本以了解其背后的情感。这对于客户服务聊天机器人非常重要,情感分析可以帮助企业了解客户对其聊天机器人的感受。

数据要求如下:

  • 最少文档数:10
  • 最多文档数:100,000
  • 情绪值:你的情绪值应为从 0 到所选最大值的整数(例如,可以使用范围 [0,1,2],其中 0 为负,1 为中性,2 为正)
  • 每个情绪的文档数:为每个情绪值添加至少十个文档
  • 情绪分数一致性:你的情绪必须是从 0 开始的连续整数。
  • 数据格式:你可以添加内联文本或使用你的 Google Cloud Storage 参考文本文件。

最佳实践:

  • 每个情绪的文档数:每个情绪值至少有 100 个文档。
  • 平衡数据集:为避免偏见,请为每个情绪分数使用平衡数量的文档。
  • 数据变化:包括具有不同长度、作者和样式的多样化文本数据。
  • 人类可分类性:如果人类无法识别您提供的用于预测的文档中的情绪,那么机器学习算法也无法做到这一点。

架构:

  • 对于 JSON 文件 — 使用此架构
  • 对于 CSV 文件 — 使用以下列。 [ml_use] 列是可选的
[ml_use],gcs_file_uri|"inline_text",sentiment,sentimentMax

例如,如果我们想通过 JSON 文件导入两种类型的文本(一个内联和一个 .txt 文档),我们使用以下格式:

重要提示:对 Text AutoML 模型的支持将从 2025 年 9 月开始不再使用,此后只有 Gemini 模型可用于这些任务。不建议使用 CSV 数据,因为 Gemini 模型仅使用结构化 JSON 数据。

9、制作用于动作识别的视频数据集

动作识别机器学习任务尝试识别视频中的特定人类动作。因此,这些算法在一个过程中识别和分类人类行为。

这对于银行的安全计划可能很重要。

数据格式:

  • 支持的格式:.MOV、.MPEG4、.MP4、.AVI
  • 推荐格式:最好使用 MPEG4 或 .MP4 以实现浏览器兼容性。

文件大小:

  • 最大:50 GB(最多 3 小时)。
  • 时间戳格式错误:避免使用时间戳格式错误或为空的文件。

标签限制:

  • 最大标签数:每个数据集 1,000 个。

动作识别:

  • 标记所有动作:使用 VAR 标签控制台标记视频中的所有动作。

最佳实践:

  • 数据相关性:使用与目标数据类似的训练数据(例如,安全摄像头用例的模糊视频)。
  • 人类可分类性:确保人类可以在 1-2 秒内分配标签。
  • 标签平衡:争取最常见标签的视频数量是最少见标签的 100 倍。
  • 动作识别:每个标签至少使用 100 个训练视频帧,并考虑高分辨率的图像质量限制。

架构:

例如:

  • CSV — 你的 CSV 文件需要遵循以下格式。
VIDEO_URI, TIME_SEGMENT_START, TIME_SEGMENT_END, LABEL, ANNOTATION_SEGMENT_START, ANNOTATION_SEGMENT_END

10、制作用于分类的视频数据集

视频的分类任务尝试根据训练数据标记视频。为了实现粒度,建议你创建一个全局标签并为视频的每个帧创建一个标签。

数据格式:

  • 支持的格式:.MOV、.MPEG4、.MP4、.AVI
  • 推荐的格式:MPEG4 或 .MP4 以实现浏览器兼容性

文件大小:

  • 最大:50 GB(最多 3 小时)
  • 格式错误的时间戳:避免使用格式错误或为空的时间戳的文件。

标签限制:

  • 最大标签:每个数据集 1,000 个

ML_USE 标签:

  • 可选:为训练/测试分割分配“ML_USE”标签。

视频分类:

  • 添加类别:添加至少两个不同的类别(例如,“新闻”和“MTV”)。
  • 域外标签:对于未分类的视频,请考虑使用“以上均无”。

最佳实践:

  • 数据相关性:使用与目标数据类似的训练数据(例如,安全摄像头用例的模糊视频)。
  • 人类可分类性:确保人类可以在 1-2 秒内分配标签。
  • 标签平衡:最常见标签的视频数量应比最不常见标签多 100 倍。
  • 训练视频:每个标签至少使用 100 个训练视频(高级模型为 50 个)。
  • 多个标签:当你在视频中使用多个标签时,每个标签需要更多示例,并且解释可能具有挑战性。

架构:

  • JSON — 遵循以下架构。例如:
  • CSV — 对于 CSV,请使用以下格式:
[ML_USE,]VIDEO_URI,LABEL,START,END

11、制作用于对象跟踪的视频数据集

对象跟踪可让你通过视频帧跟踪对象。这些任务允许你查找和跟踪视频中的特定对象。

数据格式:

  • 支持的格式:.MOV、.MPEG4、.MP4、.AVI
  • 推荐格式:MPEG4 或 .MP4 以实现浏览器兼容性

文件大小:

  • 最大:50 GB(最多 3 小时)
  • 格式错误的时间戳:避免使用格式错误或为空的时间戳的文件。

标签限制:

  • 每个数据集的最大标签数:1,000
  • 最大标记帧数:150,000
  • 最大边界框数:1,000,000
  • 每个标注集的最小标签数:1,000

ML_USE 标签:

  • 可选:为训练/测试分割分配“ML_USE”标签。

最佳实践:

  • 数据相关性:使用与目标数据类似的训练数据(例如,安全摄像头用例的模糊视频)。
  • 人工分类能力:确保人工可以在 1-2 秒内分配标签。
  • 标签平衡:最常见标签的视频数量应比最不常见标签多 100 倍。
  • 边界框大小:最小边界框大小为 10 像素 x 10 像素。
  • 标签频率:每个唯一标签应出现在至少三个不同的视频帧中,并至少有十个注释。
  • 视频分辨率:考虑高分辨率(超过 1024 x 1024 像素)的图像质量限制。

架构:

  • CSV:对于 CSV,请使用以下格式:
[ML_USE,] VIDEO_URI, LABEL, [INSTANCE_ID], TIME_OFFSET, BOUNDING_BOX

12、如何创建托管数据集?

要在 Vertex AI 中创建数据集,请按照以下步骤操作:

  • 在 Google Cloud Console 的 Vertex AI 部分中,转到数据集页面。
  • 单击创建。
  • 根据你的数据选择选项卡 — 图像/文本/视频/表格。
  • 选择任务。
  • 选择具有你要使用的资源的区域。
  • 单击“创建”以创建一个空数据集,然后转到“数据导入”。
  • 选择要从哪里导入数据,你可以使用计算机中的导入文件(你创建的 JSON 和 CSV 文件),从云存储中选择一个导入文件,或者从计算机中选择所有文件。
  • 单击“继续”。

这将启动数据的上传过程,并创建可用于项目的托管数据集。

13、结束语

在本文中,我们介绍了可以在 Vertex AI 中创建的不同类型的任务和数据集。请记住,这些数据集可用于多个模型进行比较和特定的训练过程。

根据你的目标,你必须自定义数据集和训练数据。我们希望你能通过 Google 的 Vertex AI 模型获得出色的结果!


原文链接:Managing Machine Learning Datasets with Vertex AI: A Complete Guide

汇智网翻译整理,转载请标明出处