TensorFlow(TF)社区和 Google 的 Brain 团队发布了作为TF API 重要扩展的 Tensor2Tensor 。
Tensor2Tensor(T2T)解决了在 TF 上训练和执行模型的模块化和可移植性问题。它将常用的深度学习模型管道抽象成一个可扩展的对象模型,并提供了 TF 训练所需要的标准 API。T2T 的目标之一是要降低模型训练管道和执行环境的重复性成本,同时减少基于 TF 现有 API 进行常见操作的工作量,这些操作原本很难在用户之间共享,它们有些只能用于解决特定的问题。
T2T 基于现有的 TF 库执行很多操作,包括模型架构、优化器、学习率衰退、scheme 和超参数。它还提供了一些预训练过的模型和样本数据集、默认的模型规范,以及超参数和 modality 的控制方法。这样有助于用户重复实验、比较和交换结果,让他们专注在课题研究上,而不是把大量精力花费在编排 TF 管道环境上。
T2T 的数据集为标准的 TFRecord protobuf 文件,训练数据集可以通过用户自定义的 Problem 子类来生成,或者通过 Python 装饰器和直接函数调用的方式来生成。Problem 对象由训练时间超参数和它们的输入输出形态及数据集组成。Problem 提供了一些方法用于处理编码、文件路径、输入输出目标、超参数和默认属性值。模型的 metrics (如模型准确度)也被封装在 Problem 中。超参数集合通过装饰器注册成 Hparams 对象。
训练可以被配置成同步或异步模式。通过环境变量 TF_CONFIG 可以指定 master 服务器和参数服务器,支持 grpc 和 gpu 群组,以及计算资源的逻辑集群。
评论