Tutorial ini berisi deskripsi tingkat tinggi tentang model MNIST, petunjuk cara mendownload contoh kode TPU TensorFlow MNIST, dan panduan untuk menjalankan kode pada Cloud TPU.
Pernyataan penyangkalan
Tutorial ini menggunakan set data pihak ketiga. Google tidak memberikan representasi, garansi, atau jaminan lain terkait validitas, atau aspek lain apa pun dari set data ini.
Deskripsi model
Set data MNIST berisi sejumlah besar gambar digit tulisan tangan dalam rentang 0 hingga 9, serta label yang mengidentifikasi digit di setiap gambar.
Tutorial ini melatih model machine learning untuk mengklasifikasikan gambar berdasarkan set data MNIST. Setelah pelatihan, model mengklasifikasikan gambar yang masuk ke dalam 10 kategori (0 hingga 9) berdasarkan apa yang dipelajari tentang gambar tulisan tangan dari set data MNIST. Selanjutnya, Anda dapat mengirim gambar yang belum pernah dilihat sebelumnya ke model, dan model mengidentifikasi digit dalam gambar berdasarkan hal yang telah dipelajari model selama pelatihan.
Set data MNIST telah dibagi menjadi tiga bagian:
- 60.000 contoh data pelatihan
- 10.000 contoh data pengujian
- 5.000 contoh data validasi
Model ini memiliki campuran tujuh lapisan:
- 2 x konvolusi
- Penggabungan 2 x maksimum
- 2 x padat (terhubung sepenuhnya)
- 1 x keluar
Kerugian dihitung melalui entropi silang kategori.
Versi model MNIST ini menggunakan Keras API, cara yang direkomendasikan untuk membangun dan menjalankan model machine learning di Cloud TPU.
Keras menyederhanakan proses pengembangan model dengan menyembunyikan sebagian besar implementasi level rendah, sehingga memudahkan peralihan antara TPU dan platform pengujian lainnya seperti GPU atau CPU.
Tujuan
- Membuat bucket Cloud Storage untuk menyimpan set data dan output model Anda.
- 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.
Sebelum memulai
Bagian ini memberikan informasi tentang penyiapan bucket Cloud Storage dan VM Compute Engine.
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 Google Cloud API 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
Buat bucket Cloud Storage menggunakan perintah berikut:
gsutil mb -p ${PROJECT_ID} -c standard -l us-central1 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 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.Luncurkan VM Compute Engine dan Cloud TPU menggunakan perintah
gcloud
. Perintah yang digunakan bergantung pada apakah Anda menggunakan VM TPU atau node TPU. Untuk informasi selengkapnya, lihat Arsitektur Sistem.VM TPU
$ gcloud compute tpus tpu-vm create mnist-tutorial \ --zone=us-central1-b \ --accelerator-type=v3-8 \ --version=tpu-vm-tf-2.16.1-pjrt \ --preemptible
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.
preemptible
- TPU yang preemptible lebih hemat biayanya, tetapi dapat dinonaktifkan kapan saja.
Node TPU
$ gcloud compute tpus execution-groups create \ --name=mnist-tutorial \ --zone=us-central1-b \ --tf-version=2.12.0 \ --machine-type=n1-standard-1 \ --accelerator-type=v3-8 \ --preemptible
Deskripsi flag perintah
name
- Nama Cloud TPU yang akan dibuat.
zone
- Zona tempat Anda berencana membuat Cloud TPU.
tf-version
- Versi TensorFlow yang diinstal perintah
gcloud
di VM Anda. machine-type
- Jenis mesin VM Compute Engine yang akan dibuat.
accelerator-type
- Jenis Cloud TPU yang akan dibuat.
preemptible
- TPU yang preemptible lebih hemat biayanya, tetapi dapat dinonaktifkan kapan saja.
Untuk mengetahui informasi lebih lanjut tentang perintah
gcloud
, lihat Referensi gcloud.Setelah perintah
gcloud compute tpus
selesai dijalankan, pastikan perintah shell Anda telah berubah dariusername@projectname
menjadiusername@vm-name
. Perubahan ini menunjukkan bahwa Anda kini telah login ke VM Compute Engine.Jika tidak terhubung ke instance Compute Engine, Anda dapat menghubungkannya dengan menjalankan perintah berikut:
VM TPU
gcloud compute tpus tpu-vm ssh mnist-tutorial --zone=us-central1-b
Node TPU
gcloud compute ssh mnist-tutorial --zone=us-central1-b
Saat Anda melanjutkan petunjuk ini, jalankan setiap perintah yang diawali dengan
(vm)$
di jendela sesi VM Anda.Buat variabel lingkungan untuk nama TPU.
VM TPU
(vm)$ export TPU_NAME=local
Node TPU
(vm)$ export TPU_NAME=mnist-tutorial
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 tensorflow-model-optimization>=0.1.3
Melatih model
Kode sumber untuk model TPU MNIST tersedia di GitHub.
Tetapkan variabel berikut. Ganti bucket-name dengan nama bucket Anda:
(vm)$ export STORAGE_BUCKET=gs://bucket-name (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/mnist (vm)$ export DATA_DIR=${STORAGE_BUCKET}/data
Menetapkan variabel lingkungan
PYTHONPATH
.VM TPU
(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/tpu/models"
Node TPU
(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
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
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
Jalankan skrip pelatihan MNIST:
(vm)$ python3 mnist_main.py \ --tpu=${TPU_NAME} \ --model_dir=${MODEL_DIR} \ --data_dir=${DATA_DIR} \ --train_epochs=10 \ --distribution_strategy=tpu \ --download
Deskripsi flag perintah
tpu
- Nama Cloud TPU. Jika tidak ditentukan saat menyiapkan VM Compute Engine dan Cloud TPU, nama pengguna Anda akan ditetapkan secara default.
model_dir
- Bucket Cloud Storage tempat checkpoint dan ringkasan disimpan selama pelatihan. Anda dapat menggunakan folder yang sudah ada untuk memuat checkpoint yang dihasilkan sebelumnya yang dibuat di TPU dengan ukuran dan versi TensorFlow yang sama.
data_dir
- Jalur Cloud Storage input pelatihan. Parameter ini disetel ke set data palsu_imagenet dalam contoh ini.
train_epochs
- Jumlah epoch untuk melatih model.
distribution_strategy
- Untuk melatih model ResNet di Cloud TPU, tetapkan
distribution_strategy
ketpu
. download
- Jika ditetapkan ke
true
, skrip akan mendownload dan melakukan prapemrosesan pada set data MNIST, jika belum didownload.
Skrip pelatihan berjalan dalam waktu kurang dari 5 menit di Cloud TPU v3-8 dan menampilkan output yang mirip dengan:
Run stats: { 'accuracy_top_1': 0.9762369990348816, 'eval_loss': 0.07863274961709976, 'loss': 0.1111728847026825, 'training_accuracy_top_1': 0.966645359992981 }
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 mnist-tutorial \ --zone=us-central1-b
Node TPU
$ gcloud compute tpus execution-groups delete mnist-tutorial \ --zone=us-central1-b
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 apa pun yang dibuat dalam tutorial ini:VM TPU
$ gcloud compute tpus tpu-vm list --zone=us-central1-b
Node TPU
$ gcloud compute tpus execution-groups list --zone=us-central1-b
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.
- Jalankan kolab Cloud TPU yang menunjukkan cara melatih model klasifikasi gambar menggunakan data gambar Anda sendiri.
- Pelajari tutorial Cloud TPU lainnya.
- Pelajari cara menggunakan alat pemantauan TPU di TensorBoard.
- Verifikasi performa pada model berskala besar dengan menjalankan contoh ResNet.