本教程重点介绍 FairSeq 版本的 Transformer,以及将英语翻译为德语的 WMT 18 翻译任务。
目标
- 准备数据集。
- 运行训练作业。
- 验证输出结果。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- Compute Engine
- Cloud TPU
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
在开始学习本教程之前,请检查您的 Google Cloud 项目是否已正确设置。
- 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
本演示使用 Google Cloud 的收费组件。请查看 Cloud TPU 价格页面估算您的费用。请务必在使用完您创建的资源以后清理这些资源,以免产生不必要的费用。
设置 Compute Engine 实例
打开一个 Cloud Shell 窗口。
为项目 ID 创建一个变量。
export PROJECT_ID=project-id
配置 Google Cloud CLI,以使用您要创建 Cloud TPU 的项目。
gcloud config set project ${PROJECT_ID}
当您第一次在新的 Cloud Shell 虚拟机中运行此命令时,系统会显示
Authorize Cloud Shell
页面。点击页面底部的Authorize
以允许gcloud
使用您的凭据进行 API 调用。从 v 启动本教程所需的 Compute Engine 资源。
gcloud compute --project=${PROJECT_ID} instances create transformer-tutorial \ --zone=us-central1-a \ --machine-type=n1-standard-16 \ --image-family=torch-xla \ --image-project=ml-images \ --boot-disk-size=200GB \ --scopes=https://www.googleapis.com/auth/cloud-platform
连接到新的 Compute Engine 实例。
gcloud compute ssh transformer-tutorial --zone=us-central1-a
启动 Cloud TPU 资源
在 Compute Engine 虚拟机中,使用以下命令启动 Cloud TPU 资源:
(vm) $ gcloud compute tpus create transformer-tutorial \ --zone=us-central1-a \ --network=default \ --version=pytorch-2.0 \ --accelerator-type=v3-8
确定 Cloud TPU 资源的 IP 地址。
(vm) $ gcloud compute tpus list --zone=us-central1-a
该 IP 地址位于
NETWORK_ENDPOINTS
列下方。在创建和配置 PyTorch 环境时,您将需要该 IP 地址。
下载数据
创建一个用于存储模型数据的目录
pytorch-tutorial-data
。(vm) $ mkdir $HOME/pytorch-tutorial-data
导航到
pytorch-tutorial-data
目录。(vm) $ cd $HOME/pytorch-tutorial-data
下载模型数据。
(vm) $ wget https://dl.fbaipublicfiles.com/fairseq/data/wmt18_en_de_bpej32k.zip
提取数据。
(vm) $ sudo apt-get install unzip && \ unzip wmt18_en_de_bpej32k.zip
创建并配置 PyTorch 环境
启动
conda
环境。(vm) $ conda activate torch-xla-2.0
为 Cloud TPU 资源配置环境变量。
(vm) $ export TPU_IP_ADDRESS=ip-address; \ export XRT_TPU_CONFIG="tpu_worker;0;$TPU_IP_ADDRESS:8470"
训练模型
要训练模型,请运行以下脚本:
(vm) $ python /usr/share/torch-xla-2.0/tpu-examples/deps/fairseq/train.py \
$HOME/pytorch-tutorial-data/wmt18_en_de_bpej32k \
--save-interval=1 \
--arch=transformer_vaswani_wmt_en_de_big \
--max-target-positions=64 \
--attention-dropout=0.1 \
--no-progress-bar \
--criterion=label_smoothed_cross_entropy \
--source-lang=en \
--lr-scheduler=inverse_sqrt \
--min-lr 1e-09 \
--skip-invalid-size-inputs-valid-test \
--target-lang=de \
--label-smoothing=0.1 \
--update-freq=1 \
--optimizer adam \
--adam-betas '(0.9, 0.98)' \
--warmup-init-lr 1e-07 \
--lr 0.0005 \
--warmup-updates 4000 \
--share-all-embeddings \
--dropout 0.3 \
--weight-decay 0.0 \
--valid-subset=valid \
--max-epoch=25 \
--input_shapes 128x64 \
--num_cores=8 \
--metrics_debug \
--log_steps=100
清理
使用您创建的资源后,请进行清理,以免您的帐号产生不必要的费用:
断开与 Compute Engine 实例的连接(如果您尚未这样做):
(vm) $ exit
您的提示符现在应为
user@projectname
,表明您位于 Cloud Shell 中。在 Cloud Shell 中,使用 Google Cloud CLI 删除 Compute Engine 实例。
$ gcloud compute instances delete transformer-tutorial --zone=us-central1-a
使用 Google Cloud CLI 删除 Cloud TPU 资源。
$ gcloud compute tpus delete transformer-tutorial --zone=us-central1-a
后续步骤
试用 PyTorch Colab:
- 在 Cloud TPU 上开始使用 PyTorch
- 在 TPU 上训练 MNIST
- 使用 Cifar10 数据集在 TPU 上训练 ResNet18
- 使用预训练的 ResNet50 模型进行推理
- 快速神经风格转移
- 在 Fashion MNIST 上使用多核心训练 AlexNet
- 在 Fashion MNIST 上使用单核心训练 AlexNet