Tutorial ini menunjukkan cara melatih model peringkat DLRM dan DCN v2 yang dapat digunakan untuk tugas seperti prediksi rasio klik-tayang (CTR). Lihat catatan dalam artikel Menyiapkan untuk menjalankan model DLRM atau DCN guna mengetahui cara menyetel parameter untuk melatih model peringkat DLRM atau DCN v2.
Input model berupa fitur numerik dan kategoris, sedangkan output-nya berupa skalar (misalnya probabilitas klik). Model ini dapat dilatih dan dievaluasi di Cloud TPU. Model deep peringkat memerlukan banyak memori (untuk embedding tabel/pencarian) dan komputasi intensif untuk jaringan dalam (MLP). TPU dirancang untuk keduanya.
Model ini menggunakan lapisan TPUEmbedding untuk fitur kategoris. Embedding TPU mendukung tabel embedding besar dengan pencarian cepat, dan ukuran tabel embedding diskalakan secara linear dengan ukuran pod TPU. Tabel embedding hingga 90 GB dapat digunakan untuk TPU v3-8, 5,6 TB untuk Pod v3-512, dan 22,4 TB untuk Pod TPU v3-2048.
Kode model ada di library TensorFlow Recommenders, sedangkan pipeline input, konfigurasi, dan loop pelatihan dijelaskan di TensorFlow Model Garden.
Tujuan
- Menyiapkan lingkungan pelatihan
- Menjalankan tugas pelatihan menggunakan data sintetis
- Memverifikasi 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
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.
Menyiapkan resource
Bagian ini memberikan informasi tentang penyiapan bucket Cloud Storage, VM, dan resource Cloud TPU yang digunakan dalam tutorial ini.
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 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 dengan opsi
-l
yang menentukan region tempat bucket harus dibuat. Lihat jenis dan zona untuk mengetahui detail selengkapnya tentang zona dan region: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. 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.Lokasi bucket harus berada di region yang sama dengan Compute Engine (VM) dan node Cloud TPU.
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 tentang dua arsitektur VM, lihat Arsitektur Sistem. Untuk mengetahui informasi lebih lanjut tentang perintahgcloud
, lihat Referensi gcloud.VM TPU
$ gcloud compute tpus tpu-vm create dlrm-dcn-tutorial \ --zone=europe-west4-a \ --accelerator-type=v3-8 \ --version=tpu-vm-tf-2.16.1-se
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=dlrm-dcn-tutorial \ --zone=europe-west4-a \ --disk-size=300 \ --machine-type=n1-standard-8 \ --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
ctpu
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 dlrm-dcn-tutorial --zone=europe-west4-a
Node TPU
gcloud compute ssh dlrm-dcn-tutorial --zone=europe-west4-a
Saat Anda melanjutkan petunjuk ini, jalankan setiap perintah yang diawali dengan
(vm)$
di jendela sesi VM Anda.
Menetapkan variabel bucket Cloud Storage
Siapkan variabel lingkungan berikut, dengan mengganti bucket-name dengan nama bucket Cloud Storage Anda:
(vm)$ export STORAGE_BUCKET=gs://bucket-name (vm)$ export PYTHONPATH="/usr/share/tpu/models/:${PYTHONPATH}" (vm)$ export EXPERIMENT_NAME=dlrm-exp
Tetapkan variabel lingkungan untuk nama TPU.
VM TPU
(vm)$ export TPU_NAME=local
Node TPU
(vm)$ export TPU_NAME=dlrm-dcn-tutorial
Aplikasi pelatihan mengharapkan data pelatihan Anda dapat diakses di Cloud Storage. Aplikasi pelatihan juga menggunakan bucket Cloud Storage Anda untuk menyimpan checkpoint selama pelatihan.
Menyiapkan untuk menjalankan model DLRM atau DCN dengan data sintetis
Model ini dapat dilatih pada berbagai set data. Dua platform yang umum digunakan adalah Criteo Terabyte dan Criteo Kaggle.
Tutorial ini melatih data sintetis dengan menyetel flag use_synthetic_data=True
.
Set data sintetis hanya berguna untuk memahami cara menggunakan Cloud TPU dan memvalidasi performa end-to-end. Angka akurasi dan model tersimpan tidak akan berarti.
Kunjungi situs Criteo Terabyte dan Criteo Kaggle untuk mendapatkan informasi tentang cara mendownload dan melakukan prapemrosesan set data ini.
Instal paket yang diperlukan.
(vm)$ pip3 install tensorflow-recommenders (vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt
Ubah ke direktori skrip.
VM TPU
(vm)$ cd /usr/share/tpu/models/official/recommendation/ranking
Node TPU
(vm)$ cd /usr/share/models/official/recommendation/ranking
Jalankan skrip pelatihan. Contoh ini menggunakan set data palsu mirip Criteo untuk melatih model DLRM. Pelatihan ini memerlukan waktu sekitar 20 menit.
export EMBEDDING_DIM=32 python3 train.py --mode=train_and_eval \ --model_dir=${STORAGE_BUCKET}/model_dirs/${EXPERIMENT_NAME} --params_override=" runtime: distribution_strategy: 'tpu' task: use_synthetic_data: true train_data: input_path: '${DATA_DIR}/train/*' global_batch_size: 16384 validation_data: input_path: '${DATA_DIR}/eval/*' global_batch_size: 16384 model: num_dense_features: 13 bottom_mlp: [512,256,${EMBEDDING_DIM}] embedding_dim: ${EMBEDDING_DIM} top_mlp: [1024,1024,512,256,1] interaction: 'dot' vocab_sizes: [39884406, 39043, 17289, 7420, 20263, 3, 7120, 1543, 63, 38532951, 2953546, 403346, 10, 2208, 11938, 155, 4, 976, 14, 39979771, 25641295, 39664984, 585935, 12972, 108, 36] trainer: use_orbit: false validation_interval: 1000 checkpoint_interval: 1000 validation_steps: 500 train_steps: 1000 steps_per_loop: 1000 "
Pelatihan ini berjalan sekitar 10 menit di TPU v3-8. Setelah selesai, Anda akan melihat pesan yang mirip dengan yang berikut ini:
I0621 21:32:58.519792 139675269142336 tpu_embedding_v2_utils.py:907] Done with log of TPUEmbeddingConfiguration. I0621 21:32:58.540874 139675269142336 tpu_embedding_v2.py:389] Done initializing TPU Embedding engine. 1000/1000 [==============================] - 335s 335ms/step - auc: 0.7360 - accuracy: 0.6709 - prediction_mean: 0.4984 - label_mean: 0.4976 - loss: 0.0734 - regularization_loss: 0.0000e+00 - total_loss: 0.0734 - val_auc: 0.7403 - val_accuracy: 0.6745 - val_prediction_mean: 0.5065 - val_label_mean: 0.4976 - val_loss: 0.0749 - val_regularization_loss: 0.0000e+00 - val_total_loss: 0.0749 Model: "ranking" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= tpu_embedding (TPUEmbedding) multiple 1 _________________________________________________________________ mlp (MLP) multiple 154944 _________________________________________________________________ mlp_1 (MLP) multiple 2131969 _________________________________________________________________ dot_interaction (DotInteract multiple 0 _________________________________________________________________ ranking_1 (Ranking) multiple 0 ================================================================= Total params: 2,286,914 Trainable params: 2,286,914 Non-trainable params: 0 _________________________________________________________________ I0621 21:43:54.977140 139675269142336 train.py:177] Train history: {'auc': [0.7359596490859985], 'accuracy': [0.67094486951828], 'prediction_mean': [0.4983849823474884], 'label_mean': [0.4975697994232178], 'loss': [0.07338511198759079], 'regularization_loss': [0], 'total_loss': [0.07338511198759079], 'val_auc': [0.7402724623680115], 'val_accuracy': [0.6744520664215088], 'val_prediction_mean': [0.5064718723297119], 'val_label_mean': [0.4975748658180237], 'val_loss': [0.07486172765493393], 'val_regularization_loss': [0], 'val_total_loss': [0.07486172765493393]}
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 dlrm-dcn-tutorial \ --zone=europe-west4-a
Node TPU
$ gcloud compute tpus execution-groups delete dlrm-dcn-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 apa pun yang dibuat dalam tutorial ini:VM TPU
$ gcloud compute tpus tpu-vm list --zone=europe-west4-a
Node TPU
$ gcloud compute tpus execution-groups list --zone=europe-west4-a
Hapus bucket Cloud Storage menggunakan
gsutil
. 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.