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

プリエンプティブ TPU は、通常のノードよりはるかに低価格で作成および実行できる Cloud TPU ノードです。ただし、別の目的のためにリソースにアクセスする必要がある場合、Cloud TPU では、これらのノードを終了(プリエンプト)することがあります。

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

プリエンプティブ TPU を作成するには、ctpu コマンドまたは gcloud コマンドを使用します。

ctpu

プリエンプティブ TPU を作成するには、通常の TPU を作成するときと同じ ctpu up コマンドを使用しますが、--preemptible フラグを追加します。

$ ctpu up --preemptible

プリエンプティブ TPU に対して ctpu up を実行するたびに --preemptible フラグを指定する必要があるので注意してください。コマンドライン フラグとそのデフォルト値は、個々のコマンド呼び出しに個別に適用されます。

gcloud

カスタム設定が必要な場合は、ctpu ではなく gcloud コマンドを使用して、TPU リソースを作成および管理できます(カスタム設定の詳細については、設定ガイドをご覧ください)。プリエンプティブ TPU を作成するには、通常の TPU を作成するときと同じ gcloud compute tpus create コマンドを使用しますが、--preemptible フラグを追加します。

$ gcloud compute tpus create demo-tpu \
  --range=10.240.1.0/29 \
  --version=1.8 \
  --preemptible
  

ここで

  • demo-tpu は、作成する TPU を識別するための名前です。
  • --range は、作成した Cloud TPU リソースのアドレスを指定します。10.240.*.*/29 の形式で任意の値を指定できます。この例では、10.240.1.0/29 を使用します。
  • --version は、TPU で使用する TensorFlow バージョンを指定します。
  • --preemptible は、Cloud TPU が TPU をプリエンプトできるようにします。

TPU のプリエンプティブ ステータスは、VM インスタンスのプリエンプティブ ステータスとは関係ありません。以下のプリエンプティブ VM と TPU の説明をご覧ください。

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

プリエンプティブ TPU の料金は、通常の TPU の料金よりかなり低価格です。詳細については、料金ページをご覧ください。

プリエンプティブ 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 はアイドル状態であるので注意してください。

プリエンプティブ VM を定義するには、ctpu コマンドまたは gcloud コマンドを使用します。

ctpu

プリエンプティブ VM を作成するには、通常の VM で TPU を作成するときと同じ ctpu up コマンドを使用しますが、--preemptible-vm フラグを追加します。

$ ctpu up --preemptible-vm

プリエンプティブ TPU に対して ctpu up を実行するたびに --preemptible-vm フラグを指定する必要があるので注意してください。コマンドライン フラグとそのデフォルト値は、個々のコマンド呼び出しに個別に適用されます。

gcloud

カスタム設定が必要な場合は、ctpu ではなく gcloud コマンドを使用して、TPU リソースを作成および管理できます(カスタム設定の詳細については、設定ガイドをご覧ください)。プリエンプティブ VM を作成するには、通常の VM を作成するときと同じ gcloud compute instances create コマンドを使用しますが、--preemptible フラグを追加します。

$ gcloud compute instances create tpu-demo-vm \
  --machine-type=n1-standard-2 \
  --image-project=ml-images \
  --image-family=tf-1-8 \
  --scopes=cloud-platform \
  --preemptible

ここで

  • tpu-demo-vm は、作成する VM インスタンスを識別するための名前です。
  • --machine-type=n1-standard-2 は、4 基の仮想 CPU と 15 GB のメモリを備えた標準マシンタイプです。使用可能なマシンタイプをご覧ください。
  • --image-project=ml-images は、tf-1-8 画像を使用できるようにする、画像の共有コレクションです。
  • --image-family=tf-1-8 は、TensorFlow に必要な pip パッケージを含む画像です。
  • --scopes=cloud-platform は、VM が GCP API にアクセスできるようにします。
  • --preemptible は、Compute Engine が VM インスタンスをプリエンプトできるようにします。

プリエンプティブ VM インスタンスの作成については、Compute Engine のドキュメントをご覧ください。

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

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

ctpu

TPU のステータスを確認します。

$ ctpu status

上記のコマンドは、作成した TPU の詳細を出力します。出力された TPU プリエンプティブの値は、TPU がプリエンプティブかどうかを示します。出力された TPU の状態READY の場合、TPU はプリエンプトされていません。TPU がプリエンプトされた場合、状態は READY から別の状態に変わります。

gcloud

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

(vm)$ gcloud compute tpus list

上記のコマンドは、作成した TPU の詳細を出力します。出力された STATUSREADY の場合、TPU はプリエンプトされていません。TPU がプリエンプトされた場合、ステータスは READY から別のステータスに変わります。次に例を示します。

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  STOPPING

VM インスタンスがプリエンプトされたかどうかの確認

VM インスタンスがプリエンプトされたかどうかを確認するには、gcloud compute operations list コマンドを使用して、最新のシステム オペレーションのリストを取得します。

$ gcloud compute operations list

compute.instances.preempted というオペレーション タイプは、VM インスタンスがプリエンプトされたことを示します。詳細については、Compute Engine ガイドをご覧ください。

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

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

TensorFlow TPUEstimator API は、モデルのチェックポイントの保存と復元を行います。TPUEstimator を使用する場合は、TPU または VM のチェックポイントの保存または復元について心配する必要はありません。Cloud TPU で TPUEstimator を使用する方法をご覧ください。

上記のように Cloud TPU で TPUEstimator を使用することをおすすめします。ただし、チェックポイントの保存機能と復元機能をモデルに記述する方法を確認したい場合は、TensorFlow tf.train モジュールの次のリソースをご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...