为 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 和机器学习 I/O 请求大小和文件大小是小、中还是大?
  • 您的 AI 和机器学习工作负载是否对 I/O 延迟时间和第一字节时间 (Time to First Byte) (TTFB) 敏感?
  • 您是否需要单个客户端和/或聚合客户端的高读写吞吐量?
  • 您的单个最大的 AI 和机器学习训练工作负载需要的最大 Cloud GPU 或 Cloud TPU 数量是多少?

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

计算平台注意事项

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

对于 Compute Engine 和 GKE,我们建议使用 HPC Toolkit 部署遵循 Google Cloud 最佳做法的可重复的一站式集群。

加速器注意事项

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

Cloud GPU 与 Cloud TPU 加速器之间存在一些重要的存储差异。使用 Cloud GPU 的实例支持具有高达 200 GBps 的远程存储吞吐量的本地 SSD。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)。
  • 用于保存数据的永久性存储空间。
  • 吞吐量为每秒 TB 级,但需要更长的存储延迟时间。

如果您需要文件存储,则有两个选择:Filestore 和 NetApp Volumes,它们提供以下功能:

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

将以下存储方案用作 AI 和机器学习工作负载的首选存储方案:

使用以下存储方案来补充 AI 和机器学习工作负载:

如果您需要在这些存储方案之间转移数据,则可以使用数据转移工具

Cloud Storage

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

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

Cloud Storage 可将吞吐量扩大到每秒 TB 级或更高,但与 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 工作负载(例如暂存存储空间)搭配使用。永久性磁盘在以下选项中可用:

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

如需详细了解 Persistent Disk,请参阅 Persistent Disk

数据转移工具

在执行 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 之间移动数据时,您可以使用以下工具:

  • gcloud storage(推荐):使用最佳吞吐量和一整套 gcloud CLI 命令创建和管理 Cloud Storage 存储桶和对象。
  • gsutil:管理和维护 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

如果满足以下任一条件,您应该选择 Filestore 来准备数据:

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

准备阶段的其他注意事项

如果您发现在该阶段很难选择方案,请考虑以下几点以帮助您做出决定:

  • 如果要对数据集使用其他 AI 和机器学习框架(如 Dataflow、Spark 或 BigQuery),则 Cloud Storage 是一个逻辑选择,因为它与这些类型的框架具有自定义集成。
  • Filestore 的最大容量约为 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。Cloud Storage 会根据您访问数据集、模型和备份文件的频率,使用以下方法通过不同存储类别提供费用优化功能:

  • 将您经常访问的数据放在 Standard Storage 中。
  • 将您每月访问的数据保存在 Nearline Storage 中。
  • 将您每 3 个月访问一次的数据存储在 Coldline Storage 中。
  • 在 Archive Storage 中保留您每年访问一次的数据。

使用对象生命周期管理,您可以创建政策以将数据移至较冷的存储类别,或者根据特定条件删除数据。如果您不确定访问数据的频率,可以使用 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 缺点

  • 预付费用较高;但计算效率提高有可能降低整体训练费用。

选择具有可选本地 SSD 的 Filestore

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

后续步骤

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

贡献者

作者:

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