Cloud Storage バケットへの接続

このページでは、ML データとトレーニング出力の保存先として Cloud Storage を紹介し、Cloud Storage 上のデータ オブジェクトに Cloud TPU からアクセスできるようにする方法について説明します。

始める前に

Cloud Storage バケットにアクセスするには、Cloud TPU サービス アカウントが必要です。

  1. プロジェクトの Cloud TPU サービス アカウントを作成します。

    gcloud beta services identity create --service tpu.googleapis.com --project project-id

    このコマンドでは、Cloud TPU サービス アカウントを次の形式で返します。

    service-project-number@cloud-tpu.iam.gserviceaccount.com
    
  2. Cloud TPU クイックスタート ガイドまたは TPU を管理するの手順に沿って、 Google Cloud プロジェクトを構成し、Cloud TPU VM と TPU リソースを作成してください。

Cloud Storage にデータを書き込む

コンソール

  1. Google Cloud コンソールの [Cloud Storage] ページに移動します。

    Cloud Storage ページに移動

  2. 次のオプションを指定して新しいバケットを作成します。

    • 任意の一意な名前
    • デフォルトのストレージ クラス: Standard
    • ロケーション: Cloud TPU を作成したリージョンです。リージョンと TPU の可用性について詳しくは、TPU のリージョンとゾーンをご覧ください。

CLI

  1. Cloud Storage バケットの作成には、gcloud storage buckets create コマンドを使用します。

    gcloud storage buckets create gs://bucket-name --location region

    ここで

    • region は、Cloud TPU を作成したリージョンです。リージョンと TPU の可用性について詳しくは、TPU のリージョンとゾーンをご覧ください。

    • bucket-name は、作成するバケットの名前です。

  2. Cloud Storage バケットにファイルを書き込むには、gcloud storage cp コマンドを使用します。

    gcloud storage cp -r local-data-dir gs://bucket-name

    ここで、local-data-dir は、データへのローカルパスです。例: $HOME/your-data

Cloud TPU に Cloud Storage へのアクセス権を付与する

Cloud TPU に Cloud Storage オブジェクトに対する読み取りと書き込みのアクセス権を付与する必要があります。そのためには、Cloud TPU で使用する Cloud TPU サービス アカウントに必要なアクセス権を付与します。以降のセクションでは、Cloud TPU サービス アカウントを見つけて、必要なアクセス権を付与する方法について説明します。

Cloud TPU サービス アカウントを認可する

Cloud TPU サービス アカウントを認可する推奨の方法は、きめ細かいアクセス制御リスト(ACL)を使用する方法です。IAM 権限を使用して、より広範な権限を付与することもできます。

Cloud TPU に詳細な ACL を使用する(推奨)

Cloud Storage にトレーニング データを保存する場合、Cloud TPU サービス アカウントにはバケットに対する読み取りと書き込みの権限が必要です。

コンソール

  1. Cloud Storage のブラウザページに移動して、所有するバケットを表示します。

    Cloud Storage ブラウザに移動

  2. ACL を変更するバケットを選択します。

  3. [権限] タブを選択します。

  4. [アクセスを許可] を選択して新しい権限を追加し、[新しいプリンシパル] 編集ボックスに完全なサービス アカウント名を入力します。

  5. このバケットから読み取りを行う場合、リソースから読み取りを行う権限を TPU サービス アカウントに付与する必要があります。これは、サービス アカウントに Storage Legacy > Storage Legacy Bucket Reader ロールを付与することで行います。

  6. このバケットへの書き込みを行う場合、リソースへの書き込みを行う権限を TPU サービス アカウントに付与する必要があります。これは、サービス アカウントに Storage Legacy > Storage Legacy Bucket Writer ロールを付与することで行います。

CLI

  1. このバケットから読み取る場合は、Cloud TPU サービス アカウントに読み取り権限を付与します。

     gcloud storage buckets add-iam-policy-binding gs://bucket-name --member=serviceAccount:service-account --role=roles/storage.objectViewer
     

  2. このバケットに書き込む場合は、Cloud TPU サービス アカウントに書き込み権限を付与します。

     gcloud storage buckets add-iam-policy-binding gs://bucket-name --member=serviceAccount:service-account --role=roles/storage.objectCreator

Cloud TPU に IAM 権限を使用する(別の方法)

各バケットへのアクセス権を明示的に付与するのではなく、より広範な権限を付与する場合は、Identity Access Management(IAM)のストレージ管理者ロールを Cloud TPU サービス アカウントに付与できます。

  1. [IAM] に移動

  2. [アクセスを許可] ボタンをクリックして、プリンシパルをプロジェクトに追加します。

  3. [プリンシパル] テキスト ボックスに Cloud TPU サービス アカウントの名前を入力します。

  4. [ロール] プルダウン リストをクリックします。

  5. 次の役割を有効にします。

    • プロジェクト > 閲覧者

    • ストレージ > ストレージ管理者

Cloud Storage FUSE

Cloud Storage FUSE により、Cloud Storage バケットをマウントし、ローカル ファイル システムとしてアクセスできるようになります。これにより、標準のファイル システムのセマンティクスを使用して、バケット内のオブジェクトの読み取りと書き込みができます。

Cloud Storage FUSE の仕組みと、Cloud Storage FUSE オペレーションの Cloud Storage オペレーションへのマッピング方法について詳しくは、Cloud Storage FUSE のドキュメントをご覧ください。gcsfuse CLI をインストールし GitHub のバケットをマウントする方法など、Cloud Storage FUSE の使用方法の詳細を確認できます。

クリーンアップ

  1. Cloud TPU との接続を切断していない場合は切断します。

    (vm)$ exit
  2. Cloud Shell で、Cloud TPU を削除します。

    gcloud compute tpus tpu-vm delete tpu-name --zone=zone
  3. gcloud compute tpus tpu-vm list を実行して、VM が削除されたことを確認します。削除には数分かかることがあります。

    gcloud compute tpus tpu-vm list --zone=zone

    インスタンスが正常に削除されると、次のようなレスポンスが返されます。

    Listed 0 items
    
  4. 次のコマンドを実行して、Cloud Storage バケットとその内容を削除します。ここで、bucket-name は作成したバケットの名前に置き換えます。

    gcloud storage rm --recursive gs://bucket-name

次のステップ