当前位置:千优科技>行业资讯>详情

步履不停:TensorFlow 2.4新功能一览!

2021-01-13 22:01:32 浏览:331次 来源:互联网 编辑:leo 推荐:人工智能

TensorFlow2.4正式发布!随着对分布式训练和混合精度提供更多支持,加入新的Numpy前端及用于监控和诊断性能瓶颈的工具,这个版本的亮点在于推出新功能,以及对性能和扩展方面的增强。

tf.distribute的新增功能

参数服务器策略

在版本2.4中,实验性引入了tf.distribute模块的支持,可通过ParameterServerStrategy和自定义训练循环对Keras模型进行异步训练。与MultiWorkerMirroredStrategy一样,ParameterServerStrategy是一种多工作器数据并行策略;但其梯度更新方式为异步执行。

https://tensorflow.google.cn/api_docs/python/tf/distribute/experimental/ParameterServerStrategy

参数服务器训练集群包含工作节点和参数服务器。系统会在参数服务器上创建变量,然后工作节点会在每个步骤中进行读取和更新。变量的读取和更新会在各工作节点上独立进行,同时无需采取任何同步操作。由于工作节点互不依赖,因此该策略具有工作器容错的优势,并会在使用抢占式服务器时有所助益。

如要开始使用此策略,请查阅参数服务器训练教程。此教程介绍了如何设置ParameterServerStrategy,并说明了如何使用ClusterCoordinator类来创建资源、调度函数和处理任务失败。

https://tensorflow.google.cn/tutorials/distribute/parameter_server_training

https://tensorflow.google.cn/api_docs/python/tf/distribute/experimental/coordinator/ClusterCoordinator

多工作节点镜像策略

MultiWorkerMirroredStrategy多工作节点镜像策略已顺利度过实验阶段,现已成为稳定API的组成部分。与单个工作节点副本MirroredStrategy一样,MultiWorkerMirroredStrategy通过同步数据并行化实现分布式训练。但利用MultiWorkerMirroredStrategy,您可以在多台机器上进行训练,且每台机器可以都搭载多个GPU。

https://tensorflow.google.cn/api_docs/python/tf/distribute/MultiWorkerMirroredStrategy

https://tensorflow.google.cn/api_docs/python/tf/distribute/MirroredStrategy

在同步训练中,每个工作节点会在输入数据的不同片段上计算正向和反向传递次数,并且在每个步骤结束时汇总梯度。对于这种称为AllReduce的汇总,MultiWorkerMirroredStrategy会使用集合运算保持变量同步。集合运算是TensorFlow图表中的单个算子,可以根据硬件、网络拓扑和张量大小在TensorFlow运行时中自动选择AllReduce算法。集合运算还可实现其他集合运算,例如广播和AllGather。

步履不停:TensorFlow 2.4新功能一览!

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/collective_ops.py

如要开始使用MultiWorkerMirroredStrategy,请查阅使用Keras进行多工作器训练教程,该教程已更新了有关数据集分片、保存/加载使用分布策略训练的模型,以及使用BackupAndRestore回调进行故障恢复的详细信息。

https://tensorflow.google.cn/tutorials/distribute/multi_worker_with_keras

https://tensorflow.google.cn/api_docs/python/tf/keras/callbacks/experimental/BackupAndRestore

如果您不熟悉分布式训练,并希望了解入门方法,或者有兴趣在Google云端平台(GCP)上进行分布式训练,请参阅本博文,以获取关于关键概念和步骤的介绍。

Keras的相关更新

混合精度

在TensorFlow2.4中,Keras混合精度API已顺利度过实验阶段,现已成为稳定的API。大多数TensorFlow模型使用的是float32dtype;但也存在使用更少内存的低精度类型(如float16)。混合精度指在同一模型中通过使用16位和32位浮点类型,以加快训练速度。该API可使模型在GPU上性能提高3倍,在TPU上提高60%。

https://tensorflow.google.cn/api_docs/python/tf/keras/mixed_precision

如要使用混合精度API,您必须使用Keras层和优化工具,但无需使用其他Keras类,例如模型或损失。如果您对如何利用此API实现性能优化颇有兴趣,请查阅混合精度教程。

https://tensorflow.google.cn/guide/mixed_precision

优化工具

此版本支持重构tf.keras.optimizers.Optimizer类,使model.fit或自定义训练循环的用户能够编写任何适用于优化工具的训练代码。现所有内置的tf.keras.optimizer.Optimizer子类均可支持使用gradient_transformers和gradient_aggregator参数,您可借此轻松定义自定义梯度转换。

https://tensorflow.google.cn/api_docs/python/tf/keras/optimizers/Optimizer

通过重构,您现在可以在编写自定义训练循环时将损失张量直接传递给Optimizer.minimize:

此类更改旨在使Model.fit和自定义训练循环都能摆脱优化工具细节的限制,从而使您无需修改,即可编写任何适用于优化工具的训练代码。

函数式API模型构建的内部改进

最后,在Keras中,TensorFlow2.4可支持对KerasFunctionalAPI内部主要结构的重构,从而可降低函数式模型构建的内存消耗并简化触发逻辑。开展此类重构操作还能够确保TensorFlowOpLayers行为可预测,并可与CompositeTensor类型的签名一起使用。

隆重推出tf.experimental.numpy

TensorFlow2.4以tf.experimental.numpy形式,实验性引入了对NumPyAPI子集的支持。您可借此模块,运行由TensorFlow加速的NumPy代码。由于此API基于TensorFlow构建而成,因此可支持访问所有TensorFlowAPI,与TensorFlow实现无缝互操作,并会通过编译和自动矢量化开展优化。例如,TensorFlowND数组可以与NumPy函数进行交互,同样地,TensorFlowNumPy函数也可以接受包括tf.Tensor和np.ndarray在内的不同类型的输入。

https://tensorflow.google.cn/api_docs/python/tf/experimental/numpy

https://github.com/tensorflow/community/blob/master/governance/api-reviews.md#experimental-apis

您可以查阅TensorFlow指南上的NumPyAPI,了解更多关于使用此API的信息。

https://tensorflow.google.cn/guide/tf_numpy

全新性能分析器工具

TensorFlowProfiler中的多工作器支持

TensorFlowProfiler是一套用于评估TensorFlow模型训练性能和资源消耗情况的工具。TensorFlowProfiler可帮助您了解模型中算子的硬件资源消耗、诊断瓶颈并最终加快训练速度。

https://tensorflow.google.cn/guide/profiler

之前版本的TensorFlowProfiler支持监控多GPU、单主机训练作业。在现在2.4版本中,您可以分析MultiWorkerMirroredStrategy训练作业的性能。例如,您可以使用采样模型API来执行按需分析,并连接到MultiWorkerMirroredStrategy工作节点上正在使用的同一服务器端口:

https://tensorflow.google.cn/guide/profiler#sampling_mode

或者,您可以通过向CaptureProfile(捕获分析结果)工具提供工作节点地址来使用TensorBoard配置文件插件。

分析完成后,您可以使用新的PodViewer工具选择一个训练步骤,并查阅所有工作节点的分步时间类别细分。

步履不停:TensorFlow 2.4新功能一览!

https://tensorflow.google.cn/guide/profiler#pod_viewer

有关如何使用TensorFlowProfiler的更多信息,请查阅新发布的GPU性能指南。此指南介绍了您在对模型训练作业进行性能分析时可能遇到的常见情况,并提供了调试工作流程来帮助您优化性能,无论您是使用单个GPU、多个GPU还是使用多台机器进行训练,均可从中受益。

https://tensorflow.google.cn/guide/gpu_performance_analysis

TFLiteProfiler

在2.4版本中,您亦可在Android中启用对TFLite内部结构的跟踪。现在,您可以使用Android版TFLiteProfiler来识别性能瓶颈。TFLite性能评估指南介绍了如何使用AndroidStudioCPU性能分析器和系统跟踪应用添加跟踪事件,启用TFLite跟踪以及捕获跟踪。

步履不停:TensorFlow 2.4新功能一览!

使用Android系统跟踪应用进行跟踪的示例

https://tensorflow.google.cn/lite/performance/measurement#trace_tensorflow_lite_internals_in_android

提供GPU支持的新功能

TensorFlow2.4可与CUDA11和cuDNN8一起运行,以支持最新上市的NVIDIAAmpereGPU架构。如需了解CUDA11功能的更多信息,请查阅此NVIDIA开发者博客。

https://developer.nvidia.com/blog/cuda-11-features-revealed/

此外,我们亦会默认在搭载Ampere的GPU上启用对TensorFloat-32的支持。TensorFloat-32(简称为“TF32”)是NVIDIAAmpereGPU的一种数学模式,可加快令某些float32算子(例如矩阵乘法和卷积)在AmpereGPU上的运行速度,但精度降低。如需了解更多信息,请查阅tf.config.experimental.enable_tensor_float_32_execution文档。

https://tensorflow.google.cn/api_docs/python/tf/config/experimental/enable_tensor_float_32_execution

标签:TensorFlow 24机器学习人工智能

版权声明:文章由 www.e1000u.com 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.e1000u.com/article/10258.html