模型花园概述

TensorFlow 模型花园提供了许多最先进的机器学习 (ML) 模型的实现,涵盖了视觉和自然语言处理 (NLP) 领域,以及工作流程工具,可让您快速配置和运行这些模型在标准数据集上。无论您是想为知名模型基准测试性能,验证最近发布的研究结果,还是扩展现有模型,模型花园都能帮助您推动您的 ML 研究和应用发展。

模型花园为机器学习开发者提供了以下资源:

这些资源是为与 TensorFlow 核心框架一起使用而构建的,并与您现有的 TensorFlow 开发项目集成。模型花园资源也以 开源 许可证提供,因此您可以自由地扩展和分发这些模型和工具。

实际的 ML 模型在训练和运行方面计算量很大,可能需要图形处理单元 (GPU) 和张量处理单元 (TPU) 等加速器。模型花园中的大多数模型都是在使用 TPU 的大型数据集上训练的。但是,您也可以在 GPU 和 CPU 处理器上训练和运行这些模型。

模型花园模型

模型花园中的机器学习模型包含完整的代码,因此您可以测试、训练或重新训练它们以进行研究和实验。模型花园包含两类主要模型:官方模型研究模型

官方模型

官方模型 存储库是一个最先进模型的集合,重点关注视觉和自然语言处理 (NLP)。这些模型使用当前的 TensorFlow 2.x 高级 API 实现。此存储库中的模型库针对快速性能进行了优化,并由 Google 工程师积极维护。官方模型包含额外的元数据,您可以使用这些元数据使用模型花园的 训练实验框架 快速配置实验。

研究模型

研究模型 存储库是一个模型的集合,作为研究论文的代码资源发布。这些模型使用 TensorFlow 1.x 和 2.x 实现。研究文件夹中的模型库由代码所有者和研究社区支持。

训练实验框架

模型花园训练实验框架让您可以使用其官方模型和标准数据集快速组装和运行训练实验。训练框架使用模型花园官方模型中包含的额外元数据,允许您使用声明式编程模型快速配置模型。您可以使用 TensorFlow 模型库 中的 Python 命令定义训练实验,或使用 YAML 配置文件配置训练,例如 示例

训练框架使用 tfm.core.base_trainer.ExperimentConfig 作为配置对象,其中包含以下顶级配置对象:

  • runtime: 定义处理硬件、分布式策略和其他性能优化
  • task: 定义模型、训练数据、损失和初始化
  • trainer: 定义优化器、训练循环、评估循环、摘要和检查点

有关使用模型花园训练实验框架的完整示例,请参阅 使用模型花园进行图像分类 教程。有关训练实验框架的信息,请查看 TensorFlow 模型 API 文档。如果您正在寻找管理模型训练实验的训练循环的解决方案,请查看 Orbit

专门的 ML 操作

模型花园包含许多专门设计用于执行在 GPU 和 TPU 上高效运行的最先进模型的视觉和 NLP 操作。查看 TensorFlow 模型视觉库 API 文档以获取专门的 视觉操作 列表。查看 TensorFlow 模型 NLP 库 API 文档以获取 NLP 操作 列表。这些库还包含用于视觉和 NLP 数据处理、训练和模型执行的额外实用程序函数。

使用 Orbit 进行训练循环

Orbit 工具是一个灵活、轻量级的库,旨在简化在 TensorFlow 2.x 中编写自定义训练循环,并且与模型花园的 训练实验框架 协同工作良好。Orbit 处理常见的模型训练任务,例如保存检查点、运行模型评估和设置摘要写入。它与 tf.distribute 无缝集成,并支持在不同的设备类型上运行,包括 CPU、GPU 和 TPU 硬件。Orbit 工具也是 开源 的,因此您可以扩展和适应您的模型训练需求。

您通常通过编写 自定义训练循环 或使用高级 Keras Model.fit 函数来训练 TensorFlow 模型。对于简单的模型,您可以使用低级 TensorFlow 方法(例如 tf.GradientTapetf.function)来定义和管理自定义训练循环。或者,您可以使用高级 Keras Model.fit

但是,如果您的模型很复杂,并且您的训练循环需要更灵活的控制或定制,那么您应该使用 Orbit。您可以通过 orbit.AbstractTrainerorbit.StandardTrainer 类来定义大多数训练循环。在 Orbit API 文档 中了解更多关于 Orbit 工具的信息。