Dokumen ini menunjukkan cara menjalankan model ShapeMask menggunakan Cloud TPU dengan set data COCO.
Petunjuk di bawah ini mengasumsikan bahwa Anda sudah terbiasa menjalankan model di Cloud TPU. Jika baru menggunakan Cloud TPU, Anda dapat membaca Panduan Memulai untuk mendapatkan pengantar dasar.
Jika Anda berencana untuk berlatih di slice Pod TPU, tinjau Pelatihan tentang Pod TPU untuk memahami perubahan parameter yang diperlukan untuk slice Pod.
Tujuan
- Siapkan set data COCO
- Membuat bucket Cloud Storage untuk menyimpan set data dan output model
- Menyiapkan resource TPU untuk pelatihan dan evaluasi
- Menjalankan pelatihan dan evaluasi pada satu Cloud TPU atau Pod Cloud TPU
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.
Sebelum memulai
Sebelum memulai tutorial ini, pastikan project Google Cloud Anda sudah disiapkan dengan benar.
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
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 memberikan informasi tentang penyiapan resource Cloud Storage, VM, dan Cloud TPU untuk pelatihan perangkat tunggal.
Jika Anda berencana untuk berlatih di slice Pod TPU, tinjau Pelatihan tentang Pod TPU untuk memahami perubahan yang diperlukan untuk melatih slice Pod.
Di Cloud Shell, buat variabel untuk ID project Anda.
export PROJECT_ID=project-id
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. KlikAuthorize
di bagian bawah halaman untuk mengizinkangcloud
melakukan panggilan API GCP dengan kredensial Anda.Membuat Akun Layanan untuk project Cloud TPU.
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
Siapkan set data COCO
Tutorial ini menggunakan {i>dataset <i}COCO. Set data harus dalam format TFRecord di bucket Cloud Storage agar dapat digunakan untuk pelatihan.
Lokasi bucket harus berada di region yang sama dengan virtual machine (VM) dan TPU node Anda. VM dan node TPU terletak di zona tertentu, yang merupakan subdivisi dalam suatu region.
Bucket Cloud Storage menyimpan data yang Anda gunakan untuk melatih model dan hasil pelatihan. Alat 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.
Jika sudah menyiapkan set data COCO di bucket Cloud Storage yang terletak di zona yang akan digunakan untuk melatih model, Anda dapat meluncurkan resource TPU dan menyiapkan Cloud TPU untuk pelatihan. Jika tidak, gunakan langkah-langkah berikut untuk menyiapkan set data.
Di Cloud Shell, konfigurasikan
gcloud
dengan ID project Anda.export PROJECT_ID=project-id gcloud config set project ${PROJECT_ID}
Di Cloud Shell, buat bucket Cloud Storage menggunakan perintah berikut:
gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
Luncurkan instance VM Compute Engine.
Instance VM ini hanya akan digunakan untuk mendownload dan melakukan prapemrosesan set data COCO. Isi instance-name dengan nama pilihan Anda.
$ gcloud compute tpus execution-groups create \ --vm-only \ --name=instance-name \ --zone=europe-west4-a \ --disk-size=300 \ --machine-type=n1-standard-16 \ --tf-version=2.12.0
Deskripsi flag perintah
vm-only
- Buat VM saja. Secara default, perintah
gcloud compute tpus execution-groups
akan membuat VM dan Cloud TPU. 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 compute tpus execution-groups
. machine-type
- Jenis mesin VM Compute Engine yang akan dibuat.
tf-version
- Versi Tensorflow
gcloud compute tpus execution-groups
dapat diinstal di VM.
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 dariusername@projectname
menjadiusername@vm-name
:$ gcloud compute ssh instance-name --zone=europe-west4-a
Siapkan dua variabel, satu untuk bucket penyimpanan yang Anda buat sebelumnya, dan satu lagi untuk direktori yang menyimpan data pelatihan (DATA_DIR) di bucket penyimpanan.
(vm)$ export STORAGE_BUCKET=gs://bucket-name
(vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
Instal paket yang diperlukan untuk melakukan pra-pemrosesan data.
(vm)$ sudo apt-get install -y python3-tk && \ pip3 install --user Cython matplotlib opencv-python-headless pyyaml Pillow && \ pip3 install --user "git+https://github.com/cocodataset/cocoapi#egg=pycocotools&subdirectory=PythonAPI"
Jalankan skrip
download_and_preprocess_coco.sh
untuk mengonversi set data COCO menjadi kumpulan TFRecords (*.tfrecord
) yang diharapkan oleh aplikasi pelatihan.(vm)$ git clone https://github.com/tensorflow/tpu.git (vm)$ sudo bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco
Tindakan ini akan menginstal library yang diperlukan, lalu menjalankan skrip pra-pemrosesan. Ini menghasilkan sejumlah file
*.tfrecord
di direktori data lokal Anda. Skrip konversi dan download COCO memerlukan waktu sekitar 1 jam.Menyalin data ke bucket Cloud Storage
Setelah mengonversi data menjadi TFRecords, salin data tersebut dari penyimpanan lokal ke bucket Cloud Storage menggunakan perintah
gsutil
. Anda juga harus menyalin file anotasi. File ini membantu memvalidasi performa model.(vm)$ gsutil -m cp ./data/dir/coco/*.tfrecord ${DATA_DIR} (vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/*.json ${DATA_DIR}
Membersihkan resource VM
Setelah set data COCO dikonversi menjadi TFRecords dan disalin ke DATA_DIR di bucket Cloud Storage, Anda dapat menghapus instance Compute Engine.
Putuskan koneksi dari instance Compute Engine:
(vm)$ exit
Prompt Anda sekarang akan menjadi
username@projectname
, yang menunjukkan bahwa Anda berada di Cloud Shell.Hapus instance Compute Engine Anda.
$ gcloud compute instances delete instance-name --zone=europe-west4-a
Meluncurkan resource TPU dan melatih model
Gunakan perintah
gcloud
untuk meluncurkan resource TPU. 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 shapemask-tutorial \ --zone=europe-west4-a \ --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 \ --zone=europe-west4-a \ --name=shapemask-tutorial \ --accelerator-type=v3-8 \ --machine-type=n1-standard-8 \ --disk-size=300 \ --tf-version=2.12.0
Deskripsi flag perintah
zone
- Zona tempat Anda berencana membuat Cloud TPU.
name
- Nama TPU. Jika tidak ditentukan, setelan defaultnya adalah nama pengguna Anda.
accelerator-type
- Jenis Cloud TPU yang akan dibuat.
machine-type
- Jenis mesin VM Compute Engine yang akan dibuat.
disk-size
- Ukuran volume root VM Compute Engine Anda (dalam GB).
tf-version
- Versi Tensorflow
gcloud
dapat diinstal di VM.
Untuk mengetahui informasi lebih lanjut tentang perintah
gcloud
, lihat Referensi gcloud.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 dariusername@projectname
menjadiusername@vm-name
:VM TPU
gcloud compute tpus tpu-vm ssh shapemask-tutorial --zone=europe-west4-a
Node TPU
gcloud compute ssh shapemask-tutorial --zone=europe-west4-a
Saat Anda melanjutkan petunjuk ini, jalankan setiap perintah yang diawali dengan
(vm)$
di jendela sesi VM Anda.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
Skrip pelatihan memerlukan paket tambahan. Instal sekarang:
VM TPU
(vm)$ pip3 install --user tensorflow-model-optimization>=0.1.3
Node TPU
(vm)$ pip3 install --user tensorflow-model-optimization>=0.1.3
Tetapkan variabel nama bucket penyimpanan. Ganti bucket-name dengan nama bucket penyimpanan Anda:
(vm)$ export STORAGE_BUCKET=gs://bucket-name
Tetapkan variabel nama Cloud TPU.
VM TPU
(vm)$ export TPU_NAME=local
Node TPU
(vm)$ export TPU_NAME=shapemask-tutorial
Tetapkan variabel lingkungan
PYTHONPATH
:VM TPU
(vm)$ export PYTHONPATH="/usr/share/tpu/models:${PYTHONPATH}"
Node TPU
(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
Ubah ke direktori yang menyimpan model:
VM TPU
(vm)$ cd /usr/share/tpu/models/official/legacy/detection
Node TPU
(vm)$ cd /usr/share/models/official/legacy/detection
Tambahkan beberapa variabel lingkungan yang diperlukan:
(vm)$ export RESNET_CHECKPOINT=gs://cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07 (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco (vm)$ export TRAIN_FILE_PATTERN=${DATA_DIR}/train-* (vm)$ export EVAL_FILE_PATTERN=${DATA_DIR}/val-* (vm)$ export VAL_JSON_FILE=${DATA_DIR}/instances_val2017.json (vm)$ export SHAPE_PRIOR_PATH=gs://cloud-tpu-checkpoints/shapemask/kmeans_class_priors_91x20x32x32.npy (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/shapemask
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
Latih model ShapeMask:
Skrip berikut menjalankan contoh pelatihan yang melatih hanya 100 langkah dan memerlukan waktu sekitar 10 menit untuk menyelesaikannya di TPU v3-8. Melatih ke konvergensi memerlukan waktu sekitar 22.500 langkah dan sekitar 6 jam pada TPU v3-8.
(vm)$ python3 main.py \ --strategy_type=tpu \ --tpu=${TPU_NAME} \ --model_dir=${MODEL_DIR} \ --mode=train \ --model=shapemask \ --params_override="{train: {total_steps: 100, learning_rate: {init_learning_rate: 0.08, learning_rate_levels: [0.008, 0.0008], learning_rate_steps: [15000, 20000], }, checkpoint: { path: ${RESNET_CHECKPOINT},prefix: resnet50}, train_file_pattern: ${TRAIN_FILE_PATTERN}}, shapemask_head: {use_category_for_mask: true, shape_prior_path: ${SHAPE_PRIOR_PATH}}, shapemask_parser: {output_size: [640, 640]}}"
Deskripsi flag perintah
strategy_type
- Untuk melatih model Shapemask di TPU, Anda harus menetapkan
distribution_strategy
ketpu
. tpu
- Nama Cloud TPU. Ini ditetapkan menggunakan
variabel lingkungan
TPU_NAME
. model_dir
- Direktori tempat checkpoint dan ringkasan disimpan selama pelatihan model. Jika folder tidak ada, program akan membuatnya.
Saat menggunakan Cloud TPU,
model_dir
harus berupa jalur Cloud Storage (gs://...
). Anda dapat menggunakan kembali folder yang ada untuk memuat data checkpoint saat ini dan menyimpan checkpoint tambahan selama checkpoint sebelumnya dibuat menggunakan Cloud TPU dengan ukuran dan versi TensorFlow yang sama. mode
- Tetapkan ini ke
train
untuk melatih model ataueval
untuk mengevaluasi 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
.
Setelah pelatihan selesai, pesan yang mirip dengan yang berikut ini akan muncul:
Train Step: 100/100 / loss = {'total_loss': 10.815635681152344, 'loss': 10.815635681152344, 'retinanet_cls_loss': 1.4915691614151, 'l2_regularization_loss': 4.483549118041992, 'retinanet_box_loss': 0.013074751943349838, 'shapemask_prior_loss': 0.17314358055591583, 'shapemask_coarse_mask_loss': 1.953366756439209, 'shapemask_fine_mask_loss': 2.216097831726074, 'model_loss': 6.332086086273193, 'learning_rate': 0.021359999} / training metric = {'total_loss': 10.815635681152344, 'loss': 10.815635681152344, 'retinanet_cls_loss': 1.4915691614151, 'l2_regularization_loss': 4.483549118041992, 'retinanet_box_loss': 0.013074751943349838, 'shapemask_prior_loss': 0.17314358055591583, 'shapemask_coarse_mask_loss': 1.953366756439209, 'shapemask_fine_mask_loss': 2.216097831726074, 'model_loss': 6.332086086273193, 'learning_rate': 0.021359999}
Jalankan skrip untuk mengevaluasi model ShapeMask. Proses ini memerlukan waktu sekitar 10 menit pada TPU v3-8:
(vm)$ python3 main.py \ --strategy_type=tpu \ --tpu=${TPU_NAME} \ --model_dir=${MODEL_DIR} \ --checkpoint_path=${MODEL_DIR} \ --mode=eval_once \ --model=shapemask \ --params_override="{eval: { val_json_file: ${VAL_JSON_FILE}, eval_file_pattern: ${EVAL_FILE_PATTERN}, eval_samples: 5000 }, shapemask_head: {use_category_for_mask: true, shape_prior_path: ${SHAPE_PRIOR_PATH}}, shapemask_parser: {output_size: [640, 640]}}"
Deskripsi flag perintah
strategy_type
- Untuk melatih model Shapemask di TPU, Anda harus menetapkan
distribution_strategy
ketpu
. tpu
- Nama Cloud TPU. Ini ditetapkan menggunakan
variabel lingkungan
TPU_NAME
. model_dir
- Direktori tempat checkpoint dan ringkasan disimpan selama pelatihan model. Jika folder tidak ada, program akan membuatnya.
Saat menggunakan Cloud TPU,
model_dir
harus berupa jalur Cloud Storage (gs://...
). Anda dapat menggunakan kembali folder yang ada untuk memuat data checkpoint saat ini dan menyimpan checkpoint tambahan selama checkpoint sebelumnya dibuat menggunakan Cloud TPU dengan ukuran dan versi TensorFlow yang sama. mode
- Tetapkan ini ke
train
untuk melatih model ataueval
untuk mengevaluasi 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
.
Setelah evaluasi selesai, akan muncul pesan yang mirip dengan pesan berikut:
DONE (t=5.47s). Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.000 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.000 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.000 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.000
Sekarang Anda telah menyelesaikan pelatihan dan evaluasi satu perangkat. Gunakan langkah-langkah berikut untuk menghapus resource TPU satu perangkat saat ini.
Putuskan koneksi dari instance Compute Engine:
(vm)$ exit
Prompt Anda sekarang akan menjadi
username@projectname
, yang menunjukkan bahwa Anda berada di Cloud Shell.Hapus resource TPU.
VM TPU
$ gcloud compute tpus tpu-vm delete shapemask-tutorial \ --zone=europe-west4-a
Deskripsi flag perintah
zone
- Zona tempat Cloud TPU Anda berada.
Node TPU
$ gcloud compute tpus execution-groups delete shapemask-tutorial \ --tpu-only \ --zone=europe-west4-a
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 TPU
Buka jendela Cloud Shell.
Buat variabel untuk ID project Anda.
export PROJECT_ID=project-id
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. KlikAuthorize
di bagian bawah halaman untuk mengizinkangcloud
melakukan panggilan API GCP dengan kredensial Anda.Membuat Akun Layanan untuk project Cloud TPU.
Akun layanan memungkinkan layanan Cloud TPU mengakses layanan Google Cloud Platform 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
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
Jika sebelumnya Anda telah menyiapkan set data COCO dan memindahkannya ke bucket penyimpanan, Anda dapat menggunakannya lagi untuk pelatihan Pod. Jika Anda belum menyiapkan set data COCO, siapkan sekarang dan kembali ke sini untuk menyiapkan pelatihan Pod.
Meluncurkan Pod Cloud TPU
Tutorial ini menentukan Pod v3-32. Untuk opsi Pod lainnya, lihat versi TPU.
VM TPU
$ gcloud compute tpus tpu-vm create shapemask-tutorial \ --zone=europe-west4-a \ --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
$ gcloud compute tpus execution-groups create \ --zone=europe-west4-a \ --name=shapemask-tutorial \ --accelerator-type=v3-32 \ --machine-type=n1-standard-8 \ --disk-size=300 \ --tf-version=2.12.0
Deskripsi flag perintah
zone
- Zona tempat Anda berencana membuat Cloud TPU.
name
- Nama TPU. Jika tidak ditentukan, setelan defaultnya adalah nama pengguna Anda.
accelerator-type
- Jenis Cloud TPU yang akan dibuat.
machine-type
- Jenis mesin VM Compute Engine yang akan dibuat.
disk-size
- Ukuran volume root VM Compute Engine Anda (dalam GB).
tf-version
- Versi Tensorflow
gcloud
dapat diinstal di VM.
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 dariusername@projectname
menjadiusername@vm-name
:VM TPU
gcloud compute tpus tpu-vm ssh shapemask-tutorial --zone=europe-west4-a
Node TPU
gcloud compute ssh shapemask-tutorial --zone=europe-west4-a
Saat Anda melanjutkan petunjuk ini, jalankan setiap perintah yang diawali dengan
(vm)$
di jendela sesi VM Anda.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
Skrip pelatihan memerlukan paket tambahan. Instal sekarang:
VM TPU
(vm)$ pip3 install --user tensorflow-model-optimization>=0.1.3
Node TPU
(vm)$ pip3 install --user tensorflow-model-optimization>=0.1.3
Siapkan variabel lingkungan berikut, dengan mengganti bucket-name dengan nama bucket Cloud Storage Anda:
(vm)$ export STORAGE_BUCKET=gs://bucket-name
Aplikasi pelatihan mengharapkan data pelatihan Anda dapat diakses di Cloud Storage. Aplikasi pelatihan juga menggunakan bucket Cloud Storage Anda untuk menyimpan checkpoint selama pelatihan.
Perbarui variabel pelatihan yang diperlukan.
(vm)$ export MODEL_DIR=${STORAGE_BUCKET}/shapemask-pods (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco (vm)$ export RESNET_CHECKPOINT=gs://cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07 (vm)$ export TRAIN_FILE_PATTERN=${DATA_DIR}/train-* (vm)$ export EVAL_FILE_PATTERN=${DATA_DIR}/val-* (vm)$ export VAL_JSON_FILE=${DATA_DIR}/instances_val2017.json (vm)$ export SHAPE_PRIOR_PATH=gs://cloud-tpu-checkpoints/shapemask/kmeans_class_priors_91x20x32x32.npy
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"
Ubah ke direktori yang menyimpan model:
VM TPU
(vm)$ cd /usr/share/tpu/models/official/legacy/detection
Node TPU
(vm)$ cd /usr/share/models/official/legacy/detection
Mulai pelatihan Pod.
Pelatihan contoh ini hanya berjalan selama 20 langkah dan memerlukan waktu sekitar 10 menit untuk diselesaikan pada node TPU v3-32. Melatih ke konvergensi memerlukan sekitar 11.250 langkah dan sekitar 2 jam pada Pod TPU v3-32.
(vm)$ python3 main.py \ --strategy_type=tpu \ --tpu=${TPU_NAME} \ --model_dir=${MODEL_DIR} \ --mode=train \ --model=shapemask \ --params_override="{train: { batch_size: 128, iterations_per_loop: 500, total_steps: 20, learning_rate: {'learning_rate_levels': [0.008, 0.0008], 'learning_rate_steps': [10000, 13000] }, checkpoint: { path: ${RESNET_CHECKPOINT}, prefix: resnet50/ }, train_file_pattern: ${TRAIN_FILE_PATTERN} }, eval: { val_json_file: ${VAL_JSON_FILE}, eval_file_pattern: ${EVAL_FILE_PATTERN}}, shapemask_head: {use_category_for_mask: true, shape_prior_path: ${SHAPE_PRIOR_PATH}} }"
Deskripsi flag perintah
strategy_type
- Untuk melatih model Shapemask di TPU, Anda harus menetapkan
distribution_strategy
ketpu
. tpu
- Nama Cloud TPU. Ini ditetapkan menggunakan
variabel lingkungan
TPU_NAME
. model_dir
- Direktori tempat checkpoint dan ringkasan disimpan selama pelatihan model. Jika folder tidak ada, program akan membuatnya.
Saat menggunakan Cloud TPU,
model_dir
harus berupa jalur Cloud Storage (gs://...
). Anda dapat menggunakan kembali folder yang ada untuk memuat data checkpoint saat ini dan menyimpan checkpoint tambahan selama checkpoint sebelumnya dibuat menggunakan Cloud TPU dengan ukuran dan versi TensorFlow yang sama. mode
- Tetapkan ini ke
train
untuk melatih model ataueval
untuk mengevaluasi 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
.
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.
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.Hapus resource Cloud TPU dan Compute Engine Anda. Perintah yang digunakan untuk menghapus resource bergantung pada apakah Anda menggunakan VM TPU atau Node TPU. Untuk informasi selengkapnya, lihat Arsitektur Sistem.
VM TPU
$ gcloud compute tpus tpu-vm delete shapemask-tutorial \ --zone=europe-west4-a
Node TPU
$ gcloud compute tpus execution-groups delete shapemask-tutorial \ --zone=europe-west4-a
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=europe-west4-a
Jalankan
gsutil
seperti yang ditunjukkan, dengan mengganti bucket-name dengan nama bucket Cloud Storage yang Anda buat untuk tutorial ini:$ gsutil rm -r gs://bucket-name
Langkah selanjutnya
Berlatih dengan ukuran gambar yang berbeda
Anda dapat menjelajah menggunakan jaringan neural yang lebih besar (misalnya, ResNet-101, bukan ResNet-50). Gambar input yang lebih besar dan jaringan neural yang lebih canggih akan menghasilkan model yang lebih lambat, tetapi lebih akurat.
Gunakan basis yang berbeda
Atau, Anda dapat mempelajari pra-pelatihan model ResNet di set data Anda sendiri dan menggunakannya sebagai dasar untuk model ShapeMask Anda. Dengan beberapa pekerjaan lagi, Anda juga dapat bertukar di jaringan neural alternatif sebagai pengganti ResNet. Terakhir, jika Anda tertarik untuk menerapkan model deteksi objek Anda sendiri, jaringan ini dapat menjadi dasar yang baik untuk eksperimen lebih lanjut.