プリエンプティブル 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
- メインページの Compute Engine の下にある TPU ページに移動します。
- [TPU ノードを作成] をクリックして、TPU ノードの作成ページを開きます。
- TPU ノードの名前を入力します。
- TPU ノードを作成するゾーンを選択します。
- TPU ノードの TPU タイプを選択します。
- [この TPU ノードのプリエンプティブをオンにする] をクリックして、TPU ノードをプリエンプティブルにします。
- 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 が再起動されてもアプリケーションを復元できるように、モデルのチェックポイントを定期的に保存し、再起動時に最新のチェックポイントから復元するようにアプリケーションを構成します。