耐久性のあるブロック ストレージを TPU VM にアタッチする

TPU VM には 10 GB のブートディスクが含まれています。シナリオによっては、トレーニングまたは前処理用に追加のストレージが必要になる場合があります。Google Cloud Hyperdisk ボリュームまたは Persistent Disk(PD)ボリュームを追加して、ローカル ディスクの容量を拡張します。

最高のパフォーマンスと高度な機能を実現するには、TPU バージョンで使用可能であれば、Hyperdisk を使用します。それ以外の場合は、Persistent Disk を使用します。Compute Engine のブロック ストレージ オプションの詳細については、ディスクタイプを選択するをご覧ください。

Hyperdisk と Persistent Disk の TPU サポート

次の表に、各 TPU バージョンでサポートされているディスクタイプを示します。

TPU バージョン サポートされているディスクタイプ VM あたりの最大ディスク数
(ブートディスクを含む)
TPU7x Hyperdisk Balanced
Hyperdisk ML
128
v6e Hyperdisk Balanced
Hyperdisk ML
32
v5p Hyperdisk ML
Balanced Persistent Disk
128

アクセスモード

単一の TPU VM(単一ホストの TPU スライスとも呼ばれます)にアタッチされているディスク(ct6e-standard-4t など)を、読み取り / 書き込み(rw)モードまたは読み取り専用(ro)モードで構成します。

ディスクをマルチホスト TPU スライスにアタッチすると、ディスクはそのスライス内の各 VM にアタッチされます。複数の TPU VM が同時にディスクに書き込まないようにするには、マルチホスト TPU スライスにアタッチされているすべてのディスクを読み取り専用(ro)として構成する必要があります。読み取り専用ディスクは、TPU スライスで処理するためのデータセットを保存する場合に便利です。

前提条件

次の操作を行う前に、 Google Cloud アカウントとプロジェクトを設定します。詳細については、Cloud TPU 環境を設定するをご覧ください。

ディスクの作成

ディスクを作成するには、次のコマンドを使用します。

gcloud compute disks create DISK_NAME \
    --size DISK_SIZE  \
    --zone ZONE \
    --type DISK_TYPE

各プレースホルダを次のように置き換えます。

  • DISK_NAME: 新しいディスクの名前。
  • DISK_SIZE: 新しいディスクのサイズ。この値は整数で、その後に GiB(ギビバイト)または TiB(テビバイト)のサイズ単位が続きます。サイズ単位を指定しない場合、システムは GB を使用します。
  • ZONE: 新しいディスクを作成するゾーンの名前。これは、TPU を作成するゾーンと同じである必要があります。
  • DISK_TYPE: ディスクのタイプhyperdisk-balancedhyperdisk-mlpd-balanced のいずれかの値を使用します。

Hyperdisk の場合は、必要に応じて --access-mode フラグに次のいずれかの値を指定できます。

  • READ_WRITE_SINGLE: 1 つのインスタンスからの読み取り / 書き込みアクセス(デフォルト)。
  • READ_ONLY_MANY(Hyperdisk ML のみ): 複数のインスタンスの同時読み取り専用アクセス。

ディスクの作成の詳細については、新しい Hyperdisk ボリュームを作成する新しい Persistent Disk ボリュームを作成するをご覧ください。

ディスクをアタッチする

ディスク ボリュームは、TPU VM またはスライスの作成時にアタッチするか、作成後にアタッチします。

TPU VM の作成時にディスクをアタッチする

TPU VM またはインスタンス テンプレートを作成するときに、--disk フラグを使用してディスク ボリュームをアタッチします。

単一の TPU VM の作成時にディスクをアタッチする

次の例は、単一の TPU VM を作成するときにディスク ボリュームをアタッチする方法を示しています。

  gcloud compute instances create TPU_NAME \
    --machine-type=MACHINE_TYPE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --zone=ZONE \
    --maintenance-policy=TERMINATE \
    --disk=name=DISK_NAME,device-name=DEVICE_NAME,mode=MODE

各プレースホルダを次のように置き換えます。

  • TPU_NAME: TPU VM の名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(例: ct6e-standard-8t)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
  • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
  • ZONE: TPU VM のゾーン
  • DEVICE_NAME: ディスクに使用するデバイスの名前。この名前は、OS でディスクを識別します。
  • MODE: ディスクのモード。rw(読み取り / 書き込み)または ro(読み取り専用)のいずれかになります。詳細については、アクセスモードをご覧ください。

マルチホスト TPU スライスの作成時にディスクをアタッチする

マルチホスト TPU スライスを作成する場合は、mode=read-only を指定する必要があります(Hyperdisk ML と Balanced Persistent Disk のみ)。詳細については、アクセスモードをご覧ください。

マルチホスト TPU スライス全体にディスクをアタッチするには、アタッチされたディスクを含むインスタンス テンプレートを作成し、ワークロード ポリシーを作成してから、MIG を作成します。

  1. インスタンス テンプレートの作成

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --disk=name=DISK_NAME,mode=MODE
    

    各プレースホルダを次のように置き換えます。

    • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
    • MACHINE_TYPE: TPU VM のマシンタイプct6e-standard-8t など)。
    • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。特定の OS バージョンをインストールする場合は、--image フラグを使用します。OS イメージの詳細については、OS イメージをご覧ください。
    • IMAGE_PROJECT: OS イメージを含むプロジェクト。TPU イメージの場合、これは ubuntu-os-accelerator-images です。
    • DISK_NAME: TPU VM にアタッチするディスクの名前。
    • MODE: ディスクのモード。マルチホスト TPU スライスの場合、モードは ro(読み取り専用)である必要があります。
  2. ワークロード ポリシーの作成

    gcloud compute resource-policies create workload WORKLOAD_POLICY_NAME \
    --type=high-throughput \
    --accelerator-topology=TOPOLOGY
    

    各プレースホルダを次のように置き換えます。

    • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。
    • TOPOLOGY: TPU VM のトポロジ(4x4x8 など)。TPU の各バージョンのトポロジの詳細については、システム アーキテクチャをご覧ください。
  3. MIG を作成します。

    gcloud compute instance-groups managed create MIG_NAME \
        --project=PROJECT_ID \
        --zone=ZONE \
        --template=TEMPLATE_NAME \
        --size=SIZE \
        --workload-policy=WORKLOAD_POLICY_NAME
    

    各プレースホルダを次のように置き換えます。

    • MIG_NAME: MIG の名前。
    • PROJECT_ID: プロジェクト ID。
    • ZONE: Cloud TPU が配置されているゾーン
    • TEMPLATE_NAME: インスタンス テンプレートの名前。
    • SIZE: マルチホスト TPU スライスの VM の数。
    • WORKLOAD_POLICY_NAME: ワークロード ポリシーの名前。

複数の単一ホスト TPU スライスを含む MIG を作成するときにディスクをアタッチする

単一ホスト TPU スライスを作成する場合は、mode=read-only(Hyperdisk ML と Balanced Persistent Disk のみ)または mode=read-write を指定できます。

独立した単一ホスト TPU スライスを含む MIG に永続ストレージをアタッチするには、--create-disk フラグを使用して、インスタンスごとに新しいディスクを作成するようにインスタンス テンプレートを構成します。

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --image-family=IMAGE_FAMILY \
    --image-project=IMAGE_PROJECT \
    --disk=name=DISK_NAME,mode=MODE

各プレースホルダを次のように置き換えます。

  • INSTANCE_TEMPLATE_NAME: インスタンス テンプレートの名前。
  • MACHINE_TYPE: TPU VM のマシンタイプ(ct6e-standard-8t など)。
  • IMAGE_FAMILY: TPU VM の OS イメージ ファミリー。
  • IMAGE_PROJECT: OS イメージ(ubuntu-os-accelerator-images)を含むプロジェクト。
  • DISK_NAME: 作成して各 TPU VM にアタッチするディスクのベース名。
  • DISK_SIZE: ディスクのサイズ(GB)。
  • DISK_TYPE: ディスクのタイプ(pd-balancedhyperdisk-balanced など)。

次に、前のセクションで説明したように MIG を作成し、--size を選択した TPU VM の数に設定します。

既存の TPU VM にディスクをアタッチする

既存の TPU VM にディスクをアタッチするには、gcloud compute instances attach-disk コマンドを使用します。

gcloud compute instances attach-disk VM_NAME \
    --zone=ZONE \
    --disk=DISK_NAME \
    --mode=MODE

各プレースホルダを次のように置き換えます。

  • VM_NAME: TPU VM の名前。
  • ZONE: Cloud TPU が配置されているゾーン
  • DISK_NAME: TPU VM にアタッチするディスクの名前。
  • MODE: ディスクのモード。詳細については、アクセスモードをご覧ください。

なんらかの理由で VM がシャットダウンした場合は、VM を再起動した後にディスクをマウントする必要があります。VM の再起動時にディスクが自動的にマウントされるようにする方法については、システムの再起動時に自動マウントを構成するをご覧ください。

ディスクの自動削除の詳細については、ディスクの自動削除設定を変更するをご覧ください。

ディスクをフォーマットしてマウントする

新しい空のディスクを TPU VM にアタッチした場合は、使用する前にディスクをフォーマットしてマウントする必要があります。すでにデータが含まれているディスクをアタッチした場合は、ディスクを使用する前にマウントする必要があります。

非ブートディスクのフォーマットとマウントの詳細については、Linux VM で非ブートディスクをフォーマットしてマウントするをご覧ください。

ディスクを切断する

TPU VM からディスクを切断するには、次のコマンドを実行します。

gcloud compute instances detach-disk VM_NAME \
    --zone=ZONE \
    --disk=DISK_NAME

各プレースホルダを次のように置き換えます。

  • VM_NAME: TPU VM の名前。
  • ZONE: Cloud TPU が配置されているゾーン
  • DISK_NAME: TPU VM から切断するディスクの名前。

ディスクの切り離しについて詳しくは、ディスクを切り離すをご覧ください。

クリーンアップ

使用が終了したら、Cloud TPU リソースと Compute Engine リソースを削除します。

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

    exit
    
  2. TPU VM を削除します。

    gcloud compute instances delete VM_NAME \
        --zone=ZONE
    

    各プレースホルダを次のように置き換えます。

    • VM_NAME: TPU VM の名前。
    • ZONE: Cloud TPU が配置されているゾーン

    MIG を使用してマルチホスト TPU スライスを作成した場合は、代わりにインスタンス グループを削除します。

    gcloud compute instance-groups managed delete MIG_NAME \
        --zone=ZONE
    

    各プレースホルダを次のように置き換えます。

    • MIG_NAME: MIG の名前。
    • ZONE: Cloud TPU が配置されているゾーン
  3. Cloud TPU の削除を確認します。削除には数分かかることがあります。

    gcloud compute instances list --zone=ZONE
    
  4. ディスクを作成したゾーン内のすべてのディスクを一覧表示して、TPU VM の削除時にディスクが自動的に削除されることを確認します。

    gcloud compute disks list --filter="zone:( ZONE )"
    

    各プレースホルダを次のように置き換えます。

    • ZONE: Cloud TPU が配置されているゾーン

    TPU VM の削除時にディスクが削除されない場合は、次のコマンドを使用して削除します。

    gcloud compute disks delete DISK_NAME \
        --zone=ZONE
    

    各プレースホルダを次のように置き換えます。

    • DISK_NAME: 削除するディスクの名前。
    • ZONE: Cloud TPU が配置されているゾーン