在 Google Cloud 中为 AI 和机器学习工作负载设计存储空间

Last reviewed 2024-03-20 UTC

人工智能 (AI)机器学习 (ML) 工作负载选择 Google Cloud 存储服务时,您必须谨慎操作为每个特定作业选择正确的存储选项组合。上传数据集、训练和调优模型、将模型投入生产或将数据集和模型存储在归档中时,需要谨慎选择。简而言之,您需要选择最合适的存储服务,为 AI 和机器学习工作负载的每个阶段提供适当的延迟时间、规模和费用。

为帮助您做出明智的选择,本文档提供了有关如何使用和集成Google Cloud 为关键 AI 和机器学习工作负载提供的各种存储方案的设计指导。

图 1 显示主要存储选项的摘要。如图所示,如果文件较大、每秒输入和输出操作次数 (IOPS) 较低或延迟时间较长,则通常选择 Cloud Storage。但是,如果您需要较高的 IOPS、较小的文件或较短的延迟时间,请改为选择 Filestore。

图 1:主要的 AI 和机器学习存储注意事项

如果文件较大、IOPS 较低或延迟时间较长,请选择 Cloud Storage。如果您需要较高的 IOPS、较小的文件或较短的延迟时间,请选择 Filestore。

AI 和机器学习工作负载阶段概览

AI 和机器学习工作负载包含四个主要阶段:准备、训练、服务和归档。这些是 AI 和机器学习工作负载生命周期的四个阶段,您需要确定应选择使用哪些存储方案。在大多数情况下,我们建议您在准备阶段选择的存储空间选项也用于后续阶段。遵循此建议有助于您减少在存储服务之间复制数据集。不过,这条一般规则也有一些例外情况,本指南后面会对此进行说明。

在每个阶段,有些存储解决方案的效果比其他解决方案更好,并且可能需要与其他存储选项搭配使用才能取得最佳效果。存储选项的有效性取决于数据集属性、所需计算资源和存储资源的规模、延迟时间和其他因素。下表介绍了这些阶段,并简要概述了每个阶段的推荐存储空间选项。如需直观地查看此表格以及了解更多详情,请参阅决策树

表 1:针对 AI 和机器学习工作负载中各个阶段和步骤的存储建议
阶段 步骤 存储空间建议

准备

数据准备

  • 上传和注入数据。
  • 请先将数据转换为正确的格式,然后再训练模型。

Cloud Storage

  • 可以容忍更高存储延迟时间(几十毫秒)的大型文件(50 MB 或更大)。

Filestore Zonal

  • 数据集较小,文件较小(小于 50 MB),存储延迟时间较短(约 1 毫秒)。

训练

  1. 模型开发
    • 使用笔记本并采用迭代试错方法开发模型。
  2. 模型训练
    • 使用不同规模的图形处理单元 (Cloud GPU) 或张量处理单元 (Cloud TPU) 重复读取训练数据集。
    • 将迭代过程应用于模型开发和训练。

Cloud Storage

  • 如果您在准备阶段选择了 Cloud Storage,最好在 Cloud Storage 中训练数据。

具有本地 SSD 的 Cloud Storage 或 Filestore

  • 如果您在准备阶段选择了 Cloud Storage,但需要支持小型 I/O 请求或小文件,则可以补充训练任务。为此,请将部分数据从 Cloud Storage 移动到本地 SSD 或 Filestore Zonal。

Filestore

  • 如果您在准备阶段选择了 Filestore,最好在 Filestore 中训练数据。
  • 创建本地 SSD 缓存以补充 Filestore 训练任务。
  1. 检查点和重启
    • 通过创建检查点,在模型训练期间定期保存状态,以便在节点故障后重新开始训练。
    • 请根据 I/O 模式以及需要在检查点保存的数据量进行选择。

Cloud Storage

  • 如果您在准备阶段选择了 Cloud Storage,最好使用 Cloud Storage 进行检查点和重启。
  • 适合提高吞吐量,以及需要大量线程的工作负载。

Filestore Zonal

  • 如果您在准备阶段选择了 Filestore,最好使用 Filestore 进行检查点和重启。
  • 适合低延迟、高客户端吞吐量和较少线程数。

服务

  • 存储模型。
  • 在启动时将模型加载到运行 Cloud GPU 或 Cloud TPU 的实例中。
  • 存储模型推理的结果,例如生成的图片。
  • (可选)存储和加载用于模型推理的数据集。

Cloud Storage

  • 如果您在 Cloud Storage 中训练模型,最好使用 Cloud Storage 来部署模型。
  • 将模型生成的内容保存在 Cloud Storage 中。

Filestore

  • 如果您在 Filestore 中训练模型,最好使用 Filestore 来提供模型。
  • 如果在生成小文件时需要耐用性和低延迟,请选择 Filestore Zonal(可用区级)或 Filestore Enterprise(区域级)。

归档

  • 长时间保留训练数据和模型。

Cloud Storage

  • 使用多个存储类别、Autoclass对象生命周期管理功能优化存储费用。
  • 如果您使用 Filestore,可以使用 Filestore 快照和备份,也可以将数据复制到 Cloud Storage。

如需详细了解此表的潜在假设,请参阅以下部分:

条件

如需缩小为 AI 和机器学习工作负载使用哪些存储选项的选择范围,请先回答以下问题:

  • 您的 AI 和 ML I/O 请求大小和文件大小是小、中还是大?
  • 您的 AI 和机器学习工作负载是否对 I/O 延迟时间和第一字节时间 (Time to First Byte) (TTFB) 敏感?
  • 您是否需要为单个客户端或汇总客户端提供高读写吞吐量?或者两者兼有?
  • 单个最大的 AI 和机器学习训练工作负载需要的 Cloud GPU 或 Cloud TPU 数量上限是多少?

除了回答上述问题外,您还需要了解可用于帮助优化 AI 和机器学习工作负载的计算选项和加速器。

计算平台注意事项

Google Cloud 支持三种主要的 AI 和机器学习工作负载运行方法:

对于 Compute Engine 和 GKE,我们建议使用集群工具包部署可重复使用且交钥即用的集群,这些集群遵循 Google Cloud 最佳实践。

加速器注意事项

为 AI 和机器学习工作负载选择存储选项时,您还需要选择适合您的任务的加速器处理选项。Google Cloud 支持两种加速器选项:NVIDIA Cloud GPU 和自定义开发的 Google Cloud TPU。这两种类型的加速器都是应用专用集成电路 (ASIC),与标准处理器相比,用于更高效地处理机器学习工作负载。

Cloud GPU 和 Cloud TPU 加速器之间存在一些重要的存储差异。使用 Cloud GPU 的实例支持本地 SSD,可提供高达 200 Gbps 的远程存储吞吐量。Cloud TPU 节点和虚拟机不支持本地 SSD,并且完全依赖于远程存储访问。

如需详细了解加速器优化机器类型,请参阅加速器优化机器家族。如需详细了解 Cloud GPU,请参阅 Cloud GPU 平台。 如需详细了解 Cloud TPU,请参阅 Cloud TPU 简介。如需详细了解如何在 Cloud TPU 和 Cloud GPU 之间进行选择,请参阅何时使用 Cloud TPU

存储选项

表 1 中之前总结的那样,请将对象存储或文件存储与 AI 和机器学习工作负载搭配使用,然后再使用块存储来补充此存储选项。图 2显示了在为 AI 和机器学习工作负载选择初始存储选项时可以考虑的三个典型选项:Cloud StorageFilestoreGoogle Cloud NetApp Volumes

图 2: Google Cloud提供的适用于 AI 和机器学习的存储服务

在为 AI 和机器学习工作负载选择初始存储选项时,可以考虑的三个选项是 Cloud Storage、Filestore 和 NetApp Volumes。

如果您需要对象存储,请选择 Cloud Storage。Cloud Storage 提供以下功能:

  • 非结构化数据和对象的存储位置。
  • 用于访问存储桶的 API(例如 Cloud Storage JSON API)。
  • 用于保存数据的永久性存储空间。
  • 每秒兆字节的吞吐量,但需要更长的存储延迟时间。

如果您需要文件存储空间,可以选择 Filestore 和 NetApp Volumes,它们提供以下功能:

  • Filestore
    • 基于 NFS 的企业级高性能文件存储。
    • 用于保存数据的永久性存储空间。
    • 存储延迟时间短,吞吐量为 26 GB/s。
  • NetApp Volumes
    • 与 NFS 和服务器消息块 (SMB) 兼容的文件存储。
    • 可通过使用 NetApp ONTAP 存储软件工具的选项进行管理。
    • 用于保存数据的永久性存储空间。
    • 吞吐量为 4.5 GBps。

请将以下存储选项作为 AI 和机器学习工作负载的首选:

您可以使用以下存储选项来补充 AI 和机器学习工作负载:

如果您需要在这些存储选项之间转移数据,可以使用数据传输工具

Cloud Storage

Cloud Storage 是一项全托管式对象存储服务,专注于非结构化数据的数据准备、AI 模型训练、数据传送、备份和归档。Cloud Storage 的一些优势包括:

  • 存储容量无限量,可在全球范围内扩展到 EB 级
  • 超高吞吐量性能
  • 适用于 AI 和机器学习工作负载的地区性存储方案和双区域存储方案

Cloud Storage 的吞吐量可扩展到每秒数十亿字节甚至更高,但其延迟时间(几十毫秒)相对 Filestore 或本地文件系统而言较长。单个线程的吞吐量限制为每秒大约 100-200 MB,这意味着只有使用数百到数千个单个线程才能实现高吞吐量。此外,高吞吐量还需要使用大型文件和大型 I/O 请求。

Cloud Storage 支持多种编程语言的客户端库,但也支持 Cloud Storage FUSE。借助 Cloud Storage FUSE,您可以将 Cloud Storage 存储桶装载到本地文件系统。借助 Cloud Storage FUSE,您的应用可以使用标准文件系统 API 从存储桶读取数据或向存储桶写入数据。您可以利用 Cloud Storage 的可伸缩性、经济性和性能,存储和访问训练数据、模型和检查点。

如需详细了解 Cloud Storage,请使用以下资源:

Filestore

Filestore 是一种基于 NFS 文件的全托管式存储服务。适用于 AI 和机器学习工作负载的 Filestore 服务层级包括:

  • 企业级:适用于需要区域可用性的任务关键型工作负载。
  • 可用区级:适用于需要可用区级高可用性且具有高 IOPS 和吞吐量性能要求的高性能应用。
  • 基本层级:适用于文件共享、软件开发、网站托管以及基本 AI 和机器学习工作负载。

Filestore 可提供低延迟 I/O 性能。对于 I/O 访问要求较小或文件较小的数据集,这是一个不错的选择。不过,Filestore 还可以根据需要处理大量 I/O 或大量文件用例。Filestore 的大小可扩容到大约 100 TB。对于反复读取数据的 AI 训练工作负载,您可以将 FS-Cache 与本地 SSD 搭配使用,以提高读取吞吐量。

如需详细了解 Filestore,请参阅 Filestore 概览。如需详细了解 Filestore 服务层级,请参阅服务层级。如需详细了解 Filestore 性能,请参阅优化和测试实例性能

Google Cloud NetApp Volumes

NetApp Volumes 是一项全托管式服务,具有支持 NFS、SMB 和多协议环境的高级数据管理功能。NetApp Volumes 支持低延迟、多兆字节的卷以及每秒数十亿字节的吞吐量。

如需详细了解 NetApp Volumes,请参阅 什么是 Google Cloud NetApp Volumes? 如需详细了解 NetApp Volumes 性能,请参阅预期性能

块存储

选择主存储空间选项后,您可以使用块存储来补充性能、在存储空间选项之间传输数据,并利用低延迟操作。您可以使用两种块存储方案:本地 SSD 和 Persistent Disk。

本地 SSD

本地 SSD 可直接向虚拟机或容器提供本地存储空间。大多数包含 Cloud GPU 的Google Cloud 机器类型都包含一定数量的本地 SSD。由于本地 SSD 磁盘以物理方式挂接到 Cloud GPU,因此可提供低延迟访问,并且可能达到数百万 IOPS。相比之下,基于 Cloud TPU 的实例不包含本地 SSD。

虽然本地 SSD 可提供高性能,但每个存储实例都是临时的。因此,当您停止或删除实例时,存储在本地 SSD 驱动器上的数据会丢失。由于本地 SSD 的临时性质,如果您的数据需要更好的持久性,请考虑使用其他类型的存储空间。

不过,如果训练数据量非常小,通常会将训练数据从 Cloud Storage 复制到 GPU 的本地 SSD。原因在于,本地 SSD 可缩短 I/O 延迟时间并减少训练时间。

如需详细了解本地 SSD,请参阅本地 SSD 简介。 如需详细了解 Cloud GPU 实例类型可用的本地 SSD 容量,请参阅 GPU 平台

Persistent Disk

Persistent Disk 是一项网络块存储服务,具有一整套数据持久性和管理功能。除了用作启动磁盘之外,您还可以将 Persistent Disk 与 AI 工作负载(例如临时存储空间)搭配使用。Persistent Disk 提供以下选项:

  • 标准,提供高效、可靠的块存储。
  • 平衡,提供经济实惠且可靠的块存储。
  • SSD,可提供快速可靠的块存储。
  • 极端,可提供最高性能的块存储选项,IOPS 可自定义。

如需详细了解永久性磁盘,请参阅永久性磁盘

数据传输工具

在执行 AI 和机器学习任务时,您有时需要将数据从一个位置复制到另一个位置。例如,如果您的数据最初位于 Cloud Storage 中,您可以将其移至其他位置以训练模型,然后将检查点快照或训练好的模型复制回 Cloud Storage。您也可以在 Filestore 中执行大多数任务,然后将数据和模型移至 Cloud Storage 以进行归档。本部分介绍了在Google Cloud中在存储服务之间移动数据的选项。

Storage Transfer Service

借助 Storage Transfer Service,您可以在 Cloud Storage、Filestore 和 NetApp Volumes 之间转移数据。借助这项完全代管式服务,您还可以在本地文件存储空间和对象存储库、Google Cloud 存储空间以及其他云服务提供商之间复制数据。借助 Storage Transfer Service,您可以将数据从源位置安全地复制到目标位置,还可以定期传输已更改的数据。它还提供数据完整性验证、自动重试和负载均衡。

如需详细了解 Storage Transfer Service,请参阅什么是 Storage Transfer Service?

命令行界面

在 Filestore 和 Cloud Storage 之间移动数据时,您应使用 Google Cloud CLI。借助 gcloud CLI,您可以使用最佳吞吐量和一整套命令创建和管理 Cloud Storage 存储分区和对象。

将存储选项映射到 AI 和机器学习阶段

本部分对表 1 中提供的摘要进行了扩展,探讨了 AI 和机器学习工作负载每个阶段的具体建议和指南。目的是帮助您了解这些选择的理由,并为每个 AI 和机器学习阶段选择最佳存储选项。此分析会产生三个主要建议,针对 AI 和机器学习的存储建议部分对这些建议进行了探讨。

下图提供了一个决策树,显示了 AI 和机器学习工作负载的四个主要阶段的推荐存储方案。该图表后面详细介绍了每个阶段以及您可在每个阶段做出的选择。

图 3:每个 AI 和机器学习阶段的存储选项

决策树,显示了 AI 和机器学习工作负载的四个主要阶段的推荐存储方案。

准备

在此初始阶段,您需要选择是将 Cloud Storage 还是 Filestore 用作数据的永久性真相来源。您还可以选择针对数据密集型训练的潜在优化。请注意,贵组织中的不同团队可能具有不同的工作负载和数据集类型,这可能会导致这些团队做出不同的存储决策。为了满足这些不同的需求,您可以相应地在 Cloud Storage 和 Filestore 之间混合使用存储空间选项。

准备阶段的 Cloud Storage

  • 您的工作负载包含 50 MB 或更大的大型文件。
  • 您的工作负载需要较低的 IOPS。
  • 您的工作负载可以容忍更高的存储延迟时间(几十毫秒)。

  • 您需要通过 Cloud Storage API 或 Cloud Storage FUSE 和部分文件 API 来访问数据集。

要优化 Cloud Storage 中的工作负载,您可以选择区域存储,并将存储桶放置在计算资源所在的区域中。不过,如果您需要更高的可靠性,或者使用位于两个不同区域的加速器,则应选择双区域存储。

准备阶段的文件存储空间

如果您符合以下任一条件,则应选择 Filestore 来准备数据:

  • 您的工作负载包含小于 50 MB 的文件。
  • 您的工作负载需要更高的 IOPS。
  • 您的工作负载需要延迟时间低于 1 毫秒,才能满足对随机 I/O 和元数据访问的存储要求。
  • 您的用户需要获得类似桌面设备的体验,并提供完整的 POSIX 支持,以便查看和管理数据。
  • 您的用户需要执行其他任务,例如软件开发。

准备阶段的其他注意事项

如果您在此阶段难以选择某个选项,请考虑以下几点来帮助您做出决定:

  • 如果要对数据集使用其他 AI 和机器学习框架(如 Dataflow、Spark 或 BigQuery),则 Cloud Storage 是一个逻辑选择,因为它与这些类型的框架具有自定义集成。
  • 文件存储空间的最大容量约为 100 TB。如果您需要使用大于此大小的数据集训练模型,或者无法将数据集拆分为多个 100 TB 的实例,则 Cloud Storage 是更好的选择。

在数据准备阶段,许多用户会将其数据重新整理为大分块,以提高访问效率并避免随机读取请求。为了进一步降低对存储系统的 I/O 性能要求,许多用户会使用流水线、训练优化来增加 I/O 线程数量,或者同时使用这两种方法。

训练

在训练阶段,您通常会重复使用为准备阶段选择的主存储空间选项。如果您的主存储选项无法单独处理训练工作负载,您可能需要补充主存储空间。您可以根据需要添加补充存储空间(例如本地 SSD),以平衡工作负载。

除了就目前使用 Cloud Storage 或 Filestore 提供建议外,本部分还会详细介绍这些建议。详细信息包括:

  • 文件大小和请求大小指南
  • 关于何时应补充主要存储空间选项的建议
  • 说明了此阶段两个关键工作负载(数据加载、检查点和重启)的实现细节

用于训练阶段的 Cloud Storage

在训练数据时选择 Cloud Storage 的主要原因包括:

  • 如果您在准备数据时使用 Cloud Storage,最好在 Cloud Storage 中训练数据。
  • Cloud Storage 非常适合需要高吞吐量、不需要高单个虚拟机吞吐量的工作负载,或者需要使用多个线程根据需要提高吞吐量的工作负载。

用于训练阶段、具有本地 SSD 的 Cloud Storage 或 Filestore

如果您需要支持较小的 I/O 请求或小文件,则在训练数据时可以选择具有本地 SSD 的 Cloud Storage 或 Filestore。在这种情况下,您可以通过将部分数据移动到本地 SSD 或 Filestore Zonal 来补充 Cloud Storage 训练任务。

用于训练阶段的 Filestore

在训练数据时选择 Filestore 的主要原因包括:

  • 如果您在准备数据时使用了 Filestore,在大多数情况下,您应继续在 Filestore 中训练数据。
  • Filestore 非常适合需要低延迟、高客户端吞吐量以及使用线程数量较少但仍需要高性能的应用。
  • 如果您需要在 Filestore 中补充训练任务,请根据需要考虑创建本地 SSD 缓存

文件大小和请求大小

数据集准备好进行训练后,有两个主要选项可帮助您评估不同的存储选项。

包含大型文件且通过大型请求访问的数据集

在此选项中,训练作业主要由 50 MB 或更大的文件组成。训练作业会为每个请求注入 1 MB 到 16 MB 的文件。对于此选项,我们通常建议搭配使用 Cloud Storage 和 Cloud Storage FUSE,因为文件足够大,Cloud Storage 应该能够持续提供加速器。请注意,使用此选项时,您可能需要数百到数千个线程才能实现最高性能。

不过,如果您需要为其他应用提供完整的 POSIX API,或者您的工作负载不适合需要大量线程,Filestore 是一个不错的替代方案。

包含中小型文件或通过小型请求访问的数据集

借助此选项,您可以通过以下两种方式之一对训练作业进行分类:

  • 许多小到中等大小的文件(小于 50 MB)。
  • 文件较大的数据集,但数据是顺序或随机读取的,并且读取请求大小相对较小(例如小于 1 MB)。此用例的一个示例是系统一次从数 GB 或数 TB 的文件中读取小于 100 KB 的数据。

如果您已经在使用 Filestore 的 POSIX 功能,我们建议您将数据保留在 Filestore 中以进行训练。Filestore 实现了低 I/O 延迟的数据访问。延迟时间缩短后,可以缩短总训练时间,并可能降低训练模型的费用。

如果您使用 Cloud Storage 存储数据,我们建议您在训练之前将数据复制到本地 SSD 或 Filestore。

数据加载

在数据加载期间,Cloud GPU 或 Cloud TPU 会反复导入批量数据来训练模型。此阶段可能易于缓存,具体取决于批次的大小以及请求它们的顺序。此时,您的目标是尽可能高效地训练模型,同时尽可能降低成本。

如果训练数据的大小扩展到 PB 级,则可能需要多次重新读取数据。如此规模的模型需要 GPU 或 TPU 加速器进行大量处理。不过,您需要确保 Cloud GPU 和 Cloud TPU 不是处于空闲状态,而是积极处理数据。否则,在将数据从一个位置复制到另一个位置时,您需要为昂贵的空闲加速器支付费用。

对于数据加载,请考虑以下事项:

  • 并行性:有多种方法可用于并行训练,并且每种方法都会影响所需的整体存储性能以及在每个实例上本地缓存数据的必要性。
  • 单个训练作业的 Cloud GPU 或 Cloud TPU 的数量上限:随着加速器和虚拟机数量的增加,对存储系统的影响可能会变得巨大;如果 Cloud GPU 或 Cloud TPU 空闲,可能会导致费用增加。不过,您可以通过一些方法,在增加加速器数量时尽可能降低费用。根据您使用的并行类型,您可以通过提高避免加速器空闲所需的总读取吞吐量要求,最大限度地降低费用。

如需在 Cloud Storage 或 Filestore 中支持这些改进,您需要向每个实例添加本地 SSD,以便从过载的存储系统中卸载 I/O。

不过,从 Cloud Storage 将数据预加载到每个实例的本地 SSD 中也有其自身的挑战。在数据传输期间,您可能会因闲置加速器而增加费用。如果数据传输时间和加速器空闲费用较高,您或许可以改用 Filestore 与本地 SSD 搭配使用,从而降低费用。

  • 每个实例的 Cloud GPU 数量:向每个实例部署更多 Cloud GPU 时,您可以使用 NVLink 提高 Cloud GPU 之间的吞吐量。不过,可用的本地 SSD 和存储网络吞吐量并不总是线性增加。
  • 存储空间和应用优化:存储空间选项和应用需要满足特定的性能要求才能以最佳方式运行。请务必平衡这些存储和应用系统要求与数据加载优化,例如让 Cloud GPU 或 Cloud TPU 保持繁忙状态并高效运行。

检查点和重启

如需进行检查点和重启,训练作业需要定期保存其状态,以便从实例故障中快速恢复。发生故障时,作业必须重启,注入最新的检查点,然后恢复训练。用于创建和注入检查点的确切机制通常特定于框架,例如 TensorFlow 或 PyTorch。有些用户构建了复杂的框架来提高检查点的效率。这些复杂框架支持更频繁地执行检查点。

不过,大多数用户通常使用共享存储空间,例如 Cloud Storage 或 Filestore。保存检查点时,您只需在任何一个时间点保存三到五个检查点。检查点工作负载通常主要由写入、多次删除操作组成,并且最好在发生故障时进行不频繁的读取。在恢复期间,I/O 模式包括对检查点进行大量频繁写入、频繁删除和频繁读取。

您还需要考虑每个 GPU 或 TPU 需要创建的检查点的大小。检查点大小决定了以经济高效的方式及时完成训练作业所需的写入吞吐量。

为尽可能降低费用,请考虑增加以下项目:

  • 检查点的频率
  • 检查点所需的汇总写入吞吐量
  • 重启效率

服务

当您应用模型(也称为 AI 推理)时,主要 I/O 模式为只读,用于将模型加载到 Cloud GPU 或 Cloud TPU 内存中。您在此阶段的目标是在生产环境中运行模型。该模型比训练数据小得多,因此您可以跨多个实例复制和扩缩该模型。在此阶段,高可用性和防范可用区级和区域级故障至关重要,因此您必须确保您的模型能够应对各种故障场景。

对于许多生成式 AI 应用场景,模型的输入数据可能非常小,并且可能不需要持久存储。在其他情况下,您可能需要对模型运行大量数据(例如科学数据集)。在这种情况下,您需要选择一个选项,以便在分析数据集期间保留提供的 Cloud GPU 或 Cloud TPU,以及选择一个永久性位置来存储推理结果。

在部署模型时,您有两种主要选择。

用于投放阶段的 Cloud Storage

在分发数据时选择 Cloud Storage 的主要原因包括:

  • 在 Cloud Storage 中训练模型时,您可以在部署模型时将其保留在 Cloud Storage 中,从而节省迁移费用。
  • 您可以将生成的内容保存在 Cloud Storage 中。
  • 如果在多个区域中进行 AI 推理,Cloud Storage 是一个不错的选择。
  • 您可以使用双区域和多区域存储桶在发生单区域故障时提供模型可用性。

用于传送阶段的 Filestore

在分发数据时选择 Filestore 的主要原因包括:

  • 在 Filestore 中训练模型时,您可以在部署模型时将其保留在 Filestore 中,从而节省迁移费用。
  • 由于其服务等级协议 (SLA) 提供 99.99% 的可用性,因此,如果您希望在区域中的多个可用区之间传送模型,则 Filestore Enterprise 服务层级是实现高可用性的理想选择。

  • Filestore Zonal 服务层级可能是合理的低费用选择,但前提是 AI 和机器学习工作负载不需要高可用性。

  • 如果需要跨区域恢复,您可以将模型存储在远程备份位置或远程 Cloud Storage 存储桶中,然后根据需要恢复模型。

  • Filestore 提供一种持久且高度可用的选项,可在您生成小文件或需要文件 API 时实现低延迟的模型访问。

归档

归档阶段的 I/O 模式为“写入一次,很少读取”。您的目标是存储您生成的不同组训练数据和不同版本的模型。您可以将这些增量版本的数据和模型用于备份和灾难恢复目的。您还必须将这些项长期存储在耐用的位置。虽然您可能不需要经常访问数据和模型,但您希望在需要时能够使用这些内容。

由于其极高的耐用性、极大的规模和低廉的费用,Cloud Storage 是长期存储对象数据的最佳选择。根据您访问数据集、模型和备份文件的频率,Cloud Storage 会通过以下方法利用不同的存储类别来优化费用:

  • 将经常访问的数据存储在标准存储空间中。
  • 将您每月访问的数据存储在 Nearline 存储空间中。
  • 将您每三个月访问一次的数据存储在 Coldline 存储空间中。
  • 将您每年访问一次的数据保留在归档存储空间中。

借助对象生命周期管理,您可以创建政策,以便根据特定条件将数据移至较冷的存储类别或删除数据。如果您不确定访问数据的频率,可以使用 Autoclass 功能根据您的访问模式自动在存储类别之间移动数据。

如果您的数据存储在 Filestore 中,通常有必要将这些数据移至 Cloud Storage 以进行归档。不过,您可以通过在其他区域创建 Filestore 备份,为 Filestore 数据提供额外的保护。您还可以为本地文件和文件系统恢复创建 Filestore 快照。如需详细了解 Filestore 备份,请参阅备份概览。如需详细了解 Filestore 快照,请参阅快照概览

针对 AI 和机器学习的存储建议

本部分总结了上一部分(将存储选项映射到 AI 和机器学习阶段)中提供的分析。其中详细介绍了我们为大多数 AI 和机器学习工作负载推荐的三个主要存储选项组合。这三个选项如下所示:

选择 Cloud Storage

与所有其他存储服务相比,Cloud Storage 提供最低每容量费用的存储服务。它可扩展到大量客户端,提供区域级和双区域访问权限和可用性,并且可以通过 Cloud Storage FUSE 访问。如果用于训练的计算平台位于同一区域,您应选择区域存储;如果您需要更高的可靠性,或者使用位于两个不同区域的 Cloud GPU 或 Cloud TPU,则应选择双区域存储。

Cloud Storage 最适合长期保留数据,以及对存储性能要求较低的工作负载。不过,在特定情况下,如果您需要完整的 POSIX 支持或 Cloud Storage 成为性能瓶颈,Filestore 和本地 SSD 等其他方案也是不错的替代方案。

选择具有本地 SSD 的 Cloud Storage 或 Filestore

对于数据密集型训练或检查点和重启工作负载,在 I/O 密集型训练阶段使用更快的存储服务会很有帮助。常见的选择包括将数据复制到本地 SSD 或 Filestore。此操作通过为 Cloud GPU 或 Cloud TPU 提供数据来缩短作业的总运行时间,并防止实例在完成检查点操作时停止运行。此外,您创建检查点的频率越高,可用作备份的检查点就越多。备份数量的增加也会提高有用数据到达的总体速率(也称为 goodput)。优化处理器和提高 goodput 的这种结合可以降低训练模型的总费用。

使用本地 SSD 或 Filestore 时,需要考虑一些权衡。以下部分介绍了每种方法的一些优缺点。

本地 SSD 优势

  • 数据传输完成后,高吞吐量和 IOPS
  • 额外费用很低或几乎没有

本地 SSD 的缺点

  • 在数据加载期间,Cloud GPU 或 Cloud TPU 会保持空闲状态。
  • 必须针对每个实例的每项作业进行数据传输。
  • 仅适用于部分 Cloud GPU 实例类型。
  • 提供的存储空间有限。
  • 支持检查点,但您必须手动将检查点转移到持久性存储选项(例如 Cloud Storage)。

Filestore 优势

  • 提供共享 NFS 存储,可将数据传输一次,然后在多个作业和用户之间共享。
  • 由于数据是在您付费使用 Cloud GPU 或 Cloud TPU 之前传输的,因此不会有 Cloud GPU 或 Cloud TPU 空闲时间。
  • 具有较大的存储容量。
  • 支持对数千个虚拟机进行快速检查点。
  • 支持 Cloud GPU、Cloud TPU 和所有其他 Compute Engine 实例类型。

Filestore 的缺点

  • 前期费用较高;但计算效率的提高有望降低总体训练费用。

选择 Filestore(可选本地 SSD)

Filestore 非常适合需要低延迟和完整 POSIX 支持的 AI 和机器学习工作负载。除了是小文件或小 I/O 训练作业的推荐选择之外,Filestore 还可以为 AI 和机器学习笔记本、软件开发和许多其他应用提供响应迅速的体验。您还可以在可用区部署 Filestore,以实现高性能训练和检查点的永久存储。在可用区部署 Filestore 还可在发生故障时快速重启。或者,您也可以在区域范围内部署 Filestore 以支持高可用性推理作业。可选添加 FS-Cache 以支持本地 SSD 缓存,从而实现对训练数据的快速重复读取,以优化工作负载。

后续步骤

如需详细了解存储选项以及 AI 和机器学习,请参阅以下资源:

贡献者

作者:

其他创作贡献者:Kumar Dhanagopal | 跨产品解决方案开发者