TensorFlow 2.0标准化模型交换格式强化布署能力

由Google大脑开发而后开源的深度学习函数库TensorFlow,官方发布更多TensorFlow 2.0的消息,主要更新的大方向是要简化建模的程序,并强化了平台布署以及实验功能。新功能包括tf.keras、默认激活的Eager Execution以及布署函数库等,官方预计将会在今年初的时候发布公开预览版。

TensorFlow发展至今已经超过3岁,这过程TensorFlow新加入了许多组件,而在TensorFlow 2.0,这些组件将被打包成一个综合平台,以支持从训练到布署的机器学习工作流程。 TensorFlow 2.0主打的重点之一是让模型构建更加简单,最近类神经网络函数库Keras成为TensorFlow中央高阶API,能被用来构建和训练模型,官方认为,Keras API有助于TensorFlow的入门。 Keras提供了包括Sequential、Functional以及Subclassing等数种构建模型的API,开发者可以根据需求,选择适合的抽象层级用于项目中。

官方举例了使用Keras构建模型的工作流程,第一步可以使用tf.data加载数据,接着第二步以tf.keras构建、训练以及验证模型,官方提到,Keras与TensorFlow紧密集成,因此用户可以访问任何的TensorFlow功能,而且也可使用一系列标准套件模型,包括线性、逻辑回归或是梯度提升决策树等。如果不想从头开始训练模型,开发者也可以使用TensorFlow Hub的模块,接着训练Keras或是Estimator模型。

第三步以Eager Execution执行与调试,TensorFlow 2.0默认激活Eager Execution功能,开发者将能获得更流畅的调试体验,另外,tf.function也会将Python转换成TensorFlow图,以提供性能优化、远程执行、简易串行化、输出与布署等能力。

官方也提到,第四步开发者可以使用目前部分发布的分散策略(Distribution Strategy)API,执行大型机器学习任务,该API可以简化在不同硬件配置上分散训练模型的工作,而且不需要额外改变模型的定义。第五步则可以使用SavedModel输出模型,TensorFlow 2.0将会标准化模型成可交换格式,可在TensorFlow Serving、TensorFlow Lite、TensorFlow.js以及TensorFlow Hub等地方使用。

也由于在TensorFlow 2.0中,标准化交换格式以及一致的API,赋给模型更强大布署能力,提高了跨平台组件的兼容性。因此开发者从TensorFlow输出的模型,除了可以直接在应用程序中使用,也可以在TensorFlow Serving、TensorFlow Lite与TensorFlow.js等布署函数库中使用。

TensorFlow Serving允许模型以HTTP/REST或是gRPC/Protocol Buffers方式提供,而轻量级TensorFlow Lite针对行动与嵌入式设备,可在Android、iOS或是树莓派上布署模型。 TensorFlow.js则可以在JavaScript环境中布署模型,而TensorFlow也支持多种程序语言,现在有C、Java、Go、C#、Rust、Julia以及R等。

TensorFlow 2.0加入了一系列的功能,以帮助开发者快速的将想法转为程序代码,在不牺牲执行性能的情况下,定义和训练模型。 Keras Functional API以及Model Subclassing API,能让开发者创建复杂的拓扑,另外,开发者还可以自定义训练逻辑,使用tf.GradientTape和tf.custom_gradient对梯度计算进行精细度控制。

TensorFlow 2.0还加入了一些新功能,供研究人员和高端用户使用扩展进行实验,像是Ragged Tensors、TensorFlow Probability和Tensor2Tensor等。官方提到,结合Eager Execution、分散策略API以及AutoGraph,TensorFlow 2.0成为一个可高度自订,并且可扩展的平台。

TensorFlow 2.0与TensorFlow 1.x的差异,除了之前发布消息,将tf.contrib从TensorFlow存储库和构建程序中移除外,也改变了变量处理方式以及重命名部分API,另外也移除了队列执行器以及图集合。为了简化开发者从旧版本搬移到TensorFlow 2.0的步骤,官方发布转换工具,可以自动转换程序代码,并更换相对应的API,也会标记无法转换的程序代码。

另外,SavedModels和存储的GraphDefs将会向后兼容,也就是说TensorFlow 1.x输出的SavedModels将能继续于TensorFlow 2.x版本中使用。官方将继续为TensorFlow 1.x提供12个月的安全补丁,提供用户足够的过度时间。