TPU VM を Cloud Storage バケットに接続する
このページでは、ML データとトレーニング出力の保存先として Cloud Storage を紹介し、Cloud Storage 上のデータ オブジェクトに TPU VM からアクセスできるようにする方法について説明します。
始める前に
Cloud Storage バケットにアクセスするには、TPU VM に関連付けられたサービス アカウントが必要です。TPU VM の作成時にサービス アカウントを指定しないと、Compute Engine のデフォルトのサービス アカウントが使用されます。
TPU 用に Google Cloud プロジェクトを設定し、TPU VM インスタンスを作成するには、次の手順に沿って操作します。
Cloud Storage にデータを書き込む
コンソール
Google Cloud コンソールの [Cloud Storage] ページに移動します。
次のオプションを指定して新しいバケットを作成します。
- 任意の一意な名前
- デフォルトのストレージ クラス:
Standard - ロケーション: TPU VM を作成したリージョン。リージョンと TPU の可用性について詳しくは、TPU のリージョンとゾーンをご覧ください。
CLI
Cloud Storage バケットの作成には、
gcloud storage buckets createコマンドを使用します。gcloud storage buckets create gs://BUCKET_NAME --location REGION各プレースホルダを次のように置き換えます。
- BUCKET_NAME は、作成するバケットの名前です。
- REGION は、TPU VM を作成したリージョンです。リージョンと TPU の可用性について詳しくは、TPU のリージョンとゾーンをご覧ください。
Cloud Storage バケットにファイルを書き込むには、
gcloud storage cpコマンドを使用します。gcloud storage cp -r LOCAL_DATA_DIR gs://BUCKET_NAME各プレースホルダを次のように置き換えます。
- LOCAL_DATA_DIR は、データへのローカルパスです。例: $HOME/your-data
- BUCKET_NAME は、書き込み先のバケットの名前です。
TPU VM に Cloud Storage へのアクセス権を付与する
TPU VM に Cloud Storage オブジェクトに対する読み取りと書き込みのアクセス権を付与する必要があります。そのためには、TPU VM に関連付けられているサービス アカウントに必要なアクセス権を付与する必要があります。以降のセクションでは、アタッチされたサービス アカウントを見つけて、必要なアクセス権を付与する方法について説明します。
接続されたサービス アカウントを承認する
アタッチされたサービス アカウントを認可する推奨の方法は、きめ細かいアクセス制御リスト(ACL)を使用する方法です。IAM 権限を使用して、より広範な権限を付与することもできます。
TPU VM に詳細な ACL を使用する(推奨)
Cloud Storage にトレーニング データを保存する場合、アタッチされたサービス アカウントにはバケットに対する読み取りと書き込みの権限が必要です。
コンソール
Cloud Storage のブラウザページに移動して、所有するバケットを表示します。
ACL を変更するバケットを選択します。
[権限] タブを選択します。
[アクセスを許可] を選択して新しい権限を追加し、[新しいプリンシパル] 編集ボックスに完全なサービス アカウント名を入力します。
このバケットから読み取りを行う場合、リソースから読み取りを行う権限をアタッチされたサービス アカウントに付与する必要があります。これは、サービス アカウントに
Storage Legacy > Storage Legacy Bucket Reader役割を付与することで行います。このバケットへの書き込みを行う場合、リソースへの書き込みを行う権限を接続されたサービス アカウントに付与する必要があります。これは、サービス アカウントに
Storage Legacy > Storage Legacy Bucket Writer役割を付与することで行います。
CLI
このバケットから読み取る場合は、アタッチされたサービス アカウントに読み取り権限を付与します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:SERVICE_ACCOUNT --role=roles/storage.objectViewer各プレースホルダを次のように置き換えます。
- BUCKET_NAME は、読み取るバケットの名前です。
- SERVICE_ACCOUNT は、TPU VM に関連付けられているサービス アカウントの名前です。
このバケットに書き込む場合は、アタッチされたサービス アカウントに書き込み権限を付与します。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:SERVICE_ACCOUNT --role=roles/storage.objectCreator各プレースホルダを次のように置き換えます。
- BUCKET_NAME は、書き込み先のバケットの名前です。
- SERVICE_ACCOUNT は、TPU VM に関連付けられているサービス アカウントの名前です。
TPU VM に IAM 権限を使用する(別の方法)
各バケットへのアクセス権を明示的に付与するのではなく、より広範な権限を付与する場合は、TPU VM に関連付けられたサービス アカウントに Identity Access Management(IAM)のストレージ管理者ロールを付与できます。
[アクセスを許可] ボタンをクリックして、プリンシパルをプロジェクトに追加します。
[プリンシパル] フィールドに、アタッチされたサービス アカウントの名前を入力します。
[役割] プルダウン リストをクリックします。
次の役割を有効にします。
プロジェクト > 閲覧者
ストレージ > ストレージ管理者
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 の使用方法の詳細を確認できます。
クリーンアップ
TPU VM を接続解除していない場合は接続解除します。
exitCloud Shell またはターミナルで、TPU VM を削除します。
gcloud compute instances delete TPU_NAME --zone=ZONE各プレースホルダを次のように置き換えます。
- TPU_NAME: 作成した TPU VM の名前。
- ZONE: TPU VM が作成されたゾーン。
gcloud compute instances listを実行して、VM が削除されたことを確認します。削除には数分かかることがあります。gcloud compute instances list --zone=ZONEZONE は、TPU VM が作成されたゾーンに置き換えます。
レスポンスに TPU インスタンスが表示されない場合は、正常に削除されています。
次のコマンドを実行して、Cloud Storage バケットとその内容を削除します。ここで、BUCKET_NAME は作成したバケットの名前に置き換えます。
gcloud storage rm --recursive gs://BUCKET_NAME各プレースホルダを次のように置き換えます。
- BUCKET_NAME: 削除するバケットの名前。
次のステップ
- Cloud Storage バケットの作成とそれらのバケットへのデータの書き込みの詳細については、Cloud Storage バケットの作成に関するドキュメントをご覧ください。
- サービス アカウントの詳細については、認証の概要をご覧ください。