Google 的 Vertex AI 是一个基于 Google Cloud 的平台,企业家、开发者和 AI 研究人员可以使用它来管理他们的 AI 项目。我们在之前的文章中详细讨论了整个 Vertex AI 生态系统的架构。
本文将讨论 Vertex AI 中的托管 ML 数据集以及如何使用它们来创建程序。
1、什么是托管数据集?
托管数据集是在 Vertex AI 框架内工作的数据集。你需要它们进行 AutoML 训练(和 Gemini 训练),但不需要它们进行自定义模型。
但是,通过提供多种功能,管理数据库可以减少你在 Vertex 生态系统中的工作量。托管数据库的好处是:
- 你可以从集中位置管理数据集。
- 你可以轻松创建标签和多个注释集。
- 你可以创建人工标记任务。
- 你可以根据 AI 模型跟踪此数据库的沿袭以进行迭代和训练。
- 你可以通过使用同一数据集训练多个模型来比较 AI 模型性能。
- 你可以生成统计数据,
- Vertex 允许你将数据集拆分为训练、测试和验证数据。
这些功能允许你使用想要的任何数据集在 Vertex AI 上以本地方式端到端运行你的 AI 项目。你还可以使用 Google 提供的数据集来训练你的模型并检查其性能。
但是,你可以访问的数据库将取决于。由于训练和迭代的速度取决于你与所选服务器之间的物理距离,因此建议你选择距离项目所需的模型和训练数据集最近的位置。
现在,让我们来谈谈如何创建数据集。
如何为 Vertex AI 准备数据集?
可以使用 (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 数据源
你可以从 或 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”标签。
- 过滤:过滤掉与您的标签不匹配的文档,以避免预测出现偏差。
多标签分类:
- 多标签:文档可以有一个或多个标签。
- 数据要求:遵循与单标签相同的准则
要准备数据集,请按照中的说明进行操作。
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 个训练视频帧,并考虑高分辨率的图像质量限制。
架构:
- JSON — 使用以下 作为你的架构。
例如:
- 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 像素)的图像质量限制。
架构:
- JSONL:可以使用以下。例如:
- 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 模型获得出色的结果!
