Storage

Vertex AI トレーニング クラスタに関心をお持ちの場合は、営業担当者にお問い合わせください。

適切なストレージ構成を選択することは、トレーニング クラスタのパフォーマンスと安定性にとって重要です。このサービスは、以下の 2 つの異なる高性能ストレージ ソリューションと統合されています。

  • Filestore: クラスタ内のすべてのノードに共有 /home ディレクトリを提供する必須のマネージド ファイル サービス。
  • Google Cloud Managed Lustre: 大規模なデータセットのトレーニングに最適な、極端な I/O パフォーマンス向けに設計されたオプションの並列ファイル システム。

このページでは、主な用途の概要と、クラスタとのインテグレーションを成功させるためのネットワーキングとデプロイの具体的な要件について説明します。

トレーニング クラスタのストレージ統合

Vertex AI トレーニング クラスタは、特定のネットワーク ストレージ ソリューションに依存しています。Filestore は、クラスタの共有 /home ディレクトリを提供するために必要です。一方、Managed Lustre は、要求の厳しいワークロード向けのオプションの高パフォーマンス ファイル システムです。

クラスタをデプロイする前に、これらのストレージ サービスのネットワーキングを正しく構成することが重要です。

ホーム ディレクトリ用の Filestore

このサービスは、Filestore インスタンスを使用して、クラスタの共有 /home ディレクトリを提供します。接続を適切に行うには、次の順序でクラウド リソースを作成する必要があります。

  1. VPC ネットワークを作成する: まず、推奨される MTU(8896 など)で構成された VPC ネットワークをデプロイします。
  2. Filestore インスタンスを作成する: 次に、作成した VPC に Filestore インスタンスをデプロイします。
  3. トレーニング クラスタを作成する: 最後に、クラスタをデプロイします。これにより、同じネットワーク内の 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 は、必須のホーム ディレクトリとしての役割だけでなく、クラスタとデータを共有する柔軟な方法も提供します。
追加の共有ストレージ: 1 つ以上の追加の Filestore インスタンスを任意のノードプールに接続できます。これは、共有データセット、アプリケーション バイナリ、その他の一般的なファイルをトレーニング ジョブに提供する場合に役立ちます。ノードプール構成で指定すると、トレーニング クラスタはこれらのインスタンスを各ノードの /mnt/filestore ディレクトリに自動的にマウントします。

Filestore の要件

トレーニング クラスタと Filestore インテグレーションを成功させるには、次の構成が必要です。

  • API を有効にする: クラスタを作成する前に、Google Cloud プロジェクトで Filestore API を有効にする必要があります。
  • 必須の /home ディレクトリ: すべてのトレーニング クラスタには、共有 /home ディレクトリとして機能する専用の Filestore インスタンスが必要です。このインスタンスには、特定の構成要件があります。
    • ネットワーク: クラスタのコンピューティング ノードとログインノードと同じ VPC ネットワークに存在する必要があります。
    • ロケーション: クラスタと同じリージョンまたはゾーンに配置する必要があります。
    • 構成: API を介してクラスタを作成するときに、orchestrator_spec.slurm_spec.home_directory_storage フィールドでこのインスタンスの完全なリソース名を指定する必要があります。

Filestore ストレージを構成する

クラスタを作成するゾーンに、ゾーンまたはリージョンの Filestore インスタンスを作成します。Vertex AI API では、/home ディレクトリとして機能する Filestore をクラスタに接続する必要があります。この Filestore は、すべてのコンピューティング ノードとログインノードと同じゾーンまたはリージョンに存在し、同じネットワークに存在する必要があります。次の例では、Filestore デプロイに 172.16.10.0/24 が使用されています。

    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 は、マルチペタバイト規模の容量と最大 1 TBps のスループットにより、要求の厳しいワークロードのクラウドへの移行を容易にします。

Managed Lustre インスタンスは、リージョン内のゾーンに存在します。リージョンとは、リソースを実行できる特定の地理的な場所です。各リージョンは、複数のゾーンに分割されています。たとえば、米国中部の us-central1 リージョンには、ゾーン us-central1-aus-central1-bus-central1-cus-central1-f があります。詳細については、地域とリージョンをご覧ください。

ネットワーク レイテンシを短縮するには、使用する予定の場所に近いリージョンとゾーンに Managed Lustre インスタンスを作成することをおすすめします。

Managed Lustre インスタンスを作成するときは、次のプロパティを定義する必要があります。

  • Google Cloud で使用されるインスタンスの名前。
  • クライアントサイド ツールで使用されるファイル システム名(lfs など)。
  • ストレージ容量(ギビバイト(GiB)単位)。容量は 9,000 GiB~約 8 PiB(7,632,000 GiB)の範囲で指定できます。インスタンスの最大サイズは、パフォーマンス ティアによって異なります。
  • Managed Lustre には、TiB あたり 125 MBps から TiB あたり 1,000 MBps までのパフォーマンス ティアが用意されています。
  • パフォーマンスを最大限に高めるには、トレーニング クラスタと同じゾーンにインスタンスを作成します。
  • このインスタンスの VPC ネットワークは、トレーニング クラスタで使用しているものと同じでなければなりません。

Managed Lustre には 4 つのパフォーマンス ティアがあり、それぞれ TiB あたりの最大スループット速度が異なります。パフォーマンス ティアは、インスタンスの最小サイズと最大サイズ、許容可能な容量値間のステップサイズにも影響します。インスタンスの作成後にパフォーマンス ティアを変更することはできません。

Managed Lustre をデプロイするには、プライベート サービス アクセスが必要です。これにより、専用の /20 サブネットを使用して、トレーニング クラスタの VPC と Managed Lustre をホストする VPC の間に VPC ピアリングが確立されます。

Managed Lustre インスタンスを構成する(省略可)

Model Development Service で Managed Lustre を使用する場合にのみ、Google Cloud Managed Lustre を使用します。

Google Cloud Managed Lustre は、Google Cloud 上のフルマネージドの高パフォーマンス並列ファイル システム サービスです。これは、AI / ML とハイ パフォーマンス コンピューティング(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 のマウント

前提条件として、VM サービス アカウントにストレージ オブジェクト ユーザー ロールがあることを確認します。

デフォルトのマウント

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/ML ワークロードに合わせた構成に関するその他の推奨事項については、パフォーマンス チューニングのベスト プラクティス ガイドをご覧ください。トレーニング、推論、チェックポイント設定用に Cloud Storage FUSE を最適化するための具体的なガイダンスを提供します。

次のステップ

次のステップでは、作成したクラスタを大規模なトレーニングに効果的に使用することに焦点を当てます。