Cloud Storage をマウント ファイル システムとして使用する

Cloud Storage FUSE を使用すると、トレーニング データを Cloud Storage バケットに読み込んで、カスタム トレーニング ジョブから、マウントされたファイル システムのようにそのデータにアクセスできます。Cloud Storage FUSE を使用すると、次のようなメリットがあります。

  • トレーニング データは、レプリカにダウンロードされるのではなくトレーニング ジョブにストリーミングされます。これにより、ジョブの開始時にデータの読み込みと設定タスクをより高速に行えます。
  • トレーニング ジョブでは、API 呼び出しの実行、レスポンスの処理、クライアントサイド ライブラリとの統合を行うことなく、入出力を大規模に処理できます。
  • Cloud Storage FUSE は、大規模なファイルの順次読み取りや分散トレーニングのシナリオで、高スループットを実現します。

ユースケース

次のような場合は、トレーニング データの保存に Cloud Storage を使用することをおすすめします。

  • トレーニング データが、画像、テキスト、動画などの非構造化データである。
  • トレーニング データが、TFRecord などの形式の構造化データである。
  • トレーニング データに、未加工の動画などサイズの大きなファイルが含まれている。
  • 分散トレーニングを使用する。

仕組み

カスタム トレーニング ジョブは、ルート /gcs ディレクトリのサブディレクトリとして Cloud Storage バケットにアクセスできます。たとえば、トレーニング データが gs://example-bucket/data.csv にある場合は、次のように Python トレーニング アプリケーションからバケットの読み取りと書き込みを行えます。

バケットに対する読み取り

with open('/gcs/example-bucket/data.csv', 'r') as f:
  lines = f.readlines()

バケットへの書き込み

with open('/gcs/example-bucket/epoch3.log', 'a') as f:
  f.write('success!\n')

バケットのアクセス権限

デフォルトでは、カスタム トレーニング ジョブは、Vertex AI カスタムコード サービス エージェントを使用して、同じ Google Cloud プロジェクト内の任意の Cloud Storage バケットにアクセスできます。バケットへのアクセスを制御するには、ジョブにカスタム サービス アカウントを割り当てます。この場合、Cloud Storage バケットへのアクセス権は、カスタム サービス アカウントの Cloud Storage ロールに関連付けられた権限に基づいて付与されます。

たとえば、カスタム トレーニング ジョブに、バケット A に対する読み取りと書き込みのアクセス権を付与し、バケット B に対する読み取りアクセス権のみを付与する場合は、次のロールを持つカスタム サービス アカウントをジョブに割り当てることができます。

  • roles/storage.objectAdmin(バケット A 用)
  • roles/storage.objectViewer(バケット B 用)

トレーニング ジョブがバケット B に書き込もうとすると、「アクセスが拒否されました」というエラーが返されます。

Cloud Storage ロールの詳細については、Cloud Storage に適用される IAM ロールをご覧ください。

ベスト プラクティス

  • ディレクトリ名を変更することは避けてください。名前を変更するオペレーションは、Cloud Storage FUSE ではアトミックではありません。オペレーションが中断されると、一部のファイルが古いディレクトリに残ります。
  • 不必要に終了(close())することや、ファイルをフラッシュ(flush())することは避けてください。ファイルを閉じるかフラッシュすると、ファイルが Cloud Storage に push され費用が発生します。

パフォーマンス最適化のガイドライン

Cloud Storage をファイル システムとして使用する際に最適な読み取りスループットを得るには、次のガイドラインを実施することをおすすめします。

  • バケット内のオブジェクトを検索して開くことで生じるレイテンシを短縮するには、データを保存するファイルのサイズを大きくし、ファイルの数を少なくします。
  • 分散トレーニングを使用して帯域幅の使用率を最大化します。
  • アクセス頻度が高いファイルをキャッシュに保存して、読み取りパフォーマンスを改善します。詳細については、Cloud Storage FUSE でのキャッシュ保存の概要をご覧ください。
  • チェックポイントとログには、Cloud Storage ではなくローカル ストレージを使用します。

制限事項

Cloud Storage FUSE と POSIX のファイル システムの違いなど、Cloud Storage FUSE の制限については、POSIX ファイル システムの制限事項と相違点をご覧ください。

Cloud Storage FUSE を使用する

カスタム トレーニングに Cloud Storage FUSE を使用するには、次の操作を行います。

  1. Cloud Storage バケットを作成します
  2. トレーニング データをバケットにアップロードします。詳しくは、アップロードをご覧ください。

    Cloud Storage にデータを転送するための他のオプションについては、データ転送オプションをご覧ください。

  3. Cloud Storage FUSE をインストールします

  4. トレーニング アプリケーションにバケットをマウントします

次のステップ