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

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

最高のパフォーマンスと上級者向け機能を実現するには、TPU バージョンで Hyperdisk が使用可能であれば、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: 新しいディスクのサイズ。この値は整数で、その後に GB(ギビバイト)または TB(テビバイト)のサイズ単位が続きます。サイズ単位を指定しない場合、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 と バランス永続ディスク のみ)。詳細については、 アクセスモードをご覧ください。

マルチホスト 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 とバランス永続ディスクのみ)または 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 の再起動時にディスクが自動的にマウントされるようにする方法については、システムの再起動時に自動マウントを構成するをご覧ください。

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

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

新しい空のディスクを 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 が配置されているゾーン