Cloud TPU(TF 2.x)での EfficientNet のトレーニング


このチュートリアルでは、tf.distribute.TPUStrategy を使用して Cloud TPU で Keras EfficientNet モデルをトレーニングする方法を説明します。

Cloud TPU に精通していない場合は、クイックスタートで Cloud TPU と Compute Engine VM の作成方法を確認することを強くおすすめします。

目標

  • データセットとモデルの出力を格納する Cloud Storage バケットを作成します。
  • ImageNet データセットに類似したフェイク ImageNet データセットを準備します。
  • トレーニング ジョブを実行します。
  • 出力結果を確認します。

費用

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

  • Compute Engine
  • Cloud TPU
  • Cloud Storage

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

始める前に

このチュートリアルを開始する前に、Google Cloud プロジェクトが正しく設定されていることを確認します。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

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

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. このチュートリアルでは、Google Cloud の課金対象となるコンポーネントを使用します。費用を見積もるには、Cloud TPU の料金ページを確認してください。不要な課金を回避するために、このチュートリアルを完了したら、作成したリソースを必ずクリーンアップしてください。

Cloud TPU 単一デバイスのトレーニング

このセクションでは、Cloud TPU リソースを構成し、単一の Cloud TPU デバイスを使用して EfficientNet モデルをトレーニングする方法について説明します。

  1. Cloud Shell ウィンドウを開きます。

    Cloud Shell を開く

  2. プロジェクト ID の変数を作成します。

    export PROJECT_ID=project-id
    
  3. Cloud TPU を作成するプロジェクトを使用するように Google Cloud CLI を構成します。

    gcloud config set project ${PROJECT_ID}
    

    このコマンドを新しい Cloud Shell VM で初めて実行すると、Authorize Cloud Shell ページが表示されます。ページの下部にある [Authorize] をクリックして、gcloud に認証情報を使用した API の呼び出しを許可します。

    gcloud コマンドの詳細については、gcloud リファレンスをご覧ください。

  4. Cloud TPU プロジェクトのサービス アカウントを作成します。

    サービス アカウントにより、Cloud TPU サービスが他の Google Cloud サービスにアクセスできるようになります。

    gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
    

    このコマンドでは、Cloud TPU サービス アカウントを次の形式で返します。

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    

  5. TPU の設定変数をエクスポートする

    モデルをトレーニングするゾーンを設定し、トレーニング関連のデータを保存します。

    $ export ZONE=europe-west4-a
    
  6. 次のコマンドを使用して Cloud Storage バケットを作成します。

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name/
    

    この Cloud Storage バケットには、モデルのトレーニングに使用するデータとトレーニング結果が格納されます。このチュートリアルで使用する gcloud compute tpus execution-groups コマンドは、前の手順で設定した Cloud TPU サービス アカウントのデフォルトの権限を設定します。権限の詳細な設定が必要な場合は、アクセスレベル権限をご覧ください。

    バケットのロケーションは、Compute Engine(VM)および Cloud TPU ノードと同じリージョンにする必要があります。

  7. データセットは、独自に用意するか、fake_imagenet を使用します。

    ImageNet は画像データベースです。このデータベース内では画像が階層に編成されていて、階層の各ノードを数百、数千もの画像で表しています。

    このチュートリアルでは、ImageNet の完全版のデータセットの fake_imagenet と呼ばれるデモバージョンを使用しています。このデモバージョンを使用すると、ストレージ容量と所要時間を ImageNet の完全版のデータセットに対してモデルを実行する際に通常必要となるものより抑えながらチュートリアルを試すことができます。

    fake_imagenet データセットは Cloud Storage の次のロケーションにあります。

    gs://cloud-tpu-test-datasets/fake_imagenet

    fake_imagenet データセットは、Cloud TPU の使用方法を理解し、エンドツーエンドのパフォーマンスを検証する場合にのみ役立ちます。精度の数値と保存されたモデルは意味がありません。

    完全な ImageNet データセットを使用する場合は、ImageNet データセットのダウンロード、前処理、アップロードをご覧ください。

  8. gcloud コマンドを使用して TPU リソースを起動します。使用するコマンドは、TPU VM を使用するか TPU ノードを使用するかによって異なります。2 つの VM アーキテクチャの詳細については、システム アーキテクチャをご覧ください。

    TPU VM

    $ gcloud compute tpus tpu-vm create efficientnet-tutorial \
    --zone=${ZONE} \
    --accelerator-type=v3-8 \
    --version=tpu-vm-tf-2.16.1-pjrt
    

    コマンドフラグの説明

    zone
    Cloud TPU を作成するゾーン
    accelerator-type
    アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU のバージョンごとにサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
    version
    Cloud TPU ソフトウェアのバージョン

    TPU ノード

    gcloud compute tpus execution-groups create \
    --name=efficientnet-tutorial \
    --zone=${ZONE} \
    --disk-size=300 \
    --machine-type=n1-standard-16 \
    --tf-version=2.12.0 \
    --accelerator-type=v3-8
    

    コマンドフラグの説明

    project
    : Google Cloud プロジェクト ID
    name
    作成する Cloud TPU の名前。
    zone
    Cloud TPU を作成するゾーン
    disk-size
    gcloud コマンドで作成された VM のハードディスクのサイズ(GB)。
    machine-type
    作成する Compute Engine VM のマシンタイプ
    tf-version
    Tensorflow gcloud のバージョンが VM にインストールされます。
    accelerator-type
    作成する Cloud TPU のタイプ

    gcloud コマンドの詳細については、gcloud リファレンスをご覧ください。

  9. 自動的に Compute Engine インスタンスにログインしない場合は、次の ssh コマンドを実行してログインします。VM にログインすると、シェル プロンプトが username@projectname から username@vm-name に変わります。

    TPU VM

    gcloud compute tpus tpu-vm ssh efficientnet-tutorial --zone=${ZONE}
    

    TPU ノード

    gcloud compute ssh efficientnet-tutorial --zone=${ZONE}
    
  10. Cloud TPU 名の変数を設定します。

    TPU VM

    (vm)$ export TPU_NAME=local
    

    TPU ノード

    (vm)$ export TPU_NAME=efficientnet-tutorial
    
  11. Cloud Storage バケットの変数を設定する

    bucket-name を該当する Cloud Storage バケットの名前に置き換えます。

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/efficientnet-2x
    (vm)$ export DATA_DIR=gs://cloud-tpu-test-datasets/fake_imagenet
    

    トレーニング アプリケーションでは、Cloud Storage でトレーニング データにアクセスできる必要があります。また、トレーニング アプリケーションは、Cloud Storage バケットを使用してトレーニング中にチェックポイントを保存します。

  12. TPU を作成するときに、--version パラメータを -pjrt で終わるバージョンに設定した場合は、次の環境変数を設定して PJRT ランタイムを有効にします。

      (vm)$ export NEXT_PLUGGABLE_DEVICE_USE_C_API=true
      (vm)$ export TF_PLUGGABLE_DEVICE_LIBRARY_PATH=/lib/libtpu.so
    
  13. TensorFlow の要件をインストールします。

    使用するコマンドは、TPU VM を使用するか TPU ノードを使用するかによって異なります。

    TPU VM

    (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
    

    TPU ノード

    (vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
    
  14. EfficientNet トレーニング スクリプトには、追加のパッケージが必要です(TPU VM のみ)。この時点で、これらのパッケージをインストールしておきます。

    TPU VM

    (vm)$ sudo pip3 install tensorflow-addons
    (vm)$ sudo pip3 install tensorflow-model-optimization>=0.1.3
    
  15. 必要な環境変数を次のように設定します。

    TPU VM

    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/tpu/models"
    

    TPU ノード

    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
    

    EfficientNet モデルは、Compute Engine VM にプリインストールされています。

  16. モデルが保存されているディレクトリに移動します。

    TPU VM

    (vm)$ cd /usr/share/tpu/models/official/legacy/image_classification
    

    TPU ノード

    (vm)$ cd /usr/share/models/official/legacy/image_classification
    
  17. モデルをトレーニングします。これは fake_imagenet データセットを使用し、EfficientNet を 1 エポック、トレーニングします。

    (vm)$ python3 classifier_trainer.py \
      --mode=train_and_eval \
      --model_type=efficientnet \
      --dataset=imagenet \
      --tpu=${TPU_NAME} \
      --data_dir=${DATA_DIR} \
      --model_dir=${MODEL_DIR} \
      --config_file=configs/examples/efficientnet/imagenet/efficientnet-b0-tpu.yaml \
      --params_override="train.epochs=1, train_dataset.builder=records, validation_dataset.builder=records"
    

    コマンドフラグの説明

    mode
    trainevaltrain_and_eval のいずれか。
    model_type
    モデルのタイプ例: efficientnet
    dataset
    データセットの名前。例: imagenet
    tpu
    トレーニングまたは評価を実行するための Cloud TPU の名前。
    data_dir
    トレーニング入力用の Cloud Storage のパスを指定します。この例では、fake_imagenet データセットに設定されています。
    model_dir
    モデルのトレーニングの際にチェックポイントとサマリーが保存される Cloud Storage パス。以前のチェックポイントが、同じサイズの Cloud TPU と TensorFlow バージョンを使用して作成されていれば、既存のフォルダを再利用して以前に生成されたチェックポイントを読み込み、追加のチェックポイントを保存できます。
    config_file
    事前トレーニング済みの EfficientNet モデルを含む JSON ファイルへのパス。このファイルにはモデル アーキテクチャが含まれています。
    params_override
    デフォルトのスクリプト パラメータをオーバーライドする JSON 文字列。スクリプト パラメータの詳細については、/usr/share/models/official/legacy/detection/main.py をご覧ください。

    これにより、EfficientNet を 1 エポック トレーニングし、v3-8 Cloud TPU ノードでは約 40 分で完了します。トレーニング スクリプトが完了すると、次のような出力が表示されます。

    Run stats:
    {
      'accuracy_top_1': 0.0010172526817768812,
      'eval_loss': 7.104171276092529,
      'loss': 7.113735675811768,
      'training_accuracy_top_1': 0.0009773431811481714,
      'step_timestamp_log': [
        'BatchTimestamp<batch_index: 0,
        timestamp: 1604960724.2224622>',
        'BatchTimestamp<batch_index: 1251,
        timestamp: 1604961281.3745298>'
      ],
      'train_finish_time': 1604961342.6359076,
      'avg_exp_per_second': 2071.493269569079
    }
    

    EfficientNet を ImageNet データセットで収束するようにトレーニングするには、次のスクリプトに示すように 90 エポックまで実行します。トレーニングと評価は一緒に行われます。合計 112,590 ステップ中、各エポックには、1,251 のトレーニング ステップと 48 の評価ステップがあります。

    (vm)$ python3 classifier_trainer.py \
         --mode=train_and_eval \
         --model_type=efficientnet \
         --dataset=imagenet \
         --tpu=${TPU_NAME} \
         --data_dir=${DATA_DIR} \
         --model_dir=${MODEL_DIR} \
         --config_file=configs/examples/efficientnet/imagenet/efficientnet-b0-tpu.yaml \
         --params_override="train_dataset.builder=records, validation_dataset.builder=records"
    

    コマンドフラグの説明

    mode
    trainevaltrain_and_eval
    のいずれか。
    model_type
    モデルのタイプ(efficientnet など)。
    dataset
    データセットの名前。例: imagenet
    tpu
    トレーニングまたは評価を実行するための Cloud TPU の名前。
    data_dir
    トレーニング入力用の Cloud Storage のパスを指定します。この例では、fake_imagenet データセットに設定されています。
    model_dir
    モデルのトレーニングの際にチェックポイントとサマリーが保存される Cloud Storage パス。以前のチェックポイントが、同じサイズの Cloud TPU と TensorFlow バージョンを使用して作成されていれば、既存のフォルダを再利用して以前に生成されたチェックポイントを読み込み、追加のチェックポイントを保存できます。
    config_file
    事前トレーニング済みの EfficientNet モデルを含む JSON ファイルへのパス。このファイルにはモデル アーキテクチャが含まれています。
    params_override
    デフォルトのスクリプト パラメータをオーバーライドする JSON 文字列。スクリプト パラメータの詳細については、/usr/share/models/official/legacy/detection/main.py をご覧ください。

    トレーニングは fake_imagenet データセットに対して行われたため、出力結果には、実際のデータセットでトレーニングが実行された場合に表示される実際の出力は反映されません。

    これで単一デバイスのトレーニングが完了しました。現在の単一デバイスの TPU リソースを削除するには、次の手順を使用します。

  18. Compute Engine インスタンスから接続を切断します。

    (vm)$ exit
    

    プロンプトが username@projectname に変わります。これは、現在、Cloud Shell 内にいることを示しています。

  19. TPU リソースを削除します。

    TPU VM

    $ gcloud compute tpus tpu-vm delete efficientnet-tutorial \
    --zone=${ZONE}
    

    コマンドフラグの説明

    zone
    Cloud TPU が存在するゾーン

    TPU ノード

    $ gcloud compute tpus execution-groups delete efficientnet-tutorial \
    --tpu-only \
    --zone=${ZONE}
    

    コマンドフラグの説明

    tpu-only
    Cloud TPU のみを削除します。VM は引き続き使用できます。
    zone
    削除する TPU を含むゾーン

この時点で、このチュートリアルを終了してクリーンアップすることも、Cloud TPU Pod でのモデルの実行を続行して調べることもできます。

Cloud TPU Pod でモデルのスケーリングする

Cloud TPU Pod でモデルをトレーニングするには、トレーニング スクリプトに変更を加える必要がある場合があります。詳細については、TPU Pod でのトレーニングをご覧ください。

Cloud TPU Pod でのトレーニング

このセクションでは、Pod のトレーニング用の Cloud Storage バケットと Cloud TPU リソースの設定について説明します。

  1. Cloud Shell ウィンドウを開きます。

    Cloud Shell を開く

  2. プロジェクト ID の変数を作成します。

    export PROJECT_ID=project-id
    
  3. Cloud TPU を作成するプロジェクトを使用するように Google Cloud CLI を構成します。

    gcloud config set project ${PROJECT_ID}
    

    このコマンドを新しい Cloud Shell VM で初めて実行すると、Authorize Cloud Shell ページが表示されます。ページの下部にある [Authorize] をクリックして、gcloud に認証情報を使用した Google Cloud API の呼び出しを許可します。

  4. Cloud TPU プロジェクトのサービス アカウントを作成します。

    サービス アカウントにより、Cloud TPU サービスが他の Google Cloud サービスにアクセスできるようになります。

    gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID
    

    このコマンドでは、Cloud TPU サービス アカウントを次の形式で返します。

    service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
    

  5. 次のコマンドを使用して Cloud Storage バケットを作成するか、以前にプロジェクト用に作成したバケットを使用します。

    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
    

    この Cloud Storage バケットには、モデルのトレーニングに使用するデータとトレーニング結果が格納されます。このチュートリアルで使用する gcloud コマンドは、前の手順で設定した Cloud TPU サービス アカウントのデフォルトの権限を設定します。権限の詳細な設定が必要な場合は、アクセスレベル権限をご覧ください。

    バケットのロケーションは、TPU VM と同じリージョンとなる必要があります。

  6. TPU の設定変数をエクスポートする

    モデルをトレーニングするゾーンを設定し、トレーニング関連のデータを保存します。

    $ export ZONE=europe-west4-a

  7. データセットは、独自に用意するか、fake_imagenet を使用します。

    ImageNet は画像データベースです。このデータベース内では画像が階層に編成されていて、階層の各ノードを数百、数千もの画像で表しています。

    デフォルトの Pod トレーニングでは、ImageNet の完全版データセットの fnet_imagenet と呼ばれるデモバージョンにアクセスします。このデモバージョンを使用すると、ImageNet データベース全体に対してモデルをトレーニングするときに通常伴うストレージと時間の要件を削減すると同時に Pod のトレーニングをテストできます。

    fake_imagenet データセットは、Cloud TPU の使用方法を理解し、エンドツーエンドのパフォーマンスを検証する場合にのみ役立ちます。精度の数値と保存されたモデルは意味がありません。

    完全な ImageNet データセットを使用する場合は、ImageNet データセットのダウンロード、前処理、アップロードをご覧ください。

  8. gcloud コマンドを使用して Cloud TPU リソースを起動します。

    使用するコマンドは、TPU VM を使用するか TPU ノードを使用するかによって異なります。2 つの VM アーキテクチャの詳細については、システム アーキテクチャをご覧ください。gcloud コマンドの詳細については、gcloud リファレンスをご覧ください。このチュートリアルでは、v3-32 Pod を指定します。他の Pod オプションについては、TPU のバージョンをご覧ください。

    TPU VM

    $ gcloud compute tpus tpu-vm create efficientnet-tutorial \
      --zone=${ZONE} \
      --accelerator-type=v3-32 \
      --version=tpu-vm-tf-2.16.1-pod-pjrt
    

    コマンドフラグの説明

    zone
    Cloud TPU を作成するゾーン
    accelerator-type
    アクセラレータ タイプでは、作成する Cloud TPU のバージョンとサイズを指定します。TPU のバージョンごとにサポートされているアクセラレータ タイプの詳細については、TPU のバージョンをご覧ください。
    version
    Cloud TPU ソフトウェアのバージョン

    TPU ノード

    (vm)$ gcloud compute tpus execution-groups  create --name=efficientnet-tutorial \
     --accelerator-type=v3-32  \
     --zone=${ZONE} \
     --tf-version=2.12.0
    

    コマンドフラグの説明

    name
    作成する Cloud TPU の名前。
    accelerator-type
    作成する Cloud TPU のタイプ
    zone
    Cloud TPU を作成するゾーン
    tf-version
    Tensorflow gcloud のバージョンが VM にインストールされます。
    tpu-only
    Cloud TPU のみを作成します。デフォルトでは、gcloud コマンドは VM と Cloud TPU を作成します。
  9. 自動的に Compute Engine インスタンスにログインしない場合は、次の ssh コマンドを実行してログインします。VM にログインすると、シェル プロンプトが username@projectname から username@vm-name に変わります。

    TPU VM

    $ gcloud compute tpus tpu-vm ssh efficientnet-tutorial --zone=${ZONE}
    

    TPU ノード

    $ gcloud compute ssh efficientnet-tutorial --zone=${ZONE}
    

    これらの手順を続行する場合は、VM セッション ウィンドウで、(vm)$ で始まる各コマンドを実行します。

  10. TPU の設定変数をエクスポートします。

    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export TPU_NAME=efficientnet-tutorial
    (vm)$ export DATA_DIR=gs://cloud-tpu-test-datasets/fake_imagenet
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/efficientnet-2x-pod
    

    トレーニング アプリケーションでは、Cloud Storage でトレーニング データにアクセスできる必要があります。また、トレーニング アプリケーションは、Cloud Storage バケットを使用してトレーニング中にチェックポイントを保存します。

  11. TensorFlow の要件をインストールします。

    TPU VM

    (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
    

    TPU ノード

    (vm)$ pip3 install -r /usr/share/models/official/requirements.txt
    
  12. 必要な環境変数を次のように設定します。

    TPU VM

    (vm)$ export PYTHONPATH="/usr/share/tpu/models:${PYTHONPATH}"
    (vm)$ export TPU_LOAD_LIBRARY=0
    

    TPU ノード

    (vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
    

    EfficientNet モデルは、Compute Engine VM にプリインストールされています。

  13. モデルが保存されているディレクトリに移動します。

    TPU VM

    (vm)$ cd /usr/share/tpu/models/official/legacy/image_classification/
    

    TPU ノード

    (vm)$ cd /usr/share/models/official/legacy/image_classification/
    
  14. モデルをトレーニングします。

    (vm)$ python3 classifier_trainer.py \
    --mode=train_and_eval \
    --model_type=efficientnet \
    --dataset=imagenet \
    --tpu=${TPU_NAME} \
    --data_dir=${DATA_DIR} \
    --model_dir=${MODEL_DIR} \
    --config_file=configs/examples/efficientnet/imagenet/efficientnet-b0-tpu.yaml \
    --params_override="train.epochs=1, train_dataset.builder=records, validation_dataset.builder=records"
    

    コマンドフラグの説明

    mode
    train_and_eval に設定すると、このスクリプトはモデルをトレーニングして評価します。export_only に設定すると、このスクリプトは保存されたモデルをエクスポートします。
    model_type
    モデルのタイプ(efficientnet など)。
    dataset
    データセットの名前。例: imagenet
    tpu
    TPU_NAME 変数で指定された名前を使用します。
    data_dir
    トレーニング入力用の Cloud Storage のパスを指定します。この例では、fake_imagenet データセットに設定されています。
    model_dir
    モデルのトレーニングの際にチェックポイントとサマリーが保存される Cloud Storage パス。以前のチェックポイントが、同じサイズの Cloud TPU と TensorFlow バージョンを使用して作成されていれば、既存のフォルダを再利用して以前に生成されたチェックポイントを読み込み、追加のチェックポイントを保存できます。
    config_file
    事前トレーニング済みの EfficientNet モデルを含む JSON ファイルへのパス。このファイルにはモデル アーキテクチャが含まれています。
    params_override
    デフォルトのスクリプト パラメータをオーバーライドする JSON 文字列。スクリプト パラメータの詳細については、/usr/share/models/official/legacy/detection/main.py をご覧ください。

この手順は、fake_imagnet データセットに対してモデルを 1 エポックまでトレーニング(合計 312 トレーニング ステップ、12 評価ステップ)します。このトレーニングは、v3-32 Cloud TPU 上で約 2 分かかります。トレーニングと評価が完了すると、次のようなメッセージが表示されます。

Run stats:
{
  'accuracy_top_1': 0.0009969075908884406,
  'eval_loss': 7.105168342590332,
  'loss': 7.114983081817627,
  'training_accuracy_top_1': 0.0010031675919890404,
  'step_timestamp_log': [
    'BatchTimestamp<batch_index: 0,
    timestamp: 1605041621.4997303>',
    'BatchTimestamp<batch_index: 312,
    timestamp: 1605041970.8633356>'
  ],
  'train_finish_time': 1605042032.2274444,
  'avg_exp_per_second': 3111.5120716536226
}

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

  1. Compute Engine インスタンスとの接続を切断していない場合は切断します。

    (vm)$ exit
    

    プロンプトが username@projectname に変わります。これは、現在、Cloud Shell 内にいることを示しています。

  2. Cloud TPU と Compute Engine リソースを削除します。

    TPU VM

    $ gcloud compute tpus tpu-vm delete efficientnet-tutorial \
    --zone=${ZONE}
    

    TPU ノード

    $ gcloud compute tpus execution-groups delete efficientnet-tutorial \
    --zone=${ZONE}
    
  3. gcloud compute tpus execution-groups list を実行して、リソースが削除されたことを確認します。削除には数分かかることがあります。次のコマンドの出力には、このチュートリアルで作成したリソースを含めないでください。

    $ gcloud compute tpus execution-groups list --zone=${ZONE}
    
  4. 次に示すように、gsutil を使用して Cloud Storage バケットを削除します。bucket-name を Cloud Storage バケットの名前に置き換えます。

    $ gsutil rm -r gs://bucket-name
    

次のステップ

TensorFlow Cloud TPU のチュートリアルでは通常、サンプル データセットを使用してモデルをトレーニングします。このトレーニングの結果は推論に使用できません。モデルを推論に使用するには、一般公開されているデータセットまたは独自のデータセットでデータをトレーニングします。Cloud TPU でトレーニングされた TensorFlow モデルは通常、データセットを TFRecord 形式にする必要があります。

データセット変換ツールのサンプルを使用して、画像分類データセットを TFRecord 形式に変換できます。画像分類モデルを使用しない場合は、自分でデータセットを TFRecord 形式に変換する必要があります。詳細については、TFRecord と tf.Example をご覧ください。

ハイパーパラメータ チューニング

データセットでモデルのパフォーマンスを向上させるには、モデルのハイパーパラメータを調整します。すべての TPU でサポートされているモデルに共通のハイパーパラメータに関する情報については、GitHub をご覧ください。モデルに固有のハイパーパラメータに関する情報については、各モデルのソースコードで確認できます。ハイパーパラメータ調整の詳細については、ハイパーパラメータ調整の概要ハイパーパラメータを調整するをご覧ください。

推論

モデルをトレーニングしたら、そのモデルを推論(予測)に使用できます。Cloud TPU 推論コンバータ ツールを使用して、Cloud TPU v5e での推論用の TensorFlow モデルを準備して最適化できます。Cloud TPU v5e での推論の詳細については、Cloud TPU v5e 推論の概要をご覧ください。

  • データセット変換チュートリアルに従って、fake_imagenet データセットまたは ImageNet データセットの代わりに独自のデータを使用してトレーニングと評価を行う方法を学習します。 このチュートリアルでは、画像分類データ変換プログラムのサンプル スクリプトを使用して、画像分類用の生のデータセットを Cloud TPU Tensorflow モデルで使用される TFRecord に変換する方法について説明します。

  • 独自の画像データを使用して画像分類モデルを実行する方法を示す Cloud TPU colab を実行します。

  • 他の Cloud TPU チュートリアルを確認する。

  • TensorBoard の TPU モニタリング ツールの使用方法を学習する。