プリエンプティブル TPU の使用

プリエンプティブル TPU ノードは、非プリエンプティブル TPU ノードよりはるかに低価格です。他のリクエストに対応するため追加の TPU リソースが必要な場合、プリエンプティブル TPU ノードは、Cloud TPU サービスによっていつでもプリエンプト(シャットダウン)される可能性があります。プリエンプティブル TPU ノードは、Cloud Console または gcloud コマンドライン ツールを使用して作成できます。

プリエンプティブル 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.5.0 \
  --preemptible
  

ここで

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

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

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

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

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

プリエンプティブル VM と 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 がプリエンプトされたかどうかの確認

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

使用可能な 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 インスタンスがプリエンプトされたかどうかの確認

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