適切なストレージ構成を選択することは、トレーニング クラスタのパフォーマンスと安定性にとって重要です。このサービスは、以下の 2 つの異なる高性能ストレージ ソリューションと統合されています。
- Filestore: クラスタ内のすべてのノードに共有
/homeディレクトリを提供する必須のマネージド ファイル サービス。 - Google Cloud Managed Lustre: 大規模なデータセットのトレーニングに最適な、極端な I/O パフォーマンス向けに設計されたオプションの並列ファイル システム。
このページでは、主な用途の概要と、クラスタとのインテグレーションを成功させるためのネットワーキングとデプロイの具体的な要件について説明します。
トレーニング クラスタのストレージ統合
Vertex AI トレーニング クラスタは、特定のネットワーク ストレージ ソリューションに依存しています。Filestore は、クラスタの共有 /home ディレクトリを提供するために必要です。一方、Managed Lustre は、要求の厳しいワークロード向けのオプションの高パフォーマンス ファイル システムです。
クラスタをデプロイする前に、これらのストレージ サービスのネットワーキングを正しく構成することが重要です。
ホーム ディレクトリ用の Filestore
このサービスは、Filestore インスタンスを使用して、クラスタの共有 /home ディレクトリを提供します。接続を適切に行うには、次の順序でクラウド リソースを作成する必要があります。
- VPC ネットワークを作成する: まず、推奨される MTU(8896 など)で構成された VPC ネットワークをデプロイします。
- Filestore インスタンスを作成する: 次に、作成した VPC に Filestore インスタンスをデプロイします。
- トレーニング クラスタを作成する: 最後に、クラスタをデプロイします。これにより、同じネットワーク内の 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-a、us-central1-b、us-central1-c、us-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 を最適化するための具体的なガイダンスを提供します。
次のステップ
次のステップでは、作成したクラスタを大規模なトレーニングに効果的に使用することに焦点を当てます。
- コードを分散トレーニング用に調整する: マルチノード クラスタと高性能ストレージを最大限に活用するには、トレーニング コードを分散環境用に調整します。
- Vertex AI Pipelines を使用してジョブをオーケストレートする: 本番環境のワークフローについて、Vertex AI Pipelines を使用してデータの準備、ジョブの送信、モデル登録のプロセスを自動化します。
- トレーニング ジョブをモニタリングしてデバッグする: 分散トレーニング ジョブの進行状況とリソース使用率を追跡し、問題を特定して解決します。