プリエンプティブル TPU

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

プリエンプティブル TPU ノードは、Cloud Console または gcloud コマンドライン ツールを使用して作成できます。使用する gcloud コマンドは、TPU VM と TPU ノードのどちらを使用するかによって異なります。詳細については、システム アーキテクチャをご覧ください。

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

Console

  1. メインページの Compute Engine の下にある TPU ページに移動します。
  2. [TPU ノードを作成] をクリックして、TPU ノードの作成ページを開きます。
  3. TPU ノードの名前を入力します。
  4. TPU ノードを作成するゾーンを選択します。
  5. [TPU の設定] メニューで、[TPU VM アーキテクチャ] を選択します。
  6. TPU ノードの TPU タイプを選択します。
  7. [この TPU ノードのプリエンプティブをオンにする] を選択して、TPU ノードをプリエンプティブルにします。
  8. TPU ソフトウェア バージョンを選択します。たとえば、TPU VM の場合は tpu-vm-tf-2.7.0 です。

gcloud

$ gcloud alpha compute tpus tpu-vm create demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8
  --version=tpu-vm-tf-2.7.0 \
  --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 demo-tpu \
  --zone=europe-west4-a \
  --accelerator-type=v3-8
  --version=2.7.0 \
  --preemptible
  

ここで

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

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

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

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

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

プリエンプティブル 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 時間カウンタは、特定のアクションによってリセットされます。

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

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

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

(vm)$ gcloud compute tpus list

上記のコマンドは、プロジェクトで作成された 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 ノードのみ)

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