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
PyTorch di Cloud TPU menjelaskan library PyTorch untuk TPU dan menyediakan link ke dokumentasi untuk mendapatkan paket Python dan image Docker. Anda dapat menggunakan TorchTPU secara langsung (lihat Mulai menggunakan GKE untuk image container rilis publik) atau menggunakan library referensi TorchTitan untuk membangun dan menjalankan workload pelatihan dalam container.
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 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.
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, bersihkan 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 pada slice TPU, Anda harus menjalankan kode JAX di semua TPU worker secara bersamaan. Salah satu cara untuk melakukannya adalah dengan 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 worker TPU.
Buat file bernama
Dockerfiledi direktori Anda saat ini dan tempelkan 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 gambar Docker
docker build -t your-image-name .Tambahkan tag ke image Docker Anda sebelum mengirimnya 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 TPU worker
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 TPU worker
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 TPU worker
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, bersihkan resource.
Menonaktifkan container di semua worker
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