GKE での Cloud TPU の設定

このページでは、Google Kubernetes Engine を使用した Cloud TPU の設定についてのクイックガイドです。詳細な手順については、チュートリアルをご覧ください。チュートリアルでは、Cloud TPU と GKE を使用して TensorFlow ResNet-50 モデルをトレーニングする方法を説明しています。

GKE を使用する理由

GKE は、Kubernetes クラスタをマネージド サービスとして提供します。

  • 設定と管理が簡単: Cloud TPU を使用するには、ワークロードを実行するための Compute Engine VM と、Cloud TPU の Classless Inter-Domain Routing(CIDR)ブロックが必要です。VM と CIDR ブロックは、GKE によって自動的に設定、管理されます。

  • コストを最適化: GKE は、VM と Cloud TPU ノードをワークロードとトラフィックに基づいて自動的にスケーリングします。料金が発生するのは、Cloud TPU と VM でワークロードを実行したときだけです。

  • 柔軟な使用: ポッド仕様で 1 行を変更するだけで、別のハードウェア アクセラレータ(CPU、GPU、TPU)をリクエストできます。

    kind: Pod
    spec:
      containers:
      - name: example-container
        resources:
          limits:
            cloud-tpus.google.com/v2: 8
            # See the line above for TPU, or below for CPU / GPU.
            # cpu: 2
            # nvidia.com/gpu: 1
    
  • スケーラビリティ: GKE には、数百単位のポッドや Cloud TPU ノードに容易にスケーリングできる API(ジョブおよびデプロイ)があります。

  • フォールト トレランス: GKE のジョブ API と TensorFlow チェックポイント メカニズムにより、Run-to-Completion セマンティクスが提供されます。VM インスタンスや Cloud TPU ノードで障害が発生すると、チェックポイントから読み込まれた最新の状態を使用して、トレーニング ジョブが自動的に再実行されます。

要件と制限事項

構成を定義する際は、以下の点に注意してください。

  • GKE バージョン 1.13.4-gke.5 以降を使用する必要があります。バージョンを指定するには、下記の説明にあるように、gcloud container clusters create コマンドに --cluster-version パラメータを追加します。バージョンの詳細については、SDK のドキュメントをご覧ください。
  • TensorFlow 1.13 以降を使用する必要があります。下記の説明にあるように、Kubernetes ポッド仕様で、Cloud TPU で使用する TensorFlow バージョンを指定してください。
  • GKE クラスタおよびノードプールは、Cloud TPU を使用できるゾーン内に作成する必要があります。トレーニング データとモデルを格納する Cloud Storage バケットも GKE クラスタと同じリージョン内に作成する必要があります。以下のゾーンを選択できます。

    US

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB us-central1-b
    us-central1-c
    us-central1-f TFRC のみ
    v2-32(ベータ版) 32 256 GiB us-central1-a
    v2-128(ベータ版) 128 1 TiB us-central1-a
    v2-256(ベータ版) 256 2 TiB us-central1-a
    v2-512(ベータ版) 512 4 TiB us-central1-a
    TPU タイプ(v3) TPU v3 コア数 TPU メモリ合計 利用可能なゾーン
    v3-8 8 128 GiB us-central1-a
    us-central1-b
    us-central1-f TFRC のみ

    ヨーロッパ

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB europe-west4-a
    v2-32(ベータ版) 32 256 GiB europe-west4-a
    v2-128(ベータ版) 128 1 TiB europe-west4-a
    v2-256(ベータ版) 256 2 TiB europe-west4-a
    v2-512(ベータ版) 512 4 TiB europe-west4-a
    TPU タイプ(v3) TPU v3 コア数 TPU メモリ合計 利用可能なゾーン
    v3-8 8 128 GiB europe-west4-a
    v3-32(ベータ版) 32 512 GiB europe-west4-a
    v3-64(ベータ版) 64 1 TiB europe-west4-a
    v3-128(ベータ版) 128 2 TiB europe-west4-a
    v3-256(ベータ版) 256 4 TiB europe-west4-a
    v3-512(ベータ版) 512 8 TiB europe-west4-a
    v3-1024(ベータ版) 1024 16 TiB europe-west4-a
    v3-2048(ベータ版) 2048 32 TiB europe-west4-a

    アジア太平洋

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB asia-east1-c
  • 各コンテナがリクエストできる Cloud TPU は 1 つまでですが、1 つのポッド内の複数のコンテナのそれぞれが Cloud TPU をリクエストできます。
  • クラスタ オートスケーラーは GKE 1.11.4-gke.12 以降で Cloud TPU をサポートします。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。 詳しくは、課金を有効にする方法をご覧ください。

  4. GKE で Cloud TPU を使用する際に、プロジェクトは Google Cloud Platform の課金対象となるコンポーネントを使用します。Cloud TPU の料金GKE の料金を確認して費用を見積もり、使い終わったら手順に沿ってリソースのクリーンアップを行います。

  5. GCP Console で、次の API を有効にします。

Cloud Storage バケットを作成する

機械学習モデルのトレーニング結果を保存するには Cloud Storage バケットが必要です。

  1. GCP Console の Cloud Storage ページに移動します。

    Cloud Storage ページに移動

  2. 次のオプションを指定して新しいバケットを作成します。

    • 任意の一意な名前
    • デフォルトのストレージ クラス: Standard
    • ロケーション: us-central1

    バケットのロケーションは、GKE クラスタ内でプロビジョニングされている TPU リソースと同じリージョン内にある必要があります。

Cloud TPU に Cloud Storage バケットへのアクセスを許可する

Cloud TPU に Cloud Storage オブジェクトに対する読み取りと書き込みのアクセス権を付与する必要があります。そのためには、Cloud TPU で使用するサービス アカウントに必要なアクセス権を付与します。ガイドに従って Storage バケットにアクセス権を付与してください。

Cloud TPU をサポートする GKE クラスタを作成する

GCP クラスタを作成するには、GCP Console または gcloud コマンドライン ツールを使用できます。以下のオプションを選択し、関連する手順をご覧ください。

Console

Cloud TPU をサポートする GKE クラスタの作成手順は以下のとおりです。

  1. GCP Console の GKE ページに移動します。

    GKE ページに移動

  2. [クラスタを作成] をクリックします。

  3. クラスタの [名前] を指定します。名前はプロジェクトとゾーン内で一意にする必要があります。

  4. [ロケーション タイプ] として [ゾーン] を選択し、[ゾーン] プルダウン メニューから、Cloud TPU リソースを使用する予定のゾーンを選択して指定します。たとえば、us-central1-b ゾーンを選択します。

    Cloud TPU は次のゾーンで使用できます。

    US

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB us-central1-b
    us-central1-c
    us-central1-f TFRC のみ
    v2-32(ベータ版) 32 256 GiB us-central1-a
    v2-128(ベータ版) 128 1 TiB us-central1-a
    v2-256(ベータ版) 256 2 TiB us-central1-a
    v2-512(ベータ版) 512 4 TiB us-central1-a
    TPU タイプ(v3) TPU v3 コア数 TPU メモリ合計 利用可能なゾーン
    v3-8 8 128 GiB us-central1-a
    us-central1-b
    us-central1-f TFRC のみ

    ヨーロッパ

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB europe-west4-a
    v2-32(ベータ版) 32 256 GiB europe-west4-a
    v2-128(ベータ版) 128 1 TiB europe-west4-a
    v2-256(ベータ版) 256 2 TiB europe-west4-a
    v2-512(ベータ版) 512 4 TiB europe-west4-a
    TPU タイプ(v3) TPU v3 コア数 TPU メモリ合計 利用可能なゾーン
    v3-8 8 128 GiB europe-west4-a
    v3-32(ベータ版) 32 512 GiB europe-west4-a
    v3-64(ベータ版) 64 1 TiB europe-west4-a
    v3-128(ベータ版) 128 2 TiB europe-west4-a
    v3-256(ベータ版) 256 4 TiB europe-west4-a
    v3-512(ベータ版) 512 8 TiB europe-west4-a
    v3-1024(ベータ版) 1024 16 TiB europe-west4-a
    v3-2048(ベータ版) 2048 32 TiB europe-west4-a

    アジア太平洋

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB asia-east1-c
  5. Cloud TPU をサポートできるよう、[マスターのバージョン] が 1.13.4-gke.5 以降に設定されていることを確認します。

  6. [ノードプール] で [その他のノードプール オプション] をクリックします。

  7. [ノードプールの編集] ページの [アクセス スコープ] で、[すべての Cloud API に完全アクセス権を許可] をクリックします。これで、クラスタ内のすべてのノードで Cloud Storage バケットにアクセスできます。この設定を機能させるためには、クラスタとストレージ バケットが同じプロジェクト内に存在していなければなりません。デフォルトでは、ポッドはデプロイされているノードのスコープを継承します。ポッド単位でアクセスを制限する場合は、GKE のサービス アカウントで認証するためのガイドをご覧ください。[保存] をクリックします。これにより、[Kubernetes クラスタの作成] ページに戻ります。

  8. [Kubernetes クラスタの作成] ページで、ページの一番下までスクロールし、[可用性、ネットワーキング、セキュリティ、その他の機能] をクリックします。同じページにウィンドウが開きます。

  9. [VPC ネイティブ(エイリアス IP を使用)] を有効にします。現在のプロジェクトに VPC ネットワークがない場合は VPC ネットワークを作成する必要があります。

  10. [Cloud TPU] を有効にします。

  11. クラスタの残りのオプションを、必要に応じて構成します。デフォルト値のままにしておくこともできます。

  12. [作成] をクリックします。

  13. クラスタに接続します。それには、Console の [Kubernetes クラスタ] ページでクラスタを選択してから [接続] ボタンをクリックします。これにより gcloud コマンドが表示されます。このコマンドを Cloud Shell で実行してクラスタに接続します。

gcloud

gcloud コマンドライン ツールを使用して環境を設定し、Cloud TPU に対応する GKE クラスタを作成するには、以下の手順を使用します。

  1. gcloud コンポーネントをインストールします。GKE を Cloud TPU で実行するには、このコンポーネントが必要です。

    $ gcloud components install
  2. GCP プロジェクトを指定します。

    $ gcloud config set project YOUR-CLOUD-PROJECT
    

    ここで、YOUR-CLOUD-PROJECT は、GCP プロジェクトの名前です。

  3. Cloud TPU リソースを使用する予定のゾーンを指定します。この例では us-central1-b ゾーンを使用します。

    $ gcloud config set compute/zone us-central1-b
    

    Cloud TPU は次のゾーンで使用できます。

    US

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB us-central1-b
    us-central1-c
    us-central1-f TFRC のみ
    v2-32(ベータ版) 32 256 GiB us-central1-a
    v2-128(ベータ版) 128 1 TiB us-central1-a
    v2-256(ベータ版) 256 2 TiB us-central1-a
    v2-512(ベータ版) 512 4 TiB us-central1-a
    TPU タイプ(v3) TPU v3 コア数 TPU メモリ合計 利用可能なゾーン
    v3-8 8 128 GiB us-central1-a
    us-central1-b
    us-central1-f TFRC のみ

    ヨーロッパ

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB europe-west4-a
    v2-32(ベータ版) 32 256 GiB europe-west4-a
    v2-128(ベータ版) 128 1 TiB europe-west4-a
    v2-256(ベータ版) 256 2 TiB europe-west4-a
    v2-512(ベータ版) 512 4 TiB europe-west4-a
    TPU タイプ(v3) TPU v3 コア数 TPU メモリ合計 利用可能なゾーン
    v3-8 8 128 GiB europe-west4-a
    v3-32(ベータ版) 32 512 GiB europe-west4-a
    v3-64(ベータ版) 64 1 TiB europe-west4-a
    v3-128(ベータ版) 128 2 TiB europe-west4-a
    v3-256(ベータ版) 256 4 TiB europe-west4-a
    v3-512(ベータ版) 512 8 TiB europe-west4-a
    v3-1024(ベータ版) 1024 16 TiB europe-west4-a
    v3-2048(ベータ版) 2048 32 TiB europe-west4-a

    アジア太平洋

    TPU タイプ(v2) TPU v2 コア数 TPU メモリ合計 利用可能なゾーン
    v2-8 8 64 GiB asia-east1-c
  4. Cloud TPU をサポートするクラスタを GKE 上に作成するには、gcloud container clusters create コマンドを使用します。次のコマンドの YOUR-CLUSTER の部分は、任意のクラスタ名に置き換えます。

    $ gcloud container clusters create YOUR-CLUSTER \
      --cluster-version=1.13 \
      --scopes=cloud-platform \
      --enable-ip-alias \
      --enable-tpu
    

    上記のコマンドの各要素の意味は次のとおりです。

    • --cluster-version=1.13 は、クラスタで最新の Kubernetes 1.13 リリースが使用されるように指定します。バージョン 1.13.4-gke.5 以降を使用する必要があります。
    • --scopes=cloud-platform を指定して、上記の YOUR-CLOUD-PROJECT で定義された GCP プロジェクト内の Cloud Storage バケットに、クラスタのすべてのノードがアクセスできるようにします。この設定を機能させるためには、クラスタとストレージ バケットが同じプロジェクト内に存在していなければなりません。デフォルトでは、ポッドはデプロイされているノードのスコープを継承します。このため、--scopes=cloud-platform によりクラスタ内で実行中のすべてのポッドに cloud-platform スコープが指定されます。ポッド単位でアクセスを制限する場合は、GKE のサービス アカウントで認証するためのガイドをご覧ください。
    • --enable-ip-alias は、クラスタでエイリアス IP 範囲が使用されるように指定します。これは、GKE 上で Cloud TPU を使用する場合に必要です。
    • --enable-tpu は、クラスタで Cloud TPU がサポートされるように指定します。
    • --tpu-ipv4-cidr(省略可。上記のコマンドでは指定されていません)は、Cloud TPU に使用する CIDR 範囲のロケーションを指定します。IP_RANGEIP/20 の形式にできます(10.100.0.0/20 など)。このフラグを指定しなければ、/20 サイズの CIDR 範囲が自動的に割り当てられます。

Docker イメージ内にモデルをビルドしてコンテナ化する

Docker イメージ内にコンテナ化された公式の TPU モデルの使用、または、独自のモデルのビルドおよびコンテナ化が可能です。

  • 公式の TPU モデルを使用する場合

    最新の公式 TPU モデルは、Docker イメージ内にコンテナ化されています。これらの Docker イメージは Dockerfile でビルドされたものです。以下のセクションでは、公式 TPU モデルの Docker イメージを使用します。

  • 独自のモデルをビルドする場合

    GKE 上で Cloud TPU を実行する独自のモデルをビルドする場合は、以下のように、tf.contrib.cluster_resolver.TPUClusterResolver、および tf.contrib.tpu.TPUEstimator を指定して TensorFlow で Cloud TPU を利用できます。

    # The tpu_names, zone, and project must be omitted in TPUClusterResolver
    as GKE automatically uses the Cloud TPU created for your
    job when your runs.
    
    tpu_cluster_resolver = tf.contrib.cluster_resolver.TPUClusterResolver()
    
    run_config = tpu_config.RunConfig(
      cluster=tpu_cluster_resolver,
      ...
    )
    estimator = tpu_estimator.TPUEstimator(
      use_tpu=True,
      config=run_config,
      ...
    )
    

詳細については、TensorFlow での Cloud TPU の使用方法に関する TensorFlow ドキュメントをご覧ください。

モデルを Docker イメージにコンテナ化して、Google Container Registry に push するには、コンテナ化されたウェブ アプリケーションのデプロイのステップ 1 と 2 の説明をご覧ください。

Cloud TPU を Kubernetes ポッド仕様でリクエストする

ポッド仕様を次のように設定します。

  • 次のポッド アノテーションを使用して、Cloud TPU ノードで使用する TensorFlow のバージョンを指定します。

    tf-version.cloud-tpus.google.com: "x.y"
    

    ここで、x.y は、Cloud TPU でサポートされる TensorFlow のバージョンです。TensorFlow 1.13 以降を使用する必要があります。ポッド用に作成される Cloud TPU インスタンスは、いずれも同じ TensorFlow バージョンを使用します。コンテナ内のすべてのモデルは、同じ TensorFlow バージョンを使用して構築する必要があります。サポートされているバージョンをご覧ください。

  • コンテナ仕様内の resource フィールドの limits セクションで、Cloud TPU リソースを指定します。

    Cloud TPU リソースの単位は Cloud TPU コア数になります。次の表は、すべての有効なリソース リクエストの一覧です。

    使用する予定のリソースが Cloud TPU Pod の場合、Cloud TPU Pod のデフォルトの割り当てはゼロであるため、割り当てをリクエストしてください。

    リソース リクエスト Cloud TPU タイプ 必要な GKE バージョン
    cloud-tpus.google.com/v2: 8 Cloud TPU v2 デバイス(8 コア) 1.10.4-gke.2 以降
    cloud-tpus.google.com/v2: 32 v2-32 Cloud TPU Pod(32 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v2: 128 v2-128 Cloud TPU Pod(128 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v2: 256 v2-256 Cloud TPU Pod(256 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v2: 512 v2-512 Cloud TPU Pod(512 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 32 v3-32 Cloud TPU Pod(32 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 64 v3-64 Cloud TPU Pod(64 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 128 v3-128 Cloud TPU Pod(128 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 256 v3-256 Cloud TPU Pod(256 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 512 v3-512 Cloud TPU Pod(512 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 1024 v3-1024 Cloud TPU Pod(1024 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/v3: 2048 v3-2048 Cloud TPU Pod(2048 コア)(ベータ版) 1.10.7-gke.6 以降
    cloud-tpus.google.com/preemptible-v2: 8 プリエンプティブル Cloud TPU v2 デバイス(8 コア) 1.10.6-gke.1 以降
    cloud-tpus.google.com/v3: 8 Cloud TPU v3 デバイス(8 コア) 1.10.7-gke.6 以降
    cloud-tpus.google.com/preemptible-v3: 8 プリエンプティブル Cloud TPU v3 デバイス(8 コア) 1.10.7-gke.6 以降

    ポッド仕様でのリソースと制限の指定の詳細については、Kubernetes ドキュメントをご覧ください。

たとえば、次のジョブ仕様では TensorFlow 1.14 を使用したプリエンプティブル Cloud TPU v2 デバイスを 1 つリクエストしています。

apiVersion: batch/v1
kind: Job
metadata:
  name: resnet-tpu
spec:
  template:
    metadata:
      annotations:
        # The Cloud TPUs that will be created for this Job must support
        # TensorFlow 1.14. This version MUST match
        # the TensorFlow version that your model is built on.
        tf-version.cloud-tpus.google.com: "1.14"
    spec:
      restartPolicy: Never
      containers:
      - name: resnet-tpu
        # The official TensorFlow 1.14 TPU model image built from
        # https://github.com/tensorflow/tpu/blob/r1.14/tools/docker/Dockerfile.
        image: gcr.io/tensorflow/tpu-models:r1.14
        command:
        - python
        - /tensorflow_tpu_models/models/official/resnet/resnet_main.py
        - --data_dir=gs://cloud-tpu-test-datasets/fake_imagenet
        - --model_dir=gs://<my-model-bucket>/resnet
        env:
        # Point PYTHONPATH to the top level models folder
        - name: PYTHONPATH
          value: "/tensorflow_tpu_models/models"
        resources:
          limits:
            # Request a single v2-8 Preemptible Cloud TPU device to train the model.
            # A single v2-8 Preemptible Cloud TPU device consists of 4 chips, each of which
            # has 2 cores, so there are 8 cores in total.
            cloud-tpus.google.com/preemptible-v2: 8

ジョブを作成する

GKE クラスタ内にジョブを作成して、kubectl をインストールするには、次の手順に従います。

  1. ジョブ仕様 example-job.yaml を作成し、上記のジョブ仕様を含めます。

  2. ジョブを実行します。

    $ kubectl create -f example-job.yaml
    job "resnet-tpu" created

    このコマンドによって作成されるジョブが、ポッドを自動的にスケジュールします。

  3. ポッドがスケジュールされて、Cloud TPU ノードがプロビジョニングされたことを確認します。Cloud TPU ノードをリクエストするポッドは、実行までに 5 分ほど保留されることがあります。ポッドがスケジュールされるまでは、次のような出力が表示されます。

    $ kubectl get pods -w
    
    NAME               READY     STATUS    RESTARTS   AGE
    resnet-tpu-cmvlf   0/1       Pending   0          1m
    

    5 分後に、次のような出力が表示されます。

    NAME               READY     STATUS    RESTARTS   AGE
    resnet-tpu-cmvlf   1/1       Running   0          6m
    
    Cloud TPU ノードの存続期間は、それらのノードをリクエストするポッドにバインドされます。Cloud TPU は、ポッドがスケジュールされるとオンデマンドで作成され、ポッドが削除されるとリサイクルされます。

Cloud TPU ログを取得する

Kubernetes ポッドで使用される Cloud TPU インスタンスのログを取得するには、以下の手順を使用します。

  1. GCP Console の GKE ページに移動します。

    GKE ページに移動

  2. [ワークロード] をクリックします。

  3. デプロイ / ジョブを見つけてクリックします。

  4. [管理されたポッド] の下のポッドを見つけてクリックします。

  5. [コンテナ] からコンテナを見つけてクリックします。

  6. [Stackdriver のログ] をクリックすると、このコンテナで使用されている Cloud TPU のログが表示されます。

指標の可視化とパフォーマンス分析には、TensorBoard を使用します。

TensorBoard には、TensorFlow データを視覚的に表示するための一連のツールが用意されています。TensorBoard は、処理のボトルネックを識別し、パフォーマンスの改善方法を探る際に役立ちます。

TPU Profiler は、個々の Cloud TPU または Cloud TPU Pod のプロファイルをキャプチャして TensorBoard で可視化できるようにする、TensorBoard プラグインです。TPU Profiler を使用して実行中の TensorFlow モデルからトレース情報が収集されると、TensorBoard メニューバーの [プロファイル] タブで Cloud TPU ツールセレクタが有効になります。

GKE クラスタで Tensorboard を実行する

GKE クラスタで TensorBoard を実行するには、以下の手順を使用します。

  1. TensorBoard デプロイの YAML 構成をダウンロードします。

    wget https://raw.githubusercontent.com/tensorflow/tpu/r1.14/tools/kubernetes/tensorboard_k8s.yaml
  2. ファイル内の環境変数 MODEL_BUCKET を、モデルと TensorFlow イベントが存在する Cloud Storage の場所に変更します。

  3. GKE クラスタで TensorBoard を実行します。

    <pre>kubectl apply -f tensorboard_k8s.yaml</pre>
    
  4. TensorBoard の EXTERNAL_IP を取得します。リクエストを TensorBoard にルーティングするロードバランサが作成されるため、追加コストが発生します。

    <pre>kubectl get service tensorboard-service</pre>
    
  5. ブラウザ内で http://EXTERNAL_IP:6006 にアクセスします。

TPU プロファイラを実行してトレース情報を取得する

GKE クラスタで TPU プロファイラを実行するには、以下の手順を使用します。

  1. TPU プロファイラ ジョブの YAML 構成をダウンロードします。

    wget https://raw.githubusercontent.com/tensorflow/tpu/r1.14/tools/kubernetes/tpu_profiler_k8s.yaml
  2. ファイル内の環境変数 TPU_NAME を、プロファイルを作成する Cloud TPU の名前に変更します。Cloud Console の [Compute Engine] > [TPU] ページには、TPU 名が次の形式で表示されます。

    gke-[CLUSTER-NAME]-[CLUSTER-ID]-tpu-[TPU-ID]
    
    次に例を示します。
    gke-demo-cluster-25cee208-tpu-4b90f4c5

  3. ファイル内の環境変数 MODEL_BUCKET を、モデルと TensorFlow イベントが存在する Cloud Storage の場所に変更します。

  4. GKE クラスタで TPU プロファイラを実行します。

    kubectl create -f tpu_profiler_k8s.yaml
    
  5. ブラウザを更新して、TensorBoard の [プロファイル] タブでトレースデータを表示します。

クリーンアップ

GKE 上で Cloud TPU を使い終わったら、リソースをクリーンアップして、Google Cloud Platform アカウントに余分に課金されないようにしてください。

Console

GKE クラスタを削除します。

  1. GCP Console の GKE ページに移動します。

    GKE ページに移動

  2. 削除するクラスタの横にあるチェックボックスをオンにします。

  3. [削除] をクリックします。

データの検証が終了したら、このチュートリアルで作成した Cloud Storage バケットを削除します。

  1. GCP Console の Cloud Storage ページに移動します。

    Cloud Storage ページに移動

  2. 削除するバケットの横にあるチェックボックスをオンにします。

  3. [削除] をクリックします。

無料の保存容量の制限やその他の料金に関する情報については、Cloud Storage の料金ガイドをご覧ください。

gcloud

このセッションでプロジェクトとゾーンを設定していない場合は、この時点で設定します。このガイドの上述の手順をご覧ください。続いて、次のクリーンアップ手順を実行します。

  1. 次のコマンドを実行して GKE クラスタを削除します。YOUR-CLUSTER の部分はクラスタ名、YOUR-PROJECT の部分は GCP プロジェクト名で置き換えます。

    $ gcloud container clusters delete YOUR-CLUSTER --project=YOUR-PROJECT
    
  2. データの確認が終わったら、gsutil コマンドを使用して、このチュートリアルで作成した Cloud Storage バケットを削除します。YOUR-BUCKET は、使用する Cloud Storage バケットの名前に置き換えます。

    $ gsutil rm -r gs://YOUR-BUCKET
    

    無料の保存容量の制限やその他の料金に関する情報については、Cloud Storage の料金ガイドをご覧ください。

次のステップ

  • チュートリアルに沿って、Cloud TPU と GKE 上で TensorFlow ResNet-50 モデルをトレーニングする。
  • 次のジョブ仕様のいずれかを使用して、他のモデルとデータセット取得ジョブを実行する。

    • GKE に COCO データセットをダウンロードして前処理する。
    • GKE に ImageNet をダウンロードして前処理する。
    • Cloud TPU と GKE を使用して AmoebaNet-D をトレーニングする。
    • Cloud TPU と GKE を使用して Inception v3 をトレーニングする。
    • Cloud TPU と GKE を使用して RetinaNet をトレーニングする。

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

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

ご不明な点がありましたら、Google のサポートページをご覧ください。