プリエンプティブル TPU

プリエンプティブル TPU は、非プリエンプティブル TPU よりはるかに低コストです。追加の TPU リソースが必要な場合、プリエンプティブル TPU は、Cloud TPU サービスによっていつでもプリエンプト(シャットダウン)される可能性があります。

プリエンプティブル TPU VM を作成する場合は、gcloud コマンドを使用します。プリエンプティブル TPU ノードを作成する場合は、gcloud コマンドまたはコンソールを使用できます。TPU VM と TPU ノードの違いについては、システム アーキテクチャをご覧ください。

プリエンプティブル TPU VM の作成

gcloud

$ gcloud compute tpus tpu-vm create demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8 \
  --version=tpu-vm-tf-2.16.1-pjrt \
  --preemptible
  

ここで

  • demo-tpu は TPU の名前です。
  • --accelerator-type は TPU のタイプを指定します。
  • --version には、インストールする TPU VM ソフトウェアのバージョンを指定します。
  • --preemptible は、Cloud TPU が TPU をプリエンプトできるようにします。

プリエンプティブル TPU ノードの作成

Console

  1. メインページの Compute Engine の下にある TPU ページに移動します。
  2. [TPU ノードを作成] をクリックして、TPU ノードの作成ページを開きます。
  3. TPU ノードの名前を入力します。
  4. TPU ノードを作成するゾーンを選択します。
  5. TPU ノードの TPU タイプを選択します。
  6. [この TPU ノードのプリエンプティブをオンにする] をクリックして、TPU ノードをプリエンプティブルにします。
  7. VM にインストールする Tensorflow または PyTorch のバージョンを選択します。

gcloud

$ gcloud compute tpus execution-groups create \
  --name=demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8 \
  --tf-version=2.12.0 \
  --preemptible
  

ここで

  • demo-tpu は TPU の名前です。
  • --accelerator-type には、TPU のタイプを指定します。
  • --tf-version は、VM にインストールする Tensorflow または PyTorch のバージョンを指定します。
  • --preemptible は、Cloud TPU が TPU をプリエンプトできるようにします。

TPU ノードでは、TPU のプリエンプティブル ステータスは、VM インスタンスのプリエンプティブル ステータスとは関係ありません。

プリエンプティブル TPU の料金と割り当て

プリエンプティブル TPU の料金は、通常の TPU の料金よりかなり低価格です。詳細については、料金ページをご覧ください。TPU を作成後、1 分以内にプリエンプトされた場合は課金されません。

プリエンプティブル TPU の割り当ては一般的に多く、通常の TPU の割り当てとは別のものです。割り当てページをご覧ください。

TPU がプリエンプトされたかどうかの確認

Cloud TPU サービスが TPU をプリエンプトしたかどうかを確認するには、次の gcloud コマンドを使用します。

使用可能な TPU を一覧表示します。

TPU VM

gcloud compute tpus tpu-vm list --zone=us-central1-b

TPU ノード

(vm)$ gcloud compute tpus list --zone=us-central1-b

コマンドの出力には、プロジェクトで作成された TPU の詳細が表示されます。TPU がプリエンプトされた場合、ステータスは READY から PREEMPTED に変わります。

次に例を示します。

NAME       ZONE           ACCELERATOR_TYPE  NETWORK_ENDPOINT   NETWORK  RANGE          STATUS
demo-tpu   us-central1-b  v2-8              10.240.1.2:8470    default  10.240.1.0/29  PREEMPTED

プリエンプティブル VM と TPU(TPU ノードのみ)

フレームワークのクイックスタート ガイドで説明しているように、TPU に接続するには Compute Engine 仮想マシン(VM)が必要です。TPU のプリエンプティブル ステータスは、VM のプリエンプティブル ステータスとは関係ありません。TPU をプリエンプティブルとして定義し、VM を非プリエンプティブルとして定義できます。また、その逆も可能です。これら両方をプリエンプティブルとして定義することもできます。

可能性が高い組み合わせは、プリエンプティブ TPU非プリエンプティブ VM です。次の点に注意してください。

  • VM の料金は、TPU の料金よりも低くなる可能性があります。VM の料金は使用するマシンタイプによって異なります。相対的なコストの例については、料金ページをご覧ください。
  • Cloud TPU は VM と TPU のプリエンプトを調整しません。これら両方をプリエンプティブルとして定義すると、VM と TPU をそれぞれ別のタイミングでプリエンプトできます。
  • Compute Engine が VM をプリエンプトした場合でも、(TPU がプリエンプトされない限り)TPU の料金が発生します。VM がプリエンプトされている間、TPU はアイドル状態であるので注意してください。
  • Compute Engine VM と Cloud TPU インスタンスのプリエンプティブ インスタンスは、24 時間実行した後は常にプリエンプティブになります。 この 24 時間カウンタは、特定のアクションによってリセットされます。

VM インスタンスがプリエンプトされたかどうかの確認(TPU ノードのみ)

VM インスタンスがプリエンプトされたかどうかを確認するには、gcloud compute operations list コマンドを使用して最近のシステム オペレーションのリストを取得します。name フィルタを追加して実行中のインスタンスのみを表示するか、operationType フィルタを追加してプリエンプティブされているリソースのみを表示します。たとえば、次のコマンドを使用して、指定されたインスタンス名のインスタンスのみを表示します。

$ gcloud compute operations list--filter="name=( 'NAME' my-vm)"

次の例では、プリエンプトされたリソースのみが表示されます。

$ gcloud compute operations list --filter="operationType=compute.instances.preempted"

詳細については、Compute Engine ガイドをご覧ください。

プリエンプティブル TPU で実行する機械学習アプリケーションの設計

VM と TPU が再起動されてもアプリケーションを復元できるように、モデルのチェックポイントを定期的に保存し、再起動時に最新のチェックポイントから復元するようにアプリケーションを構成します。