Tutorial ini menunjukkan cara melatih model Bidirectional Encoder Representations from Transformers (BERT) di Cloud TPU.
BERT adalah metode representasi bahasa pra-pelatihan. Pra-pelatihan mengacu pada cara BERT pertama kali dilatih pada sumber teks yang besar, seperti Wikipedia. Kemudian, Anda dapat menerapkan hasil pelatihan ke tugas Natural Language Processing (NLP) lainnya, seperti penjawab pertanyaan dan analisis sentimen. Dengan BERT dan Cloud TPU, Anda dapat melatih berbagai model NLP dalam waktu sekitar 30 menit.
Untuk mengetahui informasi selengkapnya tentang BERT, lihat referensi berikut:
- Open Sourcing BERT: Pra-pelatihan Tercanggih untuk Natural Language Processing
- BERT: Pra-pelatihan Transformer Dua Arah untuk Pemahaman Bahasa
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}
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 yang Anda gunakan untuk membuat TPU (
gcloud compute tpus execution-groups create
untuk arsitektur TPU Node ataugcloud compute tpus tpu-vm create
untuk arsitektur VM TPU) akan menyiapkan izin default untuk Akun Layanan Cloud TPU yang Anda siapkan pada 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 bert-tutorial \ --zone=us-central1-b \ --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=bert-tutorial \ --zone=us-central1-b \ --tf-version=2.12.0 \ --machine-type=n1-standard-1 \ --accelerator-type=v3-8
Deskripsi flag perintah
name
- Nama Cloud TPU yang akan dibuat.
zone
- Zona tempat Anda berencana membuat Cloud TPU.
tf-version
- Versi Tensorflow
ctpu
dapat diinstal di VM. machine-type
- Jenis mesin VM Compute Engine yang akan dibuat.
accelerator type
- Jenis Cloud TPU yang akan dibuat.
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 bert-tutorial --zone=us-central1-b
Node TPU
gcloud compute ssh bert-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=bert-tutorial
Menyiapkan set data
Tentukan bucket penyimpanan yang diperlukan untuk menyimpan model dan set data:
(vm)$ export STORAGE_BUCKET=gs://bucket-name
Salin file checkpoint dan kosakata yang telah dilatih sebelumnya ke bucket penyimpanan Anda:
(vm)$ curl https://storage.googleapis.com/tf_model_garden/nlp/bert/v3/uncased_L-12_H-768_A-12.tar.gz -o uncased_L-12_H-768_A-12.tar.gz (vm)$ mkdir -p uncased_L-12_H-768_A-12 (vm)$ tar -xvf uncased_L-12_H-768_A-12.tar.gz (vm)$ gsutil -m cp -R uncased_L-12_H-768_A-12 ${STORAGE_BUCKET}
Melatih model
Tentukan beberapa parameter value yang diperlukan saat Anda melatih dan mengevaluasi model:
(vm)$ export INIT_CHECKPOINT=${STORAGE_BUCKET}/uncased_L-12_H-768_A-12/bert_model.ckpt (vm)$ export TFDS_DIR=${STORAGE_BUCKET}/tfds (vm)$ export VOCAB_FILE=${STORAGE_BUCKET}/uncased_L-12_H-768_A-12/vocab.txt (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/bert-output (vm)$ export TASK=mnli
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 (vm)$ pip3 install tensorflow-datasets==4.6.0
Menetapkan variabel lingkungan
PYTHONPATH
VM TPU
(vm)$ export PYTHONPATH=/usr/share/tpu/models
Node TPU
(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
Ubah ke direktori yang menyimpan model:
VM TPU
(vm)$ cd /usr/share/tpu/models
Node TPU
(vm)$ cd /usr/share/models
Jalankan skrip pelatihan:
(vm)$ python3 official/nlp/train.py \ --tpu=${TPU_NAME} \ --experiment=bert/sentence_prediction_text \ --mode=train_and_eval \ --model_dir=${MODEL_DIR} \ --config_file=official/nlp/configs/experiments/glue_mnli_text.yaml \ --params_override="runtime.distribution_strategy=tpu, task.init_checkpoint=${INIT_CHECKPOINT}, task.train_data.tfds_data_dir=${TFDS_DIR}, task.train_data.vocab_file=${VOCAB_FILE}, task.validation_data.tfds_data_dir=${TFDS_DIR}, task.validation_data.vocab_file=${VOCAB_FILE}, trainer.train_steps=2000"
Deskripsi flag perintah
tpu
- Nama Cloud TPU yang akan digunakan untuk pelatihan.
mode
- Salah satu dari
train
,eval
,train_and_eval
, ataupredict
. 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.
Skrip melatih 2000 langkah, lalu menjalankan 307 langkah evaluasi. Pada TPU v3-8, setelah sekitar 5 menit, skrip pelatihan akan selesai dan menampilkan hasil yang mirip dengan ini:
I0719 00:47:52.683979 140297079573568 controller.py:457] train | step: 2000 | steps/sec: 26.3 | output: {'cls_accuracy': 0.7249375, 'learning_rate': 1.4670059e-05, 'training_loss': 0.6740678} train | step: 2000 | steps/sec: 26.3 | output: {'cls_accuracy': 0.7249375, 'learning_rate': 1.4670059e-05, 'training_loss': 0.6740678} I0719 00:47:53.184051 140297079573568 controller.py:277] eval | step: 2000 | running 307 steps of evaluation... eval | step: 2000 | running 307 steps of evaluation...
Pembersihan
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 bert-tutorial \ --zone=us-central1-b
Node TPU
$ gcloud compute tpus execution-groups delete bert-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.
- Pelajari alat TPU di TensorBoard.