Google正式发布了TensorFlow 2.4,该版本带来了许多新功能和功能改进。 TensorFlow 2.4的更新包括针对分布式训练和混合精度的新功能支持,对NumPyAPI子集的实验性支持以及一些用于监视性能瓶颈的新工具。根据TensorFlow官方博客的说法,此更新的主要内容组织如下:tf.distribute中的新功能参数服务器策略在TensorFlow 2.4中,tf.distribute模块引入了ParameterServerStrategy和自定义训练循环的使用,以进行异步训练。楷模。性支持。与MultiWorkerMirroredStrategy相似,ParameterServerStrategy是一种多工作人员数据并行策略,但是渐变更新是异步的。参数服务器培训集群由工作服务器和参数服务器组成。变量是在参数服务器上创建的,然后在每个步骤中由工作人员读取和更新。变量的读取和更新在工作进程之间独立进行,并且没有同步。由于工人彼此不依赖,因此该策略具有工人容错的优势。如果使用可抢占式VM,此策略将很有用。多员工镜像策略MultiWorkerMirroredStrategy已离开实验阶段,并已成为稳定的API。与单工MirroredStrategy一样,MultiWorkerMirroredStrategy通过并行同步数据来实现分布式培训。顾名思义,借助MultiWorkerMirroredStrategy,可以在多台计算机上进行培训,并且每台计算机可能具有多个GPU。 Keras更新混合精度在TensorFlow 2.4中,Keras混合精度API已脱离实验阶段,并已成为稳定的API。大多数TensorFlow模型使用float32dtype,但是现在某些低精度数据类型占用的内存更少,例如float16。混合精度是指在同一模型中使用16位和32位浮点数以进行更快的训练。该API可将模型性能在GPU上提高3倍,在TPU上提高60%。要使用混合精度API,必须使用Keras层和优化器,但不一定需要使用其他Keras类。优化程序的此更新包括重构tf.keras.optimizers.Optimizer类,从而允许model.fit用户和自定义训练循环用户编写可与任何优化程序一起使用的训练代码。所有内置的tf.keras.optimizer.Optimizer子类都可以接受gradient_transformers和gradient_aggregator参数,以轻松定义自定义渐变转换。重构后,用户可以在编写自定义训练循环时将损失张量直接传递给Optimizer.minimize:这些更新的目的是使Model.fit和自定义训练循环与优化器细节更不相关,以便用户使用可以编写无需修改即可与任何优化程序一起使用的培训代码。最后,TensorFlow 2.4的更新还包括KerasFunctionalAPI的内部重构,从而改善了由功能模型构建产生的内存消耗,并简化了触发逻辑。此重构可以确保TensorFlowOpLayers的行为是可预测的,并且可以使用CompositeTensor类型签名。 tf.experimental.numpyTensorFlow2.4引入了对NumPyAPI子集的实验支持。该模块可以运行由TensorFlow加速的NumPy代码。由于该API基于TensorFlow构建,因此可以与TensorFlow无缝连接,从而可以访问所有TensorFlow API,并通过编译和自动矢量化提供优化的操作。例如,TensorFlowND数组可以与NumPy函数通信。同样,TensorFlowNumPy函数可以接受不同类型的输入,包括tf.Tensor和np.ndarray。新的性能分析工具TensorFlowProfiler是用于测量TensorFlow模型的训练性能和资源消耗的工具。它用于诊断性能瓶颈并最终提高训练速度。以前,TensorFlowProfiler支持多GPU单主机培训。在版本2.4中,用户可以测试MultiWorkerMirroredStrategy的培训工作,例如使用采样模式API按需配置,并连接到MultiWorkerMirroredStrategy工作者正在使用的同一服务器。此外,您可以通过向捕获配置文件工具提供工作人员地址来使用TensorBoard配置文件插件。配置完成后,您可以使用新的PodViewertool选择一个培训步骤,并在所有工作人员上查看该步骤的步骤时间分解。 TFLiteProfilerTFLiteProfiler支持在Android中跟踪TFLite内部信息,以识别性能瓶颈。该GPU支持TensorFlow2.4与CUDA11和cuDNN8配合使用,并支持新发布的NVIDIA Ampere架构GPU。对于CUDA11的新功能,您可以