Menjalankan workload TPU di container Docker
Container Docker memudahkan konfigurasi aplikasi dengan menggabungkan kode Anda dan semua dependensi yang diperlukan dalam satu paket yang dapat didistribusikan. Anda dapat menjalankan container Docker dalam VM TPU untuk menyederhanakan konfigurasi dan berbagi aplikasi Cloud TPU. Dokumen ini menjelaskan cara menyiapkan container Docker untuk setiap framework ML yang didukung oleh Cloud TPU.
Melatih model PyTorch di container Docker
Sebelum menjalankan perintah berikut, buat variabel lingkungan berikut:
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
Deskripsi variabel lingkungan
PROJECT_ID: Project ID Anda. Google Cloud Gunakan project yang ada atau buat project baru.TPU_NAME: Nama TPU.ZONE: Zona tempat VM TPU akan dibuat. 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.
Perangkat TPU
Membuat VM Cloud TPU
gcloud compute tpus tpu-vm create $TPU_NAME \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --version=$RUNTIME_VERSIONMenghubungkan ke VM TPU menggunakan SSH
gcloud compute tpus tpu-vm ssh $TPU_NAME --zone=$ZONEPastikan user Google Cloud Anda telah diberi peran Pembaca Artifact Registry. Untuk mengetahui informasi selengkapnya, lihat Memberikan peran Artifact Registry.
Memulai container di VM TPU menggunakan image PyTorch/XLA versi nightly
sudo docker run --net=host -ti --rm --name your-container-name --privileged \ us-central1-docker.pkg.dev/tpu-pytorch-releases/docker/xla:r2.6.0_3.10_tpuvm_cxx11 \ bashMengonfigurasi runtime TPU
Ada dua opsi runtime PyTorch/XLA: PJRT dan XRT. Sebaiknya gunakan PJRT kecuali jika Anda memiliki alasan untuk menggunakan XRT. Untuk mempelajari lebih lanjut berbagai konfigurasi runtime, lihat dokumentasi runtime PJRT.
PJRT
export PJRT_DEVICE=TPUXRT
export XRT_TPU_CONFIG="localservice;0;localhost:51011"Meng-clone repositori PyTorch XLA
git clone --recursive https://github.com/pytorch/xla.gitMelatih ResNet50
python3 xla/test/test_train_mp_imagenet.py \ --fake_data \ --model=resnet50 \ --num_epochs=1
Setelah skrip pelatihan selesai, hapus resource.
- Ketik
exituntuk keluar dari container Docker - Ketik
exituntuk keluar dari VM TPU Menghapus VM TPU
gcloud compute tpus tpu-vm delete $TPU_NAME --zone=$ZONE
Slice TPU
Saat menjalankan kode PyTorch di slice TPU, Anda harus menjalankan kode di semua pekerja TPU secara bersamaan. Salah satu cara untuk melakukannya adalah menggunakan perintah gcloud compute tpus tpu-vm ssh dengan flag --worker=all dan --command. Prosedur berikut menunjukkan cara membuat image Docker untuk mempermudah penyiapan setiap pekerja TPU.
Membuat VM TPU
gcloud compute tpus tpu-vm create $TPU_NAME \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --version=$RUNTIME_VERSIONMenambahkan pengguna saat ini ke grup Docker
gcloud compute tpus tpu-vm ssh $TPU_NAME \ --zone=$ZONE \ --worker=all \ --command='sudo usermod -a -G docker $USER'Meng-clone repositori PyTorch XLA
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="git clone --recursive https://github.com/pytorch/xla.git"Menjalankan skrip pelatihan dalam container di semua pekerja TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker run --rm --privileged --net=host -v ~/xla:/xla -e PJRT_DEVICE=TPU us-central1-docker.pkg.dev/tpu-pytorch-releases/docker/xla:r2.6.0_3.10_tpuvm_cxx11 python /xla/test/test_train_mp_imagenet.py --fake_data --model=resnet50 --num_epochs=1"Flag perintah Docker:
--rmmenghapus container setelah prosesnya dihentikan.--privilegedmengekspos perangkat TPU ke container.--net=hostmengikat semua port container ke VM TPU untuk memungkinkan komunikasi antar-host di pod.-emenetapkan variabel lingkungan.
Setelah skrip pelatihan selesai, hapus resource.
Hapus VM TPU menggunakan perintah berikut:
gcloud compute tpus tpu-vm delete $TPU_NAME \
--zone=$ZONE
Melatih model JAX di container Docker
Sebelum menjalankan perintah berikut, buat variabel lingkungan berikut:
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
Deskripsi variabel lingkungan
PROJECT_ID: Project ID Anda. Google Cloud Gunakan project yang ada atau buat project baru.TPU_NAME: Nama TPU.ZONE: Zona tempat VM TPU akan dibuat. 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.
Perangkat TPU
Membuat VM TPU
gcloud compute tpus tpu-vm create $TPU_NAME \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --version=$RUNTIME_VERSIONMenghubungkan ke VM TPU menggunakan SSH
gcloud compute tpus tpu-vm ssh $TPU_NAME --zone=$ZONEMemulai daemon Docker di VM TPU
sudo systemctl start dockerMemulai container Docker
sudo docker run --net=host -ti --rm --name your-container-name \ --privileged us-central1-docker.pkg.dev/tpu-pytorch-releases/docker/xla:r2.6.0_3.10_tpuvm_cxx11 \ bashMenginstal JAX
pip install jax[tpu]Menginstal FLAX
pip install --upgrade clu git clone https://github.com/google/flax.git pip install --user -e flaxMenginstal paket
tensorflowdantensorflow-datasetspip install tensorflow pip install tensorflow-datasetsMenjalankan skrip pelatihan FLAX MNIST
cd flax/examples/mnist python3 main.py --workdir=/tmp/mnist \ --config=configs/default.py \ --config.learning_rate=0.05 \ --config.num_epochs=5
Setelah skrip pelatihan selesai, hapus resource.
- Ketik
exituntuk keluar dari container Docker - Ketik
exituntuk keluar dari VM TPU Menghapus VM TPU
gcloud compute tpus tpu-vm delete $TPU_NAME --zone=$ZONE
Slice TPU
Saat menjalankan kode JAX di slice TPU, Anda harus menjalankan kode JAX di semua pekerja TPU secara bersamaan. Salah satu cara untuk melakukannya adalah menggunakan perintah gcloud compute tpus tpu-vm ssh dengan flag --worker=all dan --command. Prosedur berikut menunjukkan cara membuat image Docker untuk mempermudah penyiapan setiap pekerja TPU.
Buat file bernama
Dockerfiledi direktori saat ini dan tempel teks berikutFROM python:3.10 RUN pip install jax[tpu] RUN pip install --upgrade clu RUN git clone https://github.com/google/flax.git RUN pip install --user -e flax RUN pip install tensorflow RUN pip install tensorflow-datasets WORKDIR ./flax/examples/mnistMenyiapkan Artifact Registry
gcloud artifacts repositories create your-repo \ --repository-format=docker \ --location=europe-west4 --description="Docker repository" \ --project=$PROJECT_ID gcloud artifacts repositories list \ --project=$PROJECT_ID gcloud auth configure-docker europe-west4-docker.pkg.devMembangun image Docker
docker build -t your-image-name .Tambahkan tag ke image Docker Anda sebelum mengirimkannya ke Artifact Registry. Untuk mengetahui informasi selengkapnya tentang cara menggunakan Artifact Registry, lihat Menggunakan image container.
docker tag your-image-name europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tagMengirim image Docker ke Artifact Registry
docker push europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tagMembuat VM TPU
gcloud compute tpus tpu-vm create $TPU_NAME \ --zone=$ZONE \ --accelerator-type=$ACCELERATOR_TYPE \ --version=$RUNTIME_VERSIONMengambil image Docker dari Artifact Registry di semua pekerja TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command='sudo usermod -a -G docker ${USER}'gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="gcloud auth configure-docker europe-west4-docker.pkg.dev --quiet"gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker pull europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tag"Menjalankan container di semua pekerja TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker run -ti -d --privileged --net=host --name your-container-name europe-west4-docker.pkg.dev/$PROJECT_ID/your-repo/your-image-name:your-tag bash"Menjalankan skrip pelatihan di semua pekerja TPU
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker exec --privileged your-container-name python3 main.py --workdir=/tmp/mnist \ --config=configs/default.py \ --config.learning_rate=0.05 \ --config.num_epochs=5"
Setelah skrip pelatihan selesai, hapus resource.
Matikan container di semua pekerja
gcloud compute tpus tpu-vm ssh $TPU_NAME --worker=all \ --zone=$ZONE \ --command="docker kill your-container-name"Menghapus VM TPU
gcloud compute tpus tpu-vm delete $TPU_NAME \ --zone=$ZONE