Melatih EfficientNet di Cloud TPU (TF 2.x)


Tutorial ini menunjukkan cara melatih model Keras EfficientNet di Cloud TPU menggunakan tf.distribute.TPUStrategy.

Jika belum terbiasa menggunakan Cloud TPU, sebaiknya Anda membaca quickstart untuk mempelajari cara membuat Cloud TPU dan VM Compute Engine.

Tujuan

  • Membuat bucket Cloud Storage untuk menyimpan set data dan output model Anda.
  • Siapkan set data imagenet palsu yang mirip dengan set data ImageNet.
  • Menjalankan tugas pelatihan.
  • Verifikasi hasil output.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

  • Compute Engine
  • Cloud TPU
  • Cloud Storage

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

Sebelum memulai tutorial ini, pastikan project Google Cloud Anda sudah disiapkan dengan benar.

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. Panduan ini menggunakan komponen Google Cloud yang dapat ditagih. Lihat halaman harga Cloud TPU untuk memperkirakan biaya Anda. Pastikan untuk membersihkan resource yang Anda buat setelah selesai menggunakannya untuk menghindari biaya yang tidak perlu.

Pelatihan perangkat tunggal Cloud TPU

Bagian ini menjelaskan cara mengonfigurasi resource Cloud TPU dan melatih model EfficientNet menggunakan satu perangkat Cloud TPU.

  1. Buka jendela Cloud Shell.

    Buka Cloud Shell

  2. Buat variabel untuk ID project Anda.

    export PROJECT_ID=project-id
  3. Konfigurasikan Google Cloud CLI untuk menggunakan project tempat Anda ingin membuat Cloud TPU.

    gcloud config set project ${PROJECT_ID}

    Saat pertama kali menjalankan perintah ini di VM Cloud Shell baru, halaman Authorize Cloud Shell akan ditampilkan. Klik Authorize di bagian bawah halaman untuk mengizinkan gcloud melakukan panggilan API dengan kredensial Anda.

    Untuk mengetahui informasi lebih lanjut tentang perintah gcloud, lihat Referensi gcloud.

  4. Membuat Akun Layanan untuk project Cloud TPU.

    Akun layanan memungkinkan layanan Cloud TPU mengakses layanan Google Cloud lainnya.

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

    Perintah akan menampilkan Akun Layanan Cloud TPU dengan format berikut:

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

  5. Mengekspor variabel penyiapan TPU

    Tetapkan zona tempat Anda akan melatih model dan simpan semua data terkait pelatihan.

    $ export ZONE=europe-west4-a
  6. Buat bucket Cloud Storage menggunakan perintah berikut:

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

    Bucket Cloud Storage ini menyimpan data yang Anda gunakan untuk melatih model dan hasil pelatihan. Perintah gcloud compute tpus execution-groups yang digunakan dalam tutorial ini menyiapkan izin default untuk Akun Layanan Cloud TPU yang Anda siapkan di langkah sebelumnya. Jika Anda menginginkan izin yang lebih terperinci, tinjau izin tingkat akses.

    Lokasi bucket harus berada di region yang sama dengan Compute Engine (VM) dan node Cloud TPU.

  7. Siapkan set data Anda atau gunakan fake_imagenet

    ImageNet adalah database gambar. Gambar dalam database diatur menjadi hierarki, dengan setiap node hierarki digambarkan dalam ratusan gambar.

    Tutorial ini menggunakan versi demonstrasi set data ImageNet lengkap, yang disebut sebagai fake_imagenet. Versi demonstrasi ini memungkinkan Anda untuk menguji tutorial, sekaligus mengurangi persyaratan penyimpanan dan waktu yang biasanya terkait dengan menjalankan model pada database ImageNet lengkap.

    Set data palsu_imagenet berada di lokasi ini pada Cloud Storage:

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

    Set data fault_imagenet hanya berguna untuk memahami cara menggunakan Cloud TPU dan memvalidasi performa end-to-end. Angka akurasi dan model yang tersimpan tidak akan bermakna.

    Jika Anda ingin menggunakan set data ImageNet lengkap, lihat Mendownload, melakukan prapemrosesan, dan mengupload set data ImageNet.

  8. Luncurkan resource TPU menggunakan perintah gcloud. Perintah yang digunakan bergantung pada apakah Anda menggunakan VM TPU atau node TPU. Untuk informasi selengkapnya tentang dua arsitektur VM, lihat Arsitektur Sistem.

    VM TPU

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

    Deskripsi flag perintah

    zone
    Zona tempat Anda berencana membuat Cloud TPU.
    accelerator-type
    Jenis akselerator menentukan versi dan ukuran Cloud TPU yang ingin Anda buat. Untuk mengetahui informasi selengkapnya tentang jenis akselerator yang didukung untuk setiap versi TPU, lihat versi TPU.
    version
    Versi software Cloud TPU.

    Node 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

    Deskripsi flag perintah

    project
    ID project Google Cloud Anda
    name
    Nama Cloud TPU yang akan dibuat.
    zone
    Zona tempat Anda berencana membuat Cloud TPU.
    disk-size
    Ukuran hard disk dalam GB VM yang dibuat oleh perintah gcloud.
    machine-type
    Jenis mesin VM Compute Engine yang akan dibuat.
    tf-version
    Versi Tensorflow gcloud dapat diinstal di VM.
    accelerator-type
    Jenis Cloud TPU yang akan dibuat.

    Untuk mengetahui informasi lebih lanjut tentang perintah gcloud, lihat Referensi gcloud.

  9. Jika Anda tidak login secara otomatis ke instance Compute Engine, login dengan menjalankan perintah ssh berikut. Saat Anda login ke VM, perintah shell Anda akan berubah dari username@projectname menjadi username@vm-name:

    VM TPU

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

    Node TPU

    gcloud compute ssh efficientnet-tutorial --zone=${ZONE}
  10. Tetapkan variabel nama Cloud TPU.

    VM TPU

    (vm)$ export TPU_NAME=local

    Node TPU

    (vm)$ export TPU_NAME=efficientnet-tutorial
  11. Menetapkan variabel bucket Cloud Storage

    Ganti bucket-name dengan nama bucket Cloud Storage Anda:

    (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

    Aplikasi pelatihan mengharapkan data pelatihan Anda dapat diakses di Cloud Storage. Aplikasi pelatihan juga menggunakan bucket Cloud Storage Anda untuk menyimpan checkpoint selama pelatihan.

  12. Saat membuat TPU, jika Anda menetapkan parameter --version ke versi yang diakhiri dengan -pjrt, tetapkan variabel lingkungan berikut untuk mengaktifkan runtime PJRT:

      (vm)$ export NEXT_PLUGGABLE_DEVICE_USE_C_API=true
      (vm)$ export TF_PLUGGABLE_DEVICE_LIBRARY_PATH=/lib/libtpu.so
  13. Instal persyaratan TensorFlow.

    Perintah yang digunakan bergantung pada apakah Anda menggunakan VM TPU atau Node TPU.

    VM TPU

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

    Node TPU

    (vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
  14. Skrip pelatihan EfficientNet memerlukan paket tambahan (khusus TPU VM). Instal sekarang:

    VM TPU

    (vm)$ sudo pip3 install tensorflow-addons
    (vm)$ sudo pip3 install tensorflow-model-optimization>=0.1.3
  15. Tetapkan beberapa variabel lingkungan yang diperlukan:

    VM TPU

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

    Node TPU

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

    Model EfficientNet sudah diinstal sebelumnya di VM Compute Engine Anda.

  16. Ubah ke direktori yang menyimpan model:

    VM TPU

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

    Node TPU

    (vm)$ cd /usr/share/models/official/legacy/image_classification
  17. Latih model. Kode ini menggunakan set data fault_imagenet dan melatih EfficientNet untuk satu epoch.

    (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"

    Deskripsi flag perintah

    mode
    Salah satu dari train, eval, atau train_and_eval.
    model_type
    Jenis model. Contoh, efficientnet.
    dataset
    Nama set data. Contoh, imagenet.
    tpu
    Nama Cloud TPU untuk menjalankan pelatihan atau evaluasi.
    data_dir
    Menentukan jalur Cloud Storage untuk input pelatihan. Pada contoh ini, nilai ini disetel ke set data palsu_imagenet.
    model_dir
    Jalur Cloud Storage tempat checkpoint dan ringkasan disimpan selama pelatihan model. Anda dapat menggunakan kembali folder yang ada untuk memuat checkpoint yang dihasilkan sebelumnya dan menyimpan checkpoint tambahan selama checkpoint sebelumnya dibuat menggunakan Cloud TPU dengan ukuran dan versi TensorFlow yang sama.
    config_file
    Jalur ke file json yang berisi model EfficientNet yang telah dilatih sebelumnya. File ini berisi arsitektur model.
    params_override
    String JSON yang mengganti parameter skrip default. Untuk informasi selengkapnya tentang parameter skrip, lihat /usr/share/models/official/legacy/detection/main.py.

    Tindakan ini akan melatih EfficientNet selama 1 epoch dan akan selesai pada node Cloud TPU v3-8 dalam waktu sekitar 40 menit. Setelah skrip pelatihan selesai, output yang mirip dengan berikut akan muncul:

    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
    }
    

    Untuk melatih EfficientNet agar konvergensi pada set data ImageNet, jalankan selama 90 epoch seperti yang ditunjukkan dalam skrip berikut. Pelatihan dan evaluasi dilakukan bersama. Setiap epoch memiliki 1.251 langkah dengan total 112.590 langkah pelatihan dan 48 langkah evaluasi.

    (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"

    Deskripsi flag perintah

    mode
    Salah satu dari train, eval, atau train_and_eval.
    model_type
    Jenis model. Misalnya, efficientnet, dll.
    dataset
    Nama set data. Contoh, imagenet.
    tpu
    Nama Cloud TPU untuk menjalankan pelatihan atau evaluasi.
    data_dir
    Menentukan jalur Cloud Storage untuk input pelatihan. Pada contoh ini, set data ini ditetapkan ke set data palsu_imagenet.
    model_dir
    Jalur Cloud Storage tempat checkpoint dan ringkasan disimpan selama pelatihan model. Anda dapat menggunakan kembali folder yang sudah ada untuk memuat checkpoint yang dihasilkan sebelumnya dan untuk menyimpan checkpoint tambahan selama checkpoint sebelumnya dibuat menggunakan Cloud TPU dengan ukuran dan versi TensorFlow yang sama.
    config_file
    Jalur ke file JSON yang berisi model EfficientNet yang telah dilatih sebelumnya. File ini berisi arsitektur model.
    params_override
    String JSON yang mengganti parameter skrip default. Untuk informasi selengkapnya tentang parameter skrip, lihat /usr/share/models/official/legacy/detection/main.py.

    Karena pelatihan dilakukan pada set data palsu_imagenet, hasil output tidak mencerminkan output aktual yang akan muncul jika pelatihan dilakukan pada set data sebenarnya.

    Sekarang Anda telah menyelesaikan pelatihan satu perangkat. Gunakan langkah-langkah berikut untuk menghapus resource TPU satu perangkat saat ini.

  18. Putuskan koneksi dari instance Compute Engine:

    (vm)$ exit

    Prompt Anda sekarang akan menjadi username@projectname, yang menunjukkan bahwa Anda berada di Cloud Shell.

  19. Hapus resource TPU.

    VM TPU

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

    Deskripsi flag perintah

    zone
    Zona tempat Cloud TPU Anda berada.

    Node TPU

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

    Deskripsi flag perintah

    tpu-only
    Hanya menghapus Cloud TPU. VM tetap tersedia.
    zone
    Zona yang berisi TPU yang akan dihapus.

Di tahap ini, Anda dapat mengakhiri tutorial ini dan membersihkan, atau melanjutkan dan mempelajari cara menjalankan model di Pod Cloud TPU.

Menskalakan model Anda dengan Pod Cloud TPU

Melatih model Anda di Pod Cloud TPU mungkin memerlukan beberapa perubahan pada skrip pelatihan Anda. Untuk mengetahui informasi selengkapnya, lihat Pelatihan terkait Pod TPU.

Pelatihan Pod Cloud TPU

Bagian ini memberikan informasi tentang penyiapan bucket Cloud Storage dan resource Cloud TPU untuk pelatihan Pod.

  1. Buka jendela Cloud Shell.

    Buka Cloud Shell

  2. Buat variabel untuk ID project Anda.

    export PROJECT_ID=project-id
  3. Konfigurasikan Google Cloud CLI untuk menggunakan project tempat Anda ingin membuat Cloud TPU.

    gcloud config set project ${PROJECT_ID}

    Saat pertama kali menjalankan perintah ini di VM Cloud Shell baru, halaman Authorize Cloud Shell akan ditampilkan. Klik Authorize di bagian bawah halaman untuk mengizinkan gcloud melakukan panggilan Google Cloud API dengan kredensial Anda.

  4. Membuat Akun Layanan untuk project Cloud TPU.

    Akun layanan memungkinkan layanan Cloud TPU mengakses layanan Google Cloud lainnya.

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

    Perintah akan menampilkan Akun Layanan Cloud TPU dengan format berikut:

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

  5. Buat bucket Cloud Storage menggunakan perintah berikut atau gunakan bucket yang Anda buat sebelumnya untuk project Anda:

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

    Bucket Cloud Storage ini menyimpan data yang Anda gunakan untuk melatih model dan hasil pelatihan. Perintah gcloud yang digunakan dalam tutorial ini akan menyiapkan izin default untuk Akun Layanan Cloud TPU yang Anda siapkan di langkah sebelumnya. Jika Anda menginginkan izin yang lebih terperinci, tinjau izin tingkat akses.

    Lokasi bucket harus berada di region yang sama dengan VM TPU Anda.

  6. Mengekspor variabel penyiapan TPU

    Tetapkan zona tempat Anda akan melatih model dan simpan semua data terkait pelatihan.

    $ export ZONE=europe-west4-a

  7. Siapkan set data Anda atau gunakan fake_imagenet

    ImageNet adalah database gambar. Gambar dalam database diatur menjadi hierarki, dengan setiap node hierarki digambarkan dalam ratusan gambar.

    Pelatihan Pod default mengakses versi demonstrasi set data ImageNet lengkap, yang disebut sebagai fake_imagenet. Versi demonstrasi ini memungkinkan Anda menguji pelatihan Pod, sekaligus mengurangi persyaratan penyimpanan dan waktu yang biasanya terkait dengan melatih model berdasarkan database ImageNet lengkap.

    Set data fault_imagenet hanya berguna untuk memahami cara menggunakan Cloud TPU dan memvalidasi performa end-to-end. Angka akurasi dan model yang tersimpan tidak akan bermakna.

    Jika Anda ingin menggunakan set data ImageNet lengkap, lihat Mendownload, melakukan prapemrosesan, dan mengupload set data ImageNet.

  8. Luncurkan resource Cloud TPU Anda menggunakan perintah gcloud.

    Perintah yang digunakan bergantung pada apakah Anda menggunakan VM TPU atau node TPU. Untuk informasi selengkapnya tentang dua arsitektur VM, lihat Arsitektur Sistem. Untuk mengetahui informasi lebih lanjut tentang perintah gcloud, lihat Referensi gcloud. Tutorial ini menentukan Pod v3-32. Untuk opsi Pod lainnya, lihat versi TPU.

    VM TPU

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

    Deskripsi flag perintah

    zone
    Zona tempat Anda berencana membuat Cloud TPU.
    accelerator-type
    Jenis akselerator menentukan versi dan ukuran Cloud TPU yang ingin Anda buat. Untuk mengetahui informasi selengkapnya tentang jenis akselerator yang didukung untuk setiap versi TPU, lihat versi TPU.
    version
    Versi software Cloud TPU.

    Node TPU

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

    Deskripsi flag perintah

    name
    Nama Cloud TPU yang akan dibuat.
    accelerator-type
    Jenis Cloud TPU yang akan dibuat.
    zone
    Zona tempat Anda berencana membuat Cloud TPU.
    tf-version
    Versi Tensorflow gcloud dapat diinstal di VM.
    tpu-only
    Buat Cloud TPU saja. Secara default, perintah gcloud akan membuat VM dan Cloud TPU.
  9. Jika Anda tidak login secara otomatis ke instance Compute Engine, login dengan menjalankan perintah ssh berikut. Saat Anda login ke VM, perintah shell Anda akan berubah dari username@projectname menjadi username@vm-name:

    VM TPU

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

    Node TPU

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

    Saat Anda melanjutkan petunjuk ini, jalankan setiap perintah yang diawali dengan (vm)$ di jendela sesi VM Anda.

  10. Ekspor variabel penyiapan 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

    Aplikasi pelatihan mengharapkan data pelatihan Anda dapat diakses di Cloud Storage. Aplikasi pelatihan juga menggunakan bucket Cloud Storage Anda untuk menyimpan checkpoint selama pelatihan.

  11. Instal persyaratan TensorFlow.

    VM TPU

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

    Node TPU

    (vm)$ pip3 install -r /usr/share/models/official/requirements.txt
  12. Tetapkan beberapa variabel lingkungan yang diperlukan:

    VM TPU

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

    Node TPU

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

    Model EfficientNet sudah diinstal sebelumnya di VM Compute Engine Anda.

  13. Ubah ke direktori yang menyimpan model:

    VM TPU

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

    Node TPU

    (vm)$ cd /usr/share/models/official/legacy/image_classification/
  14. Latih model.

    (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"

    Deskripsi flag perintah

    mode
    Jika ditetapkan ke train_and_eval, skrip ini akan melatih dan mengevaluasi model. Jika ditetapkan ke export_only, skrip ini akan mengekspor model tersimpan.
    model_type
    Jenis model. Misalnya, efficientnet, dll.
    dataset
    Nama set data. Contoh, imagenet.
    tpu
    Menggunakan nama yang ditentukan dalam variabel TPU_NAME.
    data_dir
    Menentukan jalur Cloud Storage untuk input pelatihan. Pada contoh ini, nilai ini disetel ke set data palsu_imagenet.
    model_dir
    Jalur Cloud Storage tempat checkpoint dan ringkasan disimpan selama pelatihan model. Anda dapat menggunakan kembali folder yang ada untuk memuat checkpoint yang dihasilkan sebelumnya dan menyimpan checkpoint tambahan selama checkpoint sebelumnya dibuat menggunakan Cloud TPU dengan ukuran dan versi TensorFlow yang sama.
    config_file
    Jalur ke file json yang berisi model EfficientNet yang telah dilatih sebelumnya. File ini berisi arsitektur model.
    params_override
    String JSON yang mengganti parameter skrip default. Untuk informasi selengkapnya tentang parameter skrip, lihat /usr/share/models/official/legacy/detection/main.py.

Prosedur ini melatih model pada set data palsu_imagenet hingga 1 epoch (total 312 langkah pelatihan dan 12 langkah evaluasi). Pelatihan ini memerlukan waktu sekitar 2 menit di Cloud TPU v3-32. Setelah pelatihan dan evaluasi selesai, pesan yang mirip dengan berikut akan muncul:

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
}

Pembersihan

Agar tidak dikenakan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource-nya.

  1. Putuskan koneksi dari instance Compute Engine jika Anda belum melakukannya:

    (vm)$ exit

    Prompt Anda sekarang akan menjadi username@projectname, yang menunjukkan bahwa Anda berada di Cloud Shell.

  2. Hapus resource Cloud TPU dan Compute Engine Anda.

    VM TPU

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

    Node TPU

    $ gcloud compute tpus execution-groups delete efficientnet-tutorial \
    --zone=${ZONE}
  3. Verifikasi bahwa resource telah dihapus dengan menjalankan gcloud compute tpus execution-groups list. Penghapusan memerlukan waktu beberapa menit. Output dari perintah berikut tidak boleh menyertakan resource TPU apa pun yang dibuat dalam tutorial ini:

    $ gcloud compute tpus execution-groups list --zone=${ZONE}
  4. Hapus bucket Cloud Storage menggunakan gsutil seperti yang ditunjukkan di bawah ini. Ganti bucket-name dengan nama bucket Cloud Storage Anda.

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

Langkah selanjutnya

Tutorial TensorFlow Cloud TPU umumnya melatih model menggunakan sampel set data. Hasil pelatihan ini tidak dapat digunakan untuk inferensi. Agar dapat menggunakan model untuk inferensi, Anda dapat melatih data pada set data yang tersedia untuk publik atau set data Anda sendiri. Model TensorFlow yang dilatih di Cloud TPU umumnya memerlukan set data dalam format TFRecord.

Anda dapat menggunakan contoh alat konversi set data untuk mengonversi set data klasifikasi gambar menjadi format TFRecord. Jika tidak menggunakan model klasifikasi gambar, Anda harus mengonversi set data ke format TFRecord sendiri. Untuk mengetahui informasi selengkapnya, lihat TFRecord dan tf.Example.

Penyesuaian hyperparameter

Untuk meningkatkan performa model dengan set data, Anda dapat menyesuaikan hyperparameter model. Anda dapat menemukan informasi tentang hyperparameter yang umum untuk semua model yang didukung TPU di GitHub. Informasi tentang hyperparameter khusus model dapat ditemukan di kode sumber untuk setiap model. Untuk informasi selengkapnya tentang penyesuaian hyperparameter, lihat Ringkasan penyesuaian hyperparameter dan Menyesuaikan hyperparameter.

Inferensi

Setelah melatih model, Anda dapat menggunakannya untuk inferensi (juga disebut prediksi). Anda dapat menggunakan alat konverter inferensi Cloud TPU untuk menyiapkan dan mengoptimalkan model TensorFlow untuk inferensi di Cloud TPU v5e. Untuk mengetahui informasi selengkapnya tentang inferensi di Cloud TPU v5e, lihat pengantar inferensi Cloud TPU v5e.

  • Pelajari cara melatih dan mengevaluasi menggunakan data Anda sendiri sebagai pengganti set datafake_imagenet atau ImageNet dengan mengikuti tutorial konversi set data. Tutorial ini menjelaskan cara menggunakan skrip contoh pengonversi data klasifikasi gambar guna mengonversi set data mentah untuk klasifikasi gambar menjadi TFRecords yang dapat digunakan oleh model Tensorflow Cloud TPU.

  • Jalankan kolab Cloud TPU yang menunjukkan cara menjalankan model klasifikasi gambar menggunakan data gambar Anda sendiri.

  • Pelajari tutorial Cloud TPU lainnya.

  • Pelajari cara menggunakan alat pemantauan TPU di TensorBoard.