Jika Anda belum terbiasa menggunakan Cloud TPU, sebaiknya baca quickstart untuk mempelajari cara membuat VM TPU.
Tutorial ini menunjukkan cara melatih model HuggingFace GPT2 pada Cloud TPU.
Tujuan
- Buat Cloud TPU
- Menginstal dependensi
- Menjalankan tugas pelatihan
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine
- Cloud TPU
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.
Melatih HuggingFace GPT2 dengan Cloud TPU
Buka jendela Cloud Shell.
Buat variabel lingkungan untuk project ID Anda.
export PROJECT_ID=your-project-id
Konfigurasikan Google Cloud CLI untuk menggunakan project Google Cloud 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.
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
Buat Cloud TPU
Buat VM Cloud TPU menggunakan perintah
gcloud
. Perintah berikut akan membuat TPUv4-8
. Anda juga dapat membuat Podslice TPU dengan menetapkan flag--accelerator-type
ke jenis Podslice, misalnyav4-32
.$ gcloud compute tpus tpu-vm create hf-gpt2 \ --zone=us-central2-b \ --accelerator-type=v4-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.
Hubungkan ke VM Cloud TPU dengan menjalankan perintah
ssh
berikut.gcloud compute tpus tpu-vm ssh hf-gpt2 --zone=us-central2-b
Menginstal dependensi
Clone repositori Transformers HuggingFace:
(vm)$ cd /tmp (vm)$ git clone https://github.com/huggingface/transformers.git (vm)$ cd transformers
Instal dependensi:
(vm)$ pip install . (vm)$ pip install -r examples/tensorflow/_tests_requirements.txt (vm)$ cd /tmp/transformers/examples/tensorflow/language-modeling (vm)$ pip install -r requirements.txt
Membuat direktori sementara:
(vm)$ mkdir /tmp/gpt2-wikitext
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
Menjalankan skrip pelatihan
(vm)$ python3 run_clm.py \ --model_name_or_path distilgpt2 \ --max_train_samples 1000 \ --max_eval_samples 100 \ --num_train_epochs 1 \ --output_dir /tmp/gpt2-wikitext \ --dataset_name wikitext \ --dataset_config_name wikitext-103-raw-v1
Deskripsi flag perintah
model_name_or_path
- Nama model yang akan dilatih.
max_train_samples
- Jumlah maksimum sampel yang akan digunakan untuk pelatihan.
max_eval_samples
- Jumlah maksimum sampel yang akan digunakan untuk evaluasi.
num_train_epochs
- Jumlah epoch untuk melatih model.
output_dir
- Direktori output untuk skrip pelatihan.
dataset_name
- Nama set data yang akan digunakan.
dataset_config_name
- Nama konfigurasi set data
Setelah pelatihan selesai, pesan yang mirip dengan berikut akan ditampilkan:
125/125 [============================] - ETA: 0s - loss: 3.61762023-07-07 21:38:17.902850: W tensorflow/core/framework/dataset.cc:956] Input of GeneratorDatasetOp::Dataset will not be optimized because the dataset does not implement the AsGraphDefInternal() method needed to apply optimizations. 125/125 [============================] - 763s 6s/step - loss: 3.6176 - val_loss: 3.4233 Configuration saved in /tmp/gpt2-wikitext/config.json Configuration saved in /tmp/gpt2-wikitext/generation_config.json Model weights saved in /tmp/gpt2-wikitext/tf_model.h5 D0707 21:38:45.640973681 12027 init.cc:191] grpc_shutdown starts clean-up now
Pembersihan
Putuskan koneksi dari instance VM TPU:
(vm)$ exit
Prompt Anda sekarang akan menjadi
username@projectname
, yang menunjukkan bahwa Anda berada di Cloud Shell.Hapus resource TPU.
$ gcloud compute tpus tpu-vm delete hf-gpt2 \ --zone=us-central2-b
Langkah selanjutnya
Coba salah satu model referensi yang didukung lain.