Melatih model menggunakan TPU v5e
Dengan jejak 256 chip yang lebih kecil per Pod, TPU v5e dioptimalkan untuk menjadi produk bernilai tinggi untuk pelatihan, fine-tuning, dan inferensi Transformer, text-to-image, dan Jaringan Neural Konvolusional (CNN). Untuk mengetahui informasi selengkapnya tentang penggunaan Cloud TPU v5e untuk inferensi, lihat Inferensi menggunakan v5e.
Untuk mengetahui informasi selengkapnya tentang hardware dan konfigurasi TPU Cloud TPU v5e, lihat TPU v5e.
Mulai
Bagian berikut menjelaskan cara mulai menggunakan TPU v5e.
Kuota permintaan
Anda memerlukan kuota untuk menggunakan TPU v5e untuk pelatihan. Ada berbagai jenis kuota untuk TPU on-demand, TPU yang direservasi, dan Spot VM TPU. Ada kuota terpisah yang diperlukan jika Anda menggunakan TPU v5e untuk inferensi. Untuk mengetahui informasi selengkapnya tentang kuota, lihat Kuota. Untuk meminta kuota TPU v5e, hubungi Cloud Sales.
Membuat akun dan project Google Cloud
Anda memerlukan akun dan project Google Cloud untuk menggunakan Cloud TPU. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan lingkungan Cloud TPU.
Buat Cloud TPU
Praktik terbaiknya adalah menyediakan Cloud TPU v5e sebagai resource yang diantrekan menggunakan perintah queued-resource create. Untuk mengetahui informasi selengkapnya, lihat
Mengelola resource dalam antrean.
Anda juga dapat menggunakan Create Node API (gcloud compute tpus tpu-vm create) untuk menyediakan Cloud TPU v5e. Untuk mengetahui informasi selengkapnya, lihat Mengelola resource TPU.
Untuk mengetahui informasi selengkapnya tentang konfigurasi v5e yang tersedia untuk pelatihan, lihat Jenis Cloud TPU v5e untuk pelatihan.
Penyiapan framework
Bagian ini menjelaskan proses penyiapan umum untuk pelatihan model kustom menggunakan JAX dengan TPU v5e. Untuk opsi pelatihan PyTorch, lihat Melatih model menggunakan PyTorch di Cloud TPU.
Untuk mengetahui petunjuk penyiapan inferensi, lihat pengantar inferensi v5e.
Tentukan beberapa variabel lingkungan:
export PROJECT_ID=your_project_ID
export ACCELERATOR_TYPE=v5litepod-16
export ZONE=us-west4-a
export TPU_NAME=your_tpu_name
export QUEUED_RESOURCE_ID=your_queued_resource_id
Penyiapan untuk JAX
Jika Anda memiliki bentuk slice yang lebih besar dari 8 chip, Anda akan memiliki beberapa VM dalam satu slice. Dalam hal ini, Anda harus menggunakan flag --worker=all untuk menjalankan penginstalan di semua VM TPU dalam satu langkah tanpa menggunakan SSH untuk login ke setiap VM secara terpisah:
gcloud compute tpus tpu-vm ssh $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--worker=all \
--command='pip install -U "jax[tpu]" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'
Deskripsi flag perintah
TPU_NAME: ID teks TPU yang ditetapkan pengguna yang dibuat saat permintaan resource yang diantrekan dialokasikan.PROJECT_ID: Google Cloud Nama Project. Gunakan project yang sudah ada atau buat project baru di Siapkan project Google CloudZONE: Lihat dokumen region dan zona TPU untuk mengetahui zona yang didukung.worker: VM TPU yang memiliki akses ke TPU yang mendasarinya.
Anda dapat menjalankan perintah berikut untuk memeriksa jumlah perangkat (output yang ditampilkan di sini dihasilkan dengan slice v5litepod-16). Kode ini menguji apakah semuanya diinstal dengan benar dengan memeriksa apakah JAX melihat TensorCore Cloud TPU dan dapat menjalankan operasi dasar:
gcloud compute tpus tpu-vm ssh $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--worker=all \
--command='python3 -c "import jax; print(jax.device_count()); print(jax.local_device_count())"'
Outputnya akan seperti ini:
SSH: Attempting to connect to worker 0...
SSH: Attempting to connect to worker 1...
SSH: Attempting to connect to worker 2...
SSH: Attempting to connect to worker 3...
16
4
16
4
16
4
16
4
jax.device_count() menunjukkan jumlah total chip dalam slice tertentu.
jax.local_device_count() menunjukkan jumlah chip yang dapat diakses oleh satu VM di slice ini.
# Check the number of chips in the given slice by summing the count of chips
# from all VMs through the
# jax.local_device_count() API call.
gcloud compute tpus tpu-vm ssh $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--worker=all \
--command='python3 -c "import jax; xs=jax.numpy.ones(jax.local_device_count()); print(jax.pmap(lambda x: jax.lax.psum(x, \"i\"), axis_name=\"i\")(xs))"'
Outputnya akan seperti ini:
SSH: Attempting to connect to worker 0...
SSH: Attempting to connect to worker 1...
SSH: Attempting to connect to worker 2...
SSH: Attempting to connect to worker 3...
[16. 16. 16. 16.]
[16. 16. 16. 16.]
[16. 16. 16. 16.]
[16. 16. 16. 16.]
Coba Tutorial JAX dalam dokumen ini untuk mulai menggunakan pelatihan v5e menggunakan JAX.
Pembersihan
Hapus TPU dan resource yang diantrekan di akhir sesi Anda. Untuk menghapus resource yang diantrekan, hapus slice, lalu hapus resource yang diantrekan dalam 2 langkah:
gcloud compute tpus tpu-vm delete $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--quiet
gcloud compute tpus queued-resources delete $QUEUED_RESOURCE_ID \
--project=$PROJECT_ID \
--zone=${ZONE} \
--quiet
Dua langkah ini juga dapat digunakan untuk menghapus permintaan resource dalam antrean yang berada dalam status FAILED.
Contoh JAX/FLAX
Bagian berikut menjelaskan contoh cara melatih model JAX dan FLAX di TPU v5e.
Melatih ImageNet di v5e
Tutorial ini menjelaskan cara melatih ImageNet di v5e menggunakan data input palsu. Jika Anda ingin menggunakan data nyata, lihat file README di GitHub.
Siapkan
Buat variabel lingkungan:
export PROJECT_ID=your-project-id export TPU_NAME=your-tpu-name export ZONE=us-west4-a export ACCELERATOR_TYPE=v5litepod-8 export RUNTIME_VERSION=v2-alpha-tpuv5-lite export SERVICE_ACCOUNT=your-service-account export QUEUED_RESOURCE_ID=your-queued-resource-id
Deskripsi variabel lingkungan
PROJECT_ID: Project ID Google Cloud Anda. Gunakan project yang sudah ada atau buat project baru.TPU_NAME: Nama TPU.ZONE: Zona tempat membuat VM TPU. Untuk mengetahui informasi selengkapnya tentang zona yang didukung, lihat Region dan zona 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.RUNTIME_VERSION: Versi software Cloud TPU.SERVICE_ACCOUNT: Alamat email untuk akun layanan Anda. Anda dapat menemukannya dengan membuka halaman Akun Layanan di konsol Google Cloud .Contoh:
tpu-service-account@PROJECT_ID.iam.QUEUED_RESOURCE_ID: ID teks yang ditetapkan pengguna untuk permintaan resource yang diantrekan.
-
gcloud compute tpus queued-resources create $QUEUED_RESOURCE_ID \ --node-id=$TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --runtime-version=$RUNTIME_VERSION \ --service-account=$SERVICE_ACCOUNTAnda akan dapat melakukan SSH ke VM TPU setelah resource yang diantrekan berada dalam status
ACTIVE:gcloud compute tpus queued-resources describe $QUEUED_RESOURCE_ID \ --project=$PROJECT_ID \ --zone=$ZONEJika QueuedResource berada dalam status
ACTIVE, output-nya akan mirip dengan berikut ini:state: ACTIVE Instal JAX dan jaxlib versi terbaru:
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command='pip install -U "jax[tpu]" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'Buat clone model ImageNet dan instal persyaratan yang sesuai:
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command="git clone https://github.com/coolkp/flax.git && cd flax && git checkout pmap-orbax-conversion && git pull"Untuk membuat data palsu, model memerlukan informasi tentang dimensi set data. Informasi ini dapat dikumpulkan dari metadata set data ImageNet:
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command="cd flax/examples/imagenet && pip install -r requirements-cloud-tpu.txt"
Melatih model
Setelah semua langkah sebelumnya selesai, Anda dapat melatih model.
gcloud compute tpus tpu-vm ssh $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--worker=all \
--command="cd flax/examples/imagenet && bash ../../tests/download_dataset_metadata.sh && JAX_PLATFORMS=tpu python imagenet_fake_data_benchmark.py"
Menghapus TPU dan resource yang diantrekan
Hapus TPU dan resource yang diantrekan di akhir sesi Anda.
gcloud compute tpus tpu-vm delete $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--quiet
gcloud compute tpus queued-resources delete $QUEUED_RESOURCE_ID \
--project=$PROJECT_ID \
--zone=$ZONE \
--quiet
Model FLAX Hugging Face
Model Hugging Face yang diimplementasikan di FLAX dapat langsung digunakan di Cloud TPU v5e. Bagian ini memberikan petunjuk untuk menjalankan model populer.
Melatih ViT di Imagenette
Tutorial ini menunjukkan cara melatih model Vision Transformer (ViT) dari HuggingFace menggunakan set data Imagenette Fast AI di Cloud TPU v5e.
Model ViT adalah model pertama yang berhasil melatih encoder Transformer di ImageNet dengan hasil yang sangat baik dibandingkan dengan jaringan konvolusional. Untuk mengetahui informasi selengkapnya, lihat Ringkasan ViT.
Siapkan
Buat variabel lingkungan:
export PROJECT_ID=your-project-id export TPU_NAME=your-tpu-name export ZONE=us-west4-a export ACCELERATOR_TYPE=v5litepod-16 export RUNTIME_VERSION=v2-alpha-tpuv5-lite export SERVICE_ACCOUNT=your-service-account export QUEUED_RESOURCE_ID=your-queued-resource-id
Deskripsi variabel lingkungan
PROJECT_ID: Project ID Google Cloud Anda. Gunakan project yang sudah ada atau buat project baru.TPU_NAME: Nama TPU.ZONE: Zona tempat membuat VM TPU. Untuk mengetahui informasi selengkapnya tentang zona yang didukung, lihat Region dan zona 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.RUNTIME_VERSION: Versi software Cloud TPU.SERVICE_ACCOUNT: Alamat email untuk akun layanan Anda. Anda dapat menemukannya dengan membuka halaman Akun Layanan di konsol Google Cloud .Contoh:
tpu-service-account@PROJECT_ID.iam.QUEUED_RESOURCE_ID: ID teks yang ditetapkan pengguna untuk permintaan resource yang diantrekan.
-
gcloud compute tpus queued-resources create $QUEUED_RESOURCE_ID \ --node-id=$TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --runtime-version=$RUNTIME_VERSION \ --service-account=$SERVICE_ACCOUNTAnda akan dapat melakukan SSH ke VM TPU setelah resource yang diantrekan berada dalam status
ACTIVE:gcloud compute tpus queued-resources describe $QUEUED_RESOURCE_ID \ --project=$PROJECT_ID \ --zone=$ZONEJika resource yang diantrekan berada dalam status
ACTIVE, output-nya akan mirip dengan berikut ini:state: ACTIVE Instal JAX dan library-nya:
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command='pip install -U "jax[tpu]" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'Download repositori Hugging Face dan instal persyaratan:
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command='git clone https://github.com/huggingface/transformers.git && cd transformers && pip install . && pip install -r examples/flax/_tests_requirements.txt && pip install --upgrade huggingface-hub urllib3 zipp && pip install tensorflow==2.19 && sed -i "s/torchvision==0.12.0+cpu/torchvision==0.22.1/" examples/flax/vision/requirements.txt && pip install -r examples/flax/vision/requirements.txt && pip install tf-keras'Download set data Imagenette:
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command='cd transformers && wget https://s3.amazonaws.com/fast-ai-imageclas/imagenette2.tgz && tar -xvzf imagenette2.tgz'
Melatih model
Latih model dengan buffer yang telah dipetakan sebelumnya sebesar 4 GB.
gcloud compute tpus tpu-vm ssh $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--worker=all \
--command='cd transformers && JAX_PLATFORMS=tpu python3 examples/flax/vision/run_image_classification.py --train_dir "imagenette2/train" --validation_dir "imagenette2/val" --output_dir "./vit-imagenette" --learning_rate 1e-3 --preprocessing_num_workers 32 --per_device_train_batch_size 8 --per_device_eval_batch_size 8 --model_name_or_path google/vit-base-patch16-224-in21k --num_train_epochs 3'
Menghapus TPU dan resource yang diantrekan
Hapus TPU dan resource yang diantrekan di akhir sesi Anda.
gcloud compute tpus tpu-vm delete $TPU_NAME \
--project=$PROJECT_ID \
--zone=$ZONE \
--quiet
gcloud compute tpus queued-resources delete $QUEUED_RESOURCE_ID \
--project=$PROJECT_ID \
--zone=$ZONE \
--quiet
Hasil tolok ukur ViT
Skrip pelatihan dijalankan di v5litepod-4, v5litepod-16, dan v5litepod-64. Tabel berikut menunjukkan throughput dengan berbagai jenis akselerator.
| Jenis akselerator | v5litepod-4 | v5litepod-16 | v5litepod-64 |
| Epoch | 3 | 3 | 3 |
| Ukuran batch global | 32 | 128 | 512 |
| Throughput (contoh/dtk) | 263,40 | 429,34 | 470,71 |
Melatih Difusi pada Pokémon
Tutorial ini menunjukkan cara melatih model Stable Diffusion dari HuggingFace menggunakan set data Pokémon di Cloud TPU v5e.
Model Stable Diffusion adalah model text-to-image laten yang menghasilkan gambar fotorealistik dari input teks apa pun. Untuk informasi selengkapnya, lihat referensi berikut:
Siapkan
Tetapkan variabel lingkungan untuk nama bucket penyimpanan Anda:
export GCS_BUCKET_NAME=your_bucket_nameSiapkan bucket penyimpanan untuk output model Anda:
Google Cloud CLI storage buckets create gs://$GCS_BUCKET_NAME \ --project=$PROJECT_ID \ --location=$ZONEBuat variabel lingkungan:
export PROJECT_ID=your-project-id export TPU_NAME=your-tpu-name export ZONE=us-west1-c export ACCELERATOR_TYPE=v5litepod-16 export RUNTIME_VERSION=v2-alpha-tpuv5-lite export SERVICE_ACCOUNT=your-service-account export QUEUED_RESOURCE_ID=your-queued-resource-id
Deskripsi variabel lingkungan
PROJECT_ID: Project ID Google Cloud Anda. Gunakan project yang sudah ada atau buat project baru.TPU_NAME: Nama TPU.ZONE: Zona tempat membuat VM TPU. Untuk mengetahui informasi selengkapnya tentang zona yang didukung, lihat Region dan zona 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.RUNTIME_VERSION: Versi software Cloud TPU.SERVICE_ACCOUNT: Alamat email untuk akun layanan Anda. Anda dapat menemukannya dengan membuka halaman Akun Layanan di konsol Google Cloud .Contoh:
tpu-service-account@PROJECT_ID.iam.QUEUED_RESOURCE_ID: ID teks yang ditetapkan pengguna untuk permintaan resource yang diantrekan.
-
gcloud compute tpus queued-resources create $QUEUED_RESOURCE_ID \ --node-id=$TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --runtime-version=$RUNTIME_VERSION \ --service-account=$SERVICE_ACCOUNTAnda akan dapat melakukan SSH ke VM TPU setelah resource yang diantrekan berada dalam status
ACTIVE:gcloud compute tpus queued-resources describe $QUEUED_RESOURCE_ID \ --project=$PROJECT_ID \ --zone=$ZONEJika resource yang diantrekan berada dalam status
ACTIVE, output-nya akan mirip dengan berikut ini:state: ACTIVE Instal JAX dan library-nya.
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command='pip install "jax[tpu]==0.4.16" -f https://storage.googleapis.com/jax-releases/libtpu_releases.html'Download repositori HuggingFace dan instal persyaratan.
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --worker=all \ --command='git clone https://github.com/RissyRan/diffusers.git && cd diffusers && pip install . && pip install -U -r examples/text_to_image/requirements_flax.txt && pip install tensorflow==2.17.1 clu && pip install tensorboard==2.17.1'
Melatih model
Latih model dengan buffer yang telah dipetakan sebelumnya sebesar 4 GB.
gcloud compute tpus tpu-vm ssh $TPU_NAME --zone=$ZONE --project=$PROJECT_ID --worker=all --command="
git clone https://github.com/google/maxdiffusion
cd maxdiffusion
pip3 install jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
pip3 install -r requirements.txt
pip3 install .
pip3 install gcsfs
export LIBTPU_INIT_ARGS=''
python -m src.maxdiffusion.train src/maxdiffusion/configs/base_2_base.yml run_name=my_run \
jax_cache_dir=gs://${GCS_BUCKET_NAME} activations_dtype=bfloat16 weights_dtype=bfloat16 \
per_device_batch_size=1 precision=DEFAULT dataset_save_location=gs://${GCS_BUCKET_NAME} \
output_dir=gs://${GCS_BUCKET_NAME}/ attention=flash"
Pembersihan
Hapus TPU, resource yang diantrekan, dan bucket Cloud Storage Anda di akhir sesi.
Hapus TPU Anda:
gcloud compute tpus tpu-vm delete $TPU_NAME \ --project=$PROJECT_ID \ --zone=$ZONE \ --quietHapus resource yang diantrekan:
gcloud compute tpus queued-resources delete $QUEUED_RESOURCE_ID \ --project=$PROJECT_ID \ --zone=$ZONE \ --quietHapus bucket Cloud Storage:
gcloud storage rm -r gs://$GCS_BUCKET_NAME
Hasil tolok ukur untuk difusi
Skrip pelatihan dijalankan di v5litepod-4, v5litepod-16, dan v5litepod-64. Tabel berikut menunjukkan throughput.
| Jenis akselerator | v5litepod-4 | v5litepod-16 | v5litepod-64 |
| Langkah Pelatihan | 1500 | 1500 | 1500 |
| Ukuran batch global | 32 | 64 | 128 |
| Throughput (contoh/dtk) | 36,53 | 43,71 | 49,36 |
Melatih model menggunakan PyTorch di Cloud TPU
Anda dapat menggunakan TorchTPU secara langsung untuk melatih model atau menggunakan kembali library referensi TorchTitan. Untuk mulai menggunakan VM TPU, lihat Memulai TorchTPU di VM TPU. Untuk mengetahui informasi selengkapnya tentang ekosistem PyTorch di Cloud TPU, lihat PyTorch di Cloud TPU.