选择合适的存储配置对于训练集群的性能和稳定性至关重要。该服务与两种不同的高性能存储解决方案集成:
- Filestore:一种必需的托管式文件服务,可为集群中的所有节点提供共享
/home目录。 - Google Cloud Managed Lustre:一种可选的并行文件系统,旨在提供出色的 I/O 性能,非常适合用于对海量数据集进行训练。
本页概述了这些加速器的主要用途,并简要介绍了成功与集集群成所需的特定网络和部署要求。
训练集群的存储集成
Vertex AI 训练集群依赖于特定的联网存储解决方案来运行。Filestore 是为集群提供共享 /home 目录所必需的,而 Managed Lustre 是一种可选的高性能文件系统,适用于要求严苛的工作负载。
在部署集群之前,务必正确配置这些存储服务的网络。
用于主目录的 Filestore
此服务使用 Filestore 实例为集群提供共享 /home 目录。为确保正常连接,您必须按以下特定顺序创建云资源:
- 创建 VPC 网络:首先,部署一个配置了建议 MTU(例如 8896)的 VPC 网络。
- 创建 Filestore 实例:接下来,将 Filestore 实例部署到您刚刚创建的 VPC 中。
- 创建训练集群:最后,部署集群,然后该集群将能够连接到同一网络中的 Filestore 实例。
Google Cloud Managed Lustre,适用于高性能工作负载
对于需要最高 I/O 性能的工作负载,您可以挂接 Managed Lustre 文件系统。此服务使用专用服务访问通道连接到您的 VPC。
关键网络限制:不支持传递性对等互连
Filestore 和 Google Cloud Managed Lustre 的一个严重限制是,它们不支持传递性对等互连。这意味着只有直接连接的 VPC 内的资源才能访问存储服务。例如,如果集群的 VPC (N1) 与存储服务对等互连,则与 N1 对等互连的另一个 VPC (N2) 将无法访问该存储服务。
训练集群的存储集成
Vertex AI 训练集群依赖于特定的联网存储解决方案来运行。Filestore 是为集群提供共享 /home 目录所必需的,而 Google Cloud Managed Lustre 是一种可选的高性能文件系统,适用于要求严苛的工作负载。在部署集群之前,务必正确配置这些存储服务的网络。
Filestore
将 Filestore 与训练集群搭配使用的主要用途
除了作为必需的主目录之外,Filestore 还提供了一种灵活的方式来与集群共享数据。
额外的共享存储空间:您可以将一个或多个额外的 Filestore 实例附加到任何节点池。这对于向训练作业提供共享数据集、应用二进制文件或其他常用文件非常有用。如果在节点池配置中指定了这些实例,训练集群会自动将这些实例装载到每个节点上的 /mnt/filestore 目录中。
Filestore 要求
若要成功将 Filestore 与训练集群集成,需要进行以下配置:
- 启用 API:您必须先在 Google Cloud 项目中启用 Filestore API,然后才能创建集群。
- 必需的
/home目录:每个训练集群都需要一个专用 Filestore 实例作为共享/home目录。此实例具有特定的配置要求:- 网络:必须与集群的计算节点和登录节点位于同一 VPC 网络中。
- 位置:必须与集群位于同一区域或可用区。
- 配置:通过 API 创建集群时,您必须在
字段中指定此实例的完整资源名称。orchestrator_spec.slurm_spec.home_directory_storage
配置 Filestore 存储空间
在要创建集群的可用区中创建可用区级或区域级 Filestore 实例。Vertex AI API 要求将 Filestore 附加到集群,充当 /home 目录。此 Filestore 必须与所有计算节点和登录节点位于同一可用区或区域以及同一网络中。在下例中,172.16.10.0/24 用于 Filestore 部署。
SERVICE_TIER=ZONAL # Can use BASIC_SSD # Create reserved IP address range gcloud compute addresses create CLUSTER_IDfs-ip-range \ --project=PROJECT_ID \ --global \ --purpose=VPC_PEERING \ --addresses=172.16.10.0 \ --prefix-length=24 \ --description="Filestore instance reserved IP range" \ --network=NETWORK # Get the CIDR range FS_IP_RANGE=$( gcloud compute addresses describe CLUSTER_IDfs-ip-range \ --global \ --format="value[separator=/](address, prefixLength)" ) # Create the Filestore instance gcloud filestore instances create FS_INSTANCE_ID \ --project=PROJECT_ID \ --location=ZONE \ --tier=ZONAL \ --file-share=name="nfsshare",capacity=1024 \ --network=name=NETWORK,connect-mode=DIRECT_PEERING,reserved-ip-range="${FS_IP_RANGE}"
Lustre
Google Cloud Managed Lustre 提供了一种高性能、全托管式并行文件系统,可针对 AI 和 HPC 应用进行优化。Managed Lustre 具有 PB 级容量和高达 1 TBps 的吞吐量,可帮助您将要求苛刻的工作负载迁移到云端。
托管 Lustre 实例位于区域内的各个可用区中。区域是指您可以在其中运行资源的特定地理位置。每个区域都被划分为几个可用区。例如,美国中部的 us-central1 区域有 us-central1-a、us-central1-b、us-central1-c 和 us-central1-f 这四个可用区。如需了解详情,请参阅地理位置和区域。
为降低网络延迟,建议在计划使用托管 Lustre 实例的地点附近的区域和可用区创建该实例。
创建受管理的 Lustre 实例时,您必须定义以下属性:
- Google Cloud 使用的实例的名称。
- 客户端工具使用的文件系统名称,例如
lfs。 - 存储空间容量,以吉比字节 (GiB) 为单位。容量范围可以从 9,000 GiB 到大约 8 PiB(7,632,000 GiB)。实例的最大大小取决于其性能层级。
- Managed Lustre 提供从每 TiB 125 MBps 到每 TiB 1000 MBps 的性能层级。
- 为获得最佳性能,请在与训练集群相同的可用区中创建实例。
- 此实例的 VPC 网络必须与训练集群所用的 VPC 网络相同。
Managed Lustre 提供 4 个性能层级,每个层级具有不同的每 TiB 最大吞吐速度。性能层级还会影响最小和最大实例大小,以及可接受的容量值之间的步长。实例创建后,您便无法更改其实例性能层级。
部署 Managed Lustre 需要专用服务访问通道,该通道使用专用 /20 子网在训练集群的 VPC 与托管 Managed Lustre 的 VPC 之间建立 VPC 对等互连。
配置 Managed Lustre 实例(可选)
仅当您想在模型开发服务中使用 Managed Lustre 时,才使用 Google Cloud Managed Lustre。
Google Cloud Managed Lustre 是 Google Cloud 上的一项全托管式高性能并行文件系统服务。它专为加速 AI/机器学习和高性能计算 (HPC) 领域的要求严苛的工作负载而设计。
为了在使用训练集群时获得最佳性能,应使用 VPC 对等互连从与训练集群相同的 VPC 和可用区部署 Google Cloud Managed Lustre,以实现服务联网。
创建 Lustre 实例
gcloud lustre instances create LUSTRE_INSTANCE_ID \
--project=PROJECT_ID \
--location=ZONE \
--filesystem=lustrefs \
--per-unit-storage-throughput=500 \
--capacity-gib=36000 \
--network=NETWORK_NAME
Cloud Storage 装载
作为前提条件,请确保虚拟机服务账号具有 Storage Object User 角色。
默认装载
Vertex AI 训练集群使用 Cloud Storage FUSE 在所有登录节点和计算节点上动态装载您的 Cloud Storage 存储桶,使其可在 /gcs 目录下访问。无法从根装载点 /gcs 列出动态装载的存储桶。您可以将动态装载的存储桶作为子目录进行访问:
user@testcluster:$ ls /gcs/your-bucket-name
user@testcluster:$ cd /gcs/your-bucket-name
自定义装载
如需使用自定义选项将特定 Cloud Storage 存储桶装载到本地目录,请使用以下命令结构,方法是在创建集群时将其作为启动脚本的一部分传递,或者在创建集群后直接在节点上运行。
sudo mkdir -p $MOUNT_DIR
echo "$GCS_BUCKET $MOUNT_DIR gcsfuse $OPTION_1,$OPTION_2,..." | sudo tee -a /etc/fstab
sudo mount -a
例如,如需将存储桶 mtdata 装载到 /data 目录,请使用以下命令:
sudo mkdir -p /data
echo "mtdata /data gcsfuse defaults,_netdev,implicit_dirs,allow_other,dir_mode=777,file-mode=777,metadata_cache_negative_ttl_secs=0,metadata_cache_ttl_secs=-1,stat_cache_max_size_mb=-1,type_cache_max_size_mb=-1,enable_streaming_writes=true" | sudo tee -a /etc/fstab
sudo mount -a
如需实现完全自动化且一致的设置,请将自定义装载脚本包含在集群的启动脚本中。此实践可确保您的 Cloud Storage 存储桶在启动时自动装载到所有节点,从而无需手动配置。
如需了解针对 AI/机器学习工作负载量身定制的其他配置建议,请参阅性能调优最佳实践指南。其中提供了有关优化 Cloud Storage FUSE 以进行训练、推理和设置检查点的具体指南。
后续步骤
接下来的步骤将重点介绍如何有效地使用集群进行大规模训练。
- 调整代码以进行分布式训练:为了充分利用多节点集群和高性能存储,请调整训练代码以适应分布式环境。
- 使用 Vertex AI Pipelines 编排作业:对于生产工作流,请使用 Vertex AI Pipelines 自动执行数据准备、作业提交和模型注册流程。
- 监控和调试训练作业:跟踪分布式训练作业的进度和资源利用率,以发现并解决问题。