在 TPU Pod 切片上运行 PyTorch 代码
PyTorch/XLA 要求所有 TPU 虚拟机都能够访问模型代码和数据。您可以使用启动脚本下载所需的软件 将模型数据分布到所有 TPU 虚拟机。
如果您要将 TPU 虚拟机连接到虚拟私有云,请执行以下操作: (VPC) 您必须在项目中添加防火墙规则,以允许端口入站流量 8470 - 8479。如需详细了解如何添加防火墙规则,请参阅 使用防火墙规则
设置环境
在 Cloud Shell 中,运行以下命令以确保 运行当前版本的
gcloud
:$ gcloud components update
如果您需要安装
gcloud
,请使用以下命令:$ sudo apt install -y google-cloud-sdk
创建一些环境变量:
$ export PROJECT_ID=project-id $ export TPU_NAME=tpu-name $ export ZONE=us-central2-b $ export RUNTIME_VERSION=tpu-ubuntu2204-base $ export ACCELERATOR_TYPE=v4-32
创建 TPU 虚拟机
$ gcloud compute tpus tpu-vm create ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --accelerator-type=${ACCELERATOR_TYPE} \ --version ${RUNTIME_VERSION}
配置并运行训练脚本
将您的 SSH 证书添加到项目中:
ssh-add ~/.ssh/google_compute_engine
在所有 TPU VM 工作器上安装 PyTorch/XLA
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all --command=" pip install torch~=2.4.0 torch_xla[tpu]~=2.4.0 torchvision -f https://storage.googleapis.com/libtpu-releases/index.html"
在所有 TPU 虚拟机工作器上克隆 XLA
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all --command="git clone -b r2.4 https://github.com/pytorch/xla.git"
在所有工作器上运行训练脚本
gcloud compute tpus tpu-vm ssh ${TPU_NAME} \ --zone=${ZONE} \ --project=${PROJECT_ID} \ --worker=all \ --command="PJRT_DEVICE=TPU python3 ~/xla/test/test_train_mp_imagenet.py \ --fake_data \ --model=resnet50 \ --num_epochs=1 2>&1 | tee ~/logs.txt"
训练大约需要 5 分钟。完成后,您应该会看到类似于下面这样的消息:
Epoch 1 test end 23:49:15, Accuracy=100.00 10.164.0.11 [0] Max Accuracy: 100.00%
清理
完成 TPU 虚拟机的操作后,请按照以下步骤清理资源。
断开与 Compute Engine 实例的连接(如果您尚未这样做):
(vm)$ exit
您的提示符现在应为
username@projectname
,表明您位于 Cloud Shell 中。删除您的 Cloud TPU 和 Compute Engine 资源。
$ gcloud compute tpus tpu-vm delete \ --zone=${ZONE}
通过运行
gcloud compute tpus execution-groups list
验证资源是否已删除。删除操作可能需要几分钟时间才能完成。以下命令的输出不应包含本教程中创建的任何资源:$ gcloud compute tpus tpu-vm list --zone=${ZONE}