AI学习者 · 8月7日

在 Cloud TPU 上训练 Mask RCNN (TF 2.x)

概览

本教程演示了如何使用 Cloud TPU 和 COCO 数据集运行 Mask RCNN 模型。

Mask RCNN 是一种深度神经网络,旨在解决对象检测和图像分割问题,这是一项难度较大的计算机视觉挑战。

Mask RCNN 模型会为图像中对象的每个实例生成边界框和细分掩码。该模型基于特征金字塔网络 (FPN)ResNet50 骨干网络。

本教程使用 Tensorflow Keras APIs 训练模型。Keras API 是一种高级 TensorFlow API,可用于在 Cloud TPU 上构建和运行机器学习模型。此 API 可通过隐藏大部分低级实现来简化模型开发流程,从而让您更轻松地在 TPU 和其他平台(例如 GPU 或 CPU)之间切换。

这些说明假设您已熟悉如何在 Cloud TPU 上训练模型。如果您刚开始接触 Cloud TPU,可以参阅快速入门,了解基本介绍。

目标

  • 准备 COCO 数据集
  • 创建 Cloud Storage 存储桶以保存数据集和模型输出
  • 设置 TPU 资源以进行训练和评估
  • 在单个 Cloud TPU 或 Cloud TPU Pod 上运行训练和评估

费用

在本文档中,您将使用 Google Cloud 的以下收费组件:

  • Compute Engine
  • Cloud TPU
  • Cloud Storage

您可使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

准备工作

在开始学习本教程之前,请检查您的 Google Cloud 项目是否已正确设置。

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. 确保您的 Google Cloud 项目已启用结算功能

本演示使用 Google Cloud 的收费组件。请查看 Cloud TPU 价格页面估算您的费用。请务必在使用完您创建的资源以后清理这些资源,以免产生不必要的费用。

准备 COCO 数据集

本教程使用 COCO 数据集。Cloud Storage 存储桶上的数据集需要采用 TFRecord 格式以用于训练。

如果您已在 Cloud Storage 存储桶上准备好 COCO 数据集,该存储桶位于您将用于训练模型的可用区中,则可以直接进行单设备训练。否则,请按以下步骤准备数据集。

  1. 打开一个 Cloud Shell 窗口。

    打开 Cloud Shell

  2. Cloud Shell 中,使用您的项目 ID 配置 gcloud
    export PROJECT_ID=project-id
    gcloud config set project ${PROJECT_ID}
  1. Cloud Shell 中,使用以下命令创建 Cloud Storage 存储桶:
    gsutil mb -p ${PROJECT_ID} -c standard -l europe-west4 gs://bucket-name
  1. 启动 Compute Engine 虚拟机实例。

此虚拟机实例将仅用于下载和预处理 COCO 数据集。在 instance-name 中填写您选择的名称。


$ gcloud compute tpus execution-groups create \
 --vm-only \
 --name=instance-name \
 --zone=europe-west4-a \
 --disk-size=300 \
 --machine-type=n1-standard-16 \
 --tf-version=2.12.0

命令标志说明


`vm-only`

仅创建虚拟机。默认情况下,`gcloud compute tpus execution-groups` 命令会同时创建虚拟机和 Cloud TPU。

`name`

要创建的 Cloud TPU 的名称。

`zone`

您计划在其中创建 Cloud TPU 的[区域](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

`disk-size`

通过 `gcloud compute tpus execution-groups` 命令创建的虚拟机的硬盘大小(以 GB 为单位)。

`machine-type`

要创建的 Compute Engine 虚拟机的[机器类型](https://cloud.google.com/compute/docs/machine-types?hl=zh-cn)。

`tf-version`

TensorFlow `gcloud compute tpus execution-groups` 的版本会安装在虚拟机上。
  1. 如果您未自动登录 Compute Engine 实例,请通过运行以下 ssh 命令进行登录。登录虚拟机后,shell 提示符会从 username@projectname 更改为 username@vm-name
      $ gcloud compute ssh instance-name --zone=europe-west4-a
  1. 设置两个变量,一个用于先前创建的存储桶,另一个用于保存存储桶中的训练数据 (DATA_DIR) 的目录。
    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
  1. 安装预处理数据所需的软件包。
    (vm)$ sudo apt-get install -y python3-tk && \
      pip3 install --user Cython matplotlib opencv-python-headless pyyaml Pillow && \
      pip3 install --user "git+https://github.com/cocodataset/cocoapi#egg=pycocotools&subdirectory=PythonAPI"
  1. 运行 download_and_preprocess_coco.sh 脚本,将 COCO 数据集转换为训练应用所需的一组 TFRecord (*.tfrecord)。
    (vm)$ git clone https://github.com/tensorflow/tpu.git
    (vm)$ sudo bash tpu/tools/datasets/download_and_preprocess_coco.sh ./data/dir/coco

这会安装所需的库,然后运行预处理脚本。它会在您的本地数据目录中输出很多 *.tfrecord 文件。COCO 下载和转换脚本大约需要 1 小时才能完成。

  1. 将数据复制到 Cloud Storage 存储桶

将数据转换为 TFRecord 后,使用 gsutil 命令将其从本地存储空间复制到 Cloud Storage 存储桶。您还必须复制注解文件。这些文件有助于验证模型的性能。


(vm)$ gsutil -m cp ./data/dir/coco/\*.tfrecord ${DATA_DIR}
(vm)$ gsutil cp ./data/dir/coco/raw-data/annotations/ *.json ${DATA_DIR}
  1. 清理虚拟机资源

将 COCO 数据集转换为 TFRecord 并将其复制到 Cloud Storage 存储桶的 DATA_DIR 后,您便可以删除 Compute Engine 实例。

与 Compute Engine 实例断开连接:


(vm)$ exit

您的提示符现在应为 username@projectname,表明您位于 Cloud Shell 中。

  1. 删除您的 Compute Engine 实例。

      $ gcloud compute instances delete instance-name
        --zone=europe-west4-a

Cloud TPU 单设备训练

  1. 打开一个 Cloud Shell 窗口。

    打开 Cloud Shell

  2. 为项目 ID 创建一个环境变量。
    export PROJECT_ID=project-id
  1. 配置 Google Cloud CLI 以使用要在其中创建 Cloud TPU 的项目。
gcloud config set project ${PROJECT_ID}

当您第一次在新的 Cloud Shell 虚拟机中运行此命令时,系统会显示 Authorize Cloud Shell 页面。点击页面底部的 Authorize 以允许 gcloud 使用您的凭据进行 Google Cloud API 调用。

  1. 为 Cloud TPU 项目创建服务账号。
    gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID

该命令将返回以下格式的 Cloud TPU 服务账号:


service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
  1. 导出 TPU 设置变量

导出您的项目 ID、要用于 TPU 资源的名称,以及将在其中训练模型并存储任何与训练相关的数据的地区


$ export TPU_NAME=mask-rcnn-tutorial
$ export ZONE=europe-west4-a
  1. 使用 gcloud 命令启动 Compute Engine 虚拟机和 Cloud TPU。 使用的命令取决于您使用的是 TPU 虚拟机还是 TPU 节点。如需详细了解这两种虚拟机架构,请参阅系统架构

TPU 虚拟机


$ gcloud compute tpus tpu-vm create mask-rcnn-tutorial \
--zone=europe-west4-a \
--accelerator-type=v3-8 \
--version=tpu-vm-tf-2.16.1-pjrt

命令标志说明


`zone`

您计划在其中创建 Cloud TPU 的[区域](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

`accelerator-type`

加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 [TPU 版本](https://cloud.google.com/tpu/docs/system-architecture-tpu-vm?hl=zh-cn#versions)。

`version`

Cloud TPU [软件版本](https://cloud.google.com/tpu/docs/supported-tpu-versions?hl=zh-cn#tpu_software_versions)。

TPU 节点


$ gcloud compute tpus execution-groups create  \
 --zone=europe-west4-a \
 --name=mask-rcnn-tutorial \
 --accelerator-type=v3-8 \
 --machine-type=n1-standard-8 \
 --disk-size=300 \
 --tf-version=2.12.0

命令标志说明


`zone`

您计划在其中创建 Cloud TPU 的[区域](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

`name`

TPU 名称。如果未指定,则默认为您的用户名。

`accelerator-type`

要创建的 Cloud TPU 的[类型](https://cloud.google.com/tpu/docs/supported-tpu-configurations?hl=zh-cn)。

`machine-type`

要创建的 Compute Engine 虚拟机的[机器类型](https://cloud.google.com/compute/docs/machine-types?hl=zh-cn)。

`disk-size`

Compute Engine 虚拟机的根卷大小(以 GB 为单位)。

`tf-version`

TensorFlow `gcloud` 的版本会安装在虚拟机上。

如需详细了解 `gcloud` 命令,请参阅 [gcloud 参考文档](https://cloud.google.com/sdk/gcloud/reference?hl=zh-cn)。
  1. 如果您未自动登录 Compute Engine 实例,请通过运行以下 ssh 命令进行登录。登录虚拟机后,shell 提示符会从 username@projectname 更改为 username@vm-name

TPU 虚拟机


gcloud compute tpus tpu-vm ssh mask-rcnn-tutorial --zone=europe-west4-a

TPU 节点


gcloud compute tpus execution-groups ssh mask-rcnn-tutorial --zone=europe-west4-a
  1. 安装 TensorFlow 要求。

    使用的命令取决于您使用的是 TPU 虚拟机还是 TPU 节点。

TPU 虚拟机


(vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt 

TPU 节点


(vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
  1. 设置 Cloud TPU 名称变量。

    TPU 虚拟机

    (vm)$ export TPU_NAME=local

TPU 节点


(vm)$ export TPU_NAME=mask-rcnn-tutorial
  1. 设置以下环境变量,并将 bucket-name 替换为存储 COCO 数据集的 Cloud Storage 存储桶的名称:

    
    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
  2. 为数据和模型目录添加环境变量。

    
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/mask-rcnn
    
  3. 添加其他一些必需的环境变量:

    
    (vm)$ export RESNET_CHECKPOINT=gs://cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07
    (vm)$ export TRAIN_FILE_PATTERN=${DATA_DIR}/train-*
    (vm)$ export EVAL_FILE_PATTERN=${DATA_DIR}/val-*
    (vm)$ export VAL_JSON_FILE=${DATA_DIR}/instances_val2017.json
    
  4. 设置 PYTHONPATH 环境变量:

TPU 虚拟机


(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/tpu/models"

TPU 节点


(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
  1. 创建 TPU 时,如果将 --version 参数设置为以 -pjrt 结尾的版本,请设置以下环境变量以启用 PJRT 运行时:

      (vm)$ export NEXT_PLUGGABLE_DEVICE_USE_C_API=true
      (vm)$ export TF_PLUGGABLE_DEVICE_LIBRARY_PATH=/lib/libtpu.so
  1. 切换至存储模型的目录。

TPU 虚拟机


(vm)$ cd /usr/share/tpu/models/official/vision

TPU 节点


(vm)$ cd /usr/share/models/official/legacy/detection

以下脚本会运行一个示例训练,训练了 10 个训练步和 10 个评估步骤。在 v3-8 TPU 上大约需要 6 分钟才能完成。在 v3-8 TPU 上,训练到收敛需要大约 22500 个步骤和大约 6 小时。

  1. 运行以下命令以训练 Mask-RCNN 模型:

    (vm)$ python3 train.py \
    --tpu=${TPU_NAME} \
    --experiment=maskrcnn\_resnetfpn_coco \
    --mode=train_and_eval \
    --config_file=configs/experiments/maskrcnn/r50fpn_640_coco_scratch_tpu4x4.yaml \
    --model_dir=${MODEL\_DIR} \
    --params_override="task.train_data.input_path=${TRAIN_FILE_PATTERN},task.validation_data.input_path=${EVAL_FILE_PATTERN},task.annotation_file=${VAL_JSON_FILE},runtime.distribution_strategy=tpu,trainer.train_steps=10,trainer.validation_steps=10,task.train_data.global_batch_size=8,task.validation_data.global_batch_size=8"

命令标志说明


`strategy_type`

分布策略。

`tpu`

TPU 的名称。

`model_dir`

用于指定在模型训练期间存储检查点和摘要的目录。如果指定的文件夹不存在,此程序会自行创建。使用 Cloud TPU 时,model_dir 必须是 Cloud Storage 路径(“gs://...”)。您可以重复使用现有的文件夹来加载当前检查点数据和存储其他检查点,只要先前的检查点是使用相同大小的 TPU 和相同 Tensorflow 版本创建的即可。

训练完成后,系统将显示如下所示的消息:


{'frcnn_box_loss': 0.033865165,
 'frcnn_cls_loss': 1.2535654,
 'learning_rate': 0.008266499,
 'mask_loss': 1.2039567,
 'model_loss': 2.821458,
 'rpn_box_loss': 0.034982488,
 'rpn_score_loss': 0.2950886,
 'total_loss': 4.340171,
 'training_loss': 4.340171}
train | step:     10 | steps/sec:    0.1 | output:
{'frcnn_box_loss': 0.033865165,
 'frcnn_cls_loss': 1.2535654,
 'learning_rate': 0.008266499,
 'mask_loss': 1.2039567,
 'model_loss': 2.821458,
 'rpn_box_loss': 0.034982488,
 'rpn_score_loss': 0.2950886,
 'total_loss': 4.340171,
 'training_loss': 4.340171}

接下来是评估步骤的输出。

您现已完成单设备训练和评估。请按照以下步骤删除当前的单设备 TPU 资源。

  1. 与 Compute Engine 实例断开连接:
 (vm)$ exit

您的提示符现在应为 username@projectname,表明您位于 Cloud Shell 中。

  1. 删除 TPU 资源。

TPU 虚拟机


$ gcloud compute tpus tpu-vm delete mask-rcnn-tutorial \
--zone=europe-west4-a

命令标志说明


`zone`

您的 Cloud TPU 所在的[可用区](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

TPU 节点


$ gcloud compute tpus execution-groups delete mask-rcnn-tutorial \
--tpu-only \
--zone=europe-west4-a

命令标志说明


`tpu-only`

仅删除 Cloud TPU。虚拟机仍然可用。

`zone`

包含要删除的 TPU 的[可用区](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

此时,您可以结束本教程并清理,也可以继续并探索在 Cloud TPU Pod 上运行模型。

使用 Cloud TPU Pod 扩缩模型

在 Cloud TPU Pod 上训练模型可能需要对训练脚本进行一些更改。如需了解详情,请参阅在 TPU Pod 上训练

TPU Pod 训练

  1. 打开一个 Cloud Shell 窗口。

    打开 Cloud Shell

  2. 为项目 ID 创建一个变量。
export PROJECT_ID=project-id
  1. 配置 Google Cloud CLI 以使用要在其中创建 Cloud TPU 的项目。
  gcloud config set project ${PROJECT_ID}

当您第一次在新的 Cloud Shell 虚拟机中运行此命令时,系统会显示 Authorize Cloud Shell 页面。点击页面底部的 Authorize 以允许 gcloud 使用您的凭据进行 Google Cloud API 调用。

  1. 为 Cloud TPU 项目创建服务账号。

服务帐号允许 Cloud TPU 服务访问其他 Google Cloud 服务。


gcloud beta services identity create --service tpu.googleapis.com --project $PROJECT_ID

该命令将返回以下格式的 Cloud TPU 服务账号:


service-PROJECT_NUMBER@cloud-tpu.iam.gserviceaccount.com
  1. 如果您之前已准备的 COCO 数据集并将其移至存储桶,则可以再次使用它来进行 Pod 训练。如果您尚未准备好 COCO 数据集,请立即准备并返回此处设置训练。
  2. 启动 Cloud TPU Pod

本教程指定 v3-32 Pod。如需了解其他 Pod 选项,请参阅 TPU 版本

TPU 虚拟机


$ gcloud compute tpus tpu-vm create mask-rcnn-tutorial \
--zone=europe-west4-a \
--accelerator-type=v3-32 \
--version=tpu-vm-tf-2.16.1-pod-pjrt

命令标志说明


`zone`

您计划在其中创建 Cloud TPU 的[区域](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

`accelerator-type`

加速器类型指定要创建的 Cloud TPU 的版本和大小。如需详细了解每个 TPU 版本支持的加速器类型,请参阅 [TPU 版本](https://cloud.google.com/tpu/docs/system-architecture-tpu-vm?hl=zh-cn#versions)。

`version`

Cloud TPU [软件版本](https://cloud.google.com/tpu/docs/supported-tpu-versions?hl=zh-cn#tpu_software_versions)。

TPU 节点


(vm)$ gcloud compute tpus execution-groups create \\
--zone=europe-west4-a \\
--name=mask-rcnn-tutorial \\
--accelerator-type=v3-32  \\
--tf-version=2.12.0

命令标志说明


`zone`

您计划在其中创建 Cloud TPU 的[区域](https://cloud.google.com/tpu/docs/types-zones?hl=zh-cn)。

`tpu-only`

仅创建 Cloud TPU。默认情况下,`gcloud compute tpus execution-groups` 命令会同时创建虚拟机和 Cloud TPU。

`accelerator-type`

要创建的 Cloud TPU 的[类型](https://cloud.google.com/tpu/docs/supported-tpu-configurations?hl=zh-cn)。

`tf-version`

TensorFlow `gcloud` 的版本会安装在虚拟机上。
  1. 如果您未自动登录 Compute Engine 实例,请通过运行以下 ssh 命令进行登录。登录虚拟机后,shell 提示符会从 username@projectname 更改为 username@vm-name

TPU 虚拟机


gcloud compute tpus tpu-vm ssh mask-rcnn-tutorial --zone=europe-west4-a

TPU 节点


gcloud compute ssh mask-rcnn-tutorial --zone=europe-west4-a
  1. 安装 TensorFlow 要求。

    使用的命令取决于您使用的是 TPU 虚拟机还是 TPU 节点。

TPU 虚拟机


(vm)$ pip3 install -r /usr/share/tpu/models/official/requirements.txt 

TPU 节点


(vm)$ pip3 install --user -r /usr/share/models/official/requirements.txt
  1. 训练脚本需要额外的软件包。立即安装:
    (vm)$ pip3 install --user tensorflow-model-optimization>=0.1.3
  1. 设置 Cloud TPU 名称变量。

    
    (vm)$ export TPU_NAME=mask-rcnn-tutorial
    
  2. 设置以下环境变量,将 bucket-name 替换为 Cloud Storage 存储桶的名称:

    
    (vm)$ export STORAGE_BUCKET=gs://bucket-name
    
  3. 添加其他一些必需的环境变量:

    
    (vm)$ export RESNET_CHECKPOINT=gs://cloud-tpu-checkpoints/retinanet/resnet50-checkpoint-2018-02-07
    (vm)$ export DATA_DIR=${STORAGE_BUCKET}/coco
    (vm)$ export TRAIN_FILE_PATTERN=${DATA_DIR}/train-*
    (vm)$ export EVAL_FILE_PATTERN=${DATA_DIR}/val-*
    (vm)$ export VAL_JSON_FILE=${DAT\_DIR}/instances_val2017.json
    (vm)$ export MODEL_DIR=${STORAGE_BUCKET}/mask-rcnn-pod
    
  4. 设置 PYTHONPATH 环境变量:

TPU 虚拟机


(vm)$ export PYTHONPATH="/usr/share/tpu/models:${PYTHONPATH}"
(vm)$ export TPU_LOAD_LIBRARY=0

TPU 节点


(vm)$ export PYTHONPATH="${PYTHONPATH}:/usr/share/models"
  1. 切换至存储模型的目录。

TPU 虚拟机


(vm)$ cd /usr/share/tpu/models/official/vision

TPU 节点


(vm)$ cd /usr/share/models/official/legacy/detection
  1. 训练模型:

此过程使用 COCO 数据集训练模型 10 个训练步骤。在 v3-32 Cloud TPU 上,此训练大约需要 10 分钟。

TPU 虚拟机


(vm)$ python3 train.py \
--tpu=${TPU_NAME} \
--experiment=maskrcnn_resnetfpn_coco \
--mode=train_and_eval \
--config_file=configs/experiments/maskrcnn/r50fpn_640_coco_scratch_tpu4x4.yaml \
--model_dir=${MODEL_DIR} \
--params_override="task.train_data.input_path=${TRAIN_FILE_PATTERN},task.validation_data.input_path=${EVAL_FILE_PATTERN},task.annotation_file=${VAL_JSON_FILE},runtime.distribution_strategy=tpu,trainer.train_steps=10,trainer.validation_steps=10,task.train_data.global_batch_size=256,task.validation_data.global_batch_size=256" 

命令标志说明


`tpu`

TPU 的名称。

`model_dir`

用于指定在模型训练期间存储检查点和摘要的目录。如果指定的文件夹不存在,此程序会自行创建相应文件夹。使用 Cloud TPU 时,`model_dir` 必须是 Cloud Storage 路径 (`gs://...`)。您可以重复使用现有的文件夹来加载当前检查点数据和存储其他检查点,只要先前的检查点是使用相同大小的 Cloud TPU 和 TensorFlow 版本创建的即可。

`params_override`

一个用于替换默认脚本参数的 JSON 字符串。

TPU 节点


(vm)$ python3 main.py \
--strategy_type=tpu \
--tpu=${TPU_NAME} \\
--model_dir=${MODEL_DIR} \
--mode=train \
--model=mask_rcnn \
--params_override="{train: { batch_size: 128, iterations_per_loop: 500, total_steps: 20, learning_rate: {'learning_rate_levels': [0.008, 0.0008], 'learning_rate_steps': [10000, 13000] }, checkpoint: { path: ${RESNET_CHECKPOINT}, prefix: resnet50/ }, train_file_pattern: ${TRAIN_FILE_PATTERN} }, eval: { val_json_file: ${VAL_JSON_FILE}, eval_file_pattern: ${EVAL_FILE_PATTERN}} }"

命令标志说明


`tpu`

TPU 的名称。

`model_dir`

用于指定在模型训练期间存储检查点和摘要的目录。如果指定的文件夹不存在,此程序会自行创建相应文件夹。使用 Cloud TPU 时,`model_dir` 必须是 Cloud Storage 路径 (`gs://...`)。您可以重复使用现有的文件夹来加载当前检查点数据和存储其他检查点,只要先前的检查点是使用相同大小的 Cloud TPU 和 TensorFlow 版本创建的即可。

`params_override`

一个用于替换默认脚本参数的 JSON 字符串。

训练完成后,系统将显示如下所示的消息:

 I0706 19:47:16.108213 139955064548416 controller.py:457] train | step: 10 | steps/sec:    0.1 | output:
    {'frcnn_box_loss': 0.05632668,
     'frcnn_cls_loss': 1.3012192,
     'learning_rate': 0.008266499,
     'mask_loss': 1.2371812,
     'model_loss': 2.9746659,
     'rpn_box_loss': 0.08227444,
     'rpn_score_loss': 0.2976642,
     'total_loss': 4.493513,
     'training_loss': 4.493513}
train | step:     10 | steps/sec:    0.1 | output:
    {'frcnn_box_loss': 0.05632668,
     'frcnn_cls_loss': 1.3012192,
     'learning_rate': 0.008266499,
     'mask_loss': 1.2371812,
     'model_loss': 2.9746659,
     'rpn_box_loss': 0.08227444,
     'rpn_score_loss': 0.2976642,
     'total_loss': 4.493513,
     'training_loss': 4.493513}
 

清理

为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

运行训练后,删除 TPU 虚拟机并移除存储桶。

  1. 断开与 Compute Engine 实例的连接(如果您尚未这样做):
    (vm)$ exit

您的提示符现在应为 username@projectname,表明您位于 Cloud Shell 中。

  1. 删除您的 Cloud TPU 和 Compute Engine 资源。 用于删除资源的命令取决于您使用的是 TPU 虚拟机还是 TPU 节点。如需了解详情,请参阅系统架构

TPU 虚拟机


$ gcloud compute tpus tpu-vm delete mask-rcnn-tutorial \
--zone=europe-west4-a

TPU 节点


$ gcloud compute tpus execution-groups delete mask-rcnn-tutorial \
--zone=europe-west4-a
  1. 通过运行 gcloud compute tpus execution-groups list 验证资源是否已删除。删除操作可能需要几分钟时间才能完成。以下命令的输出不应包含本教程中创建的任何 TPU 资源:
    $ gcloud compute tpus execution-groups list --zone=europe-west4-a
  1. 如下所示运行 gsutil,将 bucket-name 替换为您为本教程创建的 Cloud Storage 存储桶的名称:
    $ gsutil rm -r gs://bucket-name

后续步骤

TensorFlow Cloud TPU 教程通常使用示例数据集来训练模型。此训练的结果无法用于推理。如需使用模型进行推理,您可以在公开数据集或您自己的数据集上训练模型。在 Cloud TPU 上训练的 TensorFlow 模型通常需要数据集采用 TFRecord 格式。

您可以使用数据集转换工具示例将图片分类数据集转换为 TFRecord 格式。如果您使用的不是图片分类模型,则必须自行将数据集转换为 TFRecord 格式。如需了解详情,请参阅 TFRecord 和 tf.Example

超参数调优

如需使用数据集提高模型的性能,您可以调整模型的超参数。您可以在 GitHub 上找到所有 TPU 支持模型通用的超参数信息。您可以在每个模型的源代码中找到有关模型特有超参数的信息。如需详细了解超参数调节,请参阅超参数调节概览调节超参数

推理

训练完模型后,您可以使用它进行推理(也称为预测)。您可以使用 Cloud TPU 推理转换器工具准备和优化 TensorFlow 模型,以在 Cloud TPU v5e 上进行推断。如需详细了解 Cloud TPU v5e 上的推断,请参阅 Cloud TPU v5e 推断简介

如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。

文章来源:google cloud

推荐阅读

更多芯擎AI开发板干货请关注芯擎AI开发板专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
10054
内容数
80
搭载基于安谋科技自研“周易”NPU的芯擎科技工业级“龍鹰一号”SE1000-I处理器
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息