数据准备概览

您可以通过多种方式准备训练数据。

您的选择取决于多种因素。

将 Cloud Storage 用作已装载的文件系统 (Cloud Storage FUSE)

出于以下原因,建议您考虑将 Cloud Storage 用作已装载的文件系统 (Cloud Storage FUSE):

  • 对于非结构化训练数据(例如图片、文本或视频):Cloud Storage 非常适合存储这类通常体积较大且独立存在的文件。
  • 如果训练数据采用 TFRecord 等格式的结构化数据,则通常使用 Cloud Storage 来存储这些机器学习专用格式的数据。
  • 处理非常大的文件时:Cloud Storage FUSE 会将数据流式传输到训练作业,而无需将整个文件下载到副本。这有助于缩短大型数据集的数据加载时间和作业启动时间。
  • 执行分布式训练时:Cloud Storage FUSE 可为大型文件顺序读取提供高吞吐量,这在分布式训练场景中非常有用,因为在这些场景中,多个工作器需要并行访问数据。
  • 当您希望像访问本地文件系统一样方便地访问 Cloud Storage 数据,而无需在训练代码中进行显式 API 调用时。
  • 当您的主要需求是可扩缩的存储空间,并且您不太在意随机访问大量小文件的最低延迟时间时。

特定于 Ray on Vertex AI

  • 您可以将数据存储在 Cloud Storage 存储桶中,Ray on Vertex AI 可以访问这些存储桶。
  • Ray 可以直接从 Cloud Storage 读取数据。例如,在 Ray 上运行 Spark 时,您可以从 Cloud Storage 读取文件。
  • Vertex AI 使用 Cloud Storage FUSE 将 Cloud Storage 存储桶装载为在 Ray 上运行的训练作业中的本地文件系统。这样一来,您的 Ray 应用就可以使用标准文件 I/O 操作访问数据,就像数据位于本地磁盘上一样。
  • 为获得最佳性能,建议您在运行 Ray 集群的同一区域中使用 Cloud Storage 存储桶。

了解详情

网络文件系统 (NFS) 共享

  • 当您需要以极高的吞吐量和极低的延迟访问远程文件时,就像这些文件存储在本地一样。这对于训练期间的某些类型的数据或复杂的文件交互可能非常重要。
  • 当您需要让计算集群(例如 Vertex AI 上的 Ray 集群)中的所有节点都能轻松访问远程文件时。
  • 当您的应用受益于更标准的文件系统接口(与 Cloud Storage FUSE 相比,可能具有更强的 POSIX 合规性)时。
  • 您在 Virtual Private Cloud 中有想要使用的现有 NFS 基础架构。
  • 您需要在多个作业或集群之间共享文件或目录,并以一致的低延迟时间进行访问,最好是在文件系统级别管理权限。

特定于 Ray on Vertex AI

  • 您可以将 NFS 共享装载到 Vertex AI 上的 Ray 集群,从而像访问本地文件一样访问远程文件。
  • 这有助于以高吞吐量和低延迟的方式访问共享文件系统。
  • 您可以使用 Vertex AI SDK for Python 创建 Ray 集群,并在创建时设置 NFS 装载,指定服务器、路径和装载点。装载完成后,您的 Ray 代码可以使用标准文件操作来读取和写入这些 NFS 卷。

了解详情

托管式数据集

  • 集中式数据管理和治理:托管式数据集提供了一个在 Vertex AI 中集中整理和管理数据集的位置。这有助于跟踪和管理不同项目和实验中的数据资产。
  • 数据标注:您可以直接在托管式数据集中创建标注任务和管理注释集。
  • 跟踪数据沿袭:托管式数据集会自动跟踪数据沿袭,直至基于这些数据训练的模型。这对于了解特定模型所用的数据源至关重要,有助于确保可重现性和治理。
  • 比较自定义模型和 AutoML 模型:借助托管式数据集,您可以使用相同的数据训练自定义模型和 AutoML 模型。这样一来,您就可以直接比较它们在同一数据集上的表现,从而选择最适合您问题的方法。
  • 生成数据统计信息和可视化图表:Vertex AI 可以自动为托管式数据集中的数据生成统计信息和可视化图表。这有助于进行探索性数据分析,并帮助您了解数据的特征。
  • 自动数据拆分:在训练流水线中使用托管式数据集时,Vertex AI 可以根据指定的分数、过滤条件、预定义的拆分或时间戳自动将数据拆分为训练集、验证集和测试集。这简化了数据准备流程。
  • 利用数据集版本:托管式数据集支持版本控制,让您能够跟踪数据随时间的变化,并在需要时恢复到之前的版本。

特定于 Ray on Vertex AI

  • 如果您在利用 Ray 进行分布式训练的 Vertex AI Training 流水线中使用了托管式数据集,那么该数据集中的数据会提供给训练容器。随后,您的 Ray 应用便可以访问这些数据(如果数据集已关联到 Cloud Storage 或 BigQuery,则可通过装载的 Cloud Storage 或 BigQuery 访问)。环境变量 AIP_TRAINING_DATA_URIAIP_VALIDATION_DATA_URIAIP_TEST_DATA_URI 将指向数据。

了解详情

BigQuery

  • 在 Vertex AI 组件内连接到数据时:许多 Vertex AI 工具和服务都直接与 BigQuery 集成。您可以在 JupyterLab 中查询 BigQuery 中的数据。这样,您就可以直接与 BigQuery 数据交互,进行探索、可视化和模型开发,而无需将其迁移到其他存储系统。
  • 构建训练流水线:在 Vertex AI 中构建训练流水线时,您可以直接使用 BigQuery 中的数据。例如,流水线可以从 BigQuery 中提取数据、对其进行预处理,然后训练模型。
  • 持续模型训练流水线:如需设置持续模型训练,您可以根据 BigQuery 表中到达的新数据触发流水线运行。这有助于实现模型重新训练的自动化。您可以配置 Eventarc 触发器,以便在有新作业插入特定 BigQuery 表时启动流水线。
  • 模型监控:BigQuery 可用作监控已部署模型的特征倾斜和漂移的来源。对于偏差检测,您可以指定训练数据集的 BigQuery URI。此外,BigQuery 还可以存储来自在线推理端点的日志,这些日志随后可用作持续监控的数据源。为此,您的 BigQuery 表最好包含时间戳列。
  • BigQuery ML 集成:在利用 BigQuery ML 使用 SQL 构建机器学习模型时,您可以使用 BigQuery 数据集。Vertex AI Workbench 支持在笔记本环境中对 BigQuery 数据进行交互式探索性分析,并使用 BigQuery ML。
  • 数据探索和准备:在训练之前,您可以使用 BigQuery 探索和直观呈现数据。您还可以在 BigQuery 中直接使用 SQL 查询执行数据转换,然后再将数据用于训练。
  • 访问公共数据集:BigQuery 托管了许多公共数据集,例如芝加哥出租车行程数据集,您可以在 Vertex AI Workbench 中轻松使用这些数据集进行实验和训练。

特定于 Ray on Vertex AI

  • Ray on Vertex AI 能够直接从 BigQuery 读取数据。您可以在 Ray 任务中使用 Vertex AI SDK for Python 来执行 BigQuery 查询,并将结果具体化以便在 Ray 应用中使用。
  • 从 BigQuery 读取数据时,请注意查询响应大小上限为 10 GB。
  • 您还可以使用 Vertex AI SDK for Python 将数据从 Ray 应用写回 BigQuery。

了解详情