TensorFlow 2.5.0
1. 增加了对 Python3.9 的支持。
2. tf.data
tf.data
服务现已支持严格的轮循读取,这对于示例大小不同的同步训练工作负载很有用。利用严格的轮循读取,用户可以保证消费者在同一步骤中获得相似大小的示例。tf.data
服务现已支持可选压缩。以前,数据总是经过压缩,但现在可以通过向tf.data.experimental.service.distribute(...)
传递compression=None
来禁用压缩。tf.data.Dataset.batch()
现已支持num_parallel_calls
和deterministic
参数。num_parallel_calls
用于表示应并行计算多个输入批次。设置num_parallel_calls
后,deterministic
参数用于表示可以按非确定性顺序获得输出。- 由
tf.data.Dataset.options()
返回的选项不再可变。 tf.data
输入流水线现在可以在调试模式下执行,该模式禁用任何异步、并行或非确定性,并强制 Python 执行(而不是跟踪编译的计算图执行)传入转换(如map
)中的用户定义的函数。调试模式可以通过tf.data.experimental.enable_debug_mode()
启用。
3. tf.lite
默认已启用基于 MLIR 的全新量化后端。
- 全新后端用于 8 int 的训练后量化。
- 全新后端移除了多余的重缩放因子,并修复了一些错误(共享权重/偏置、极小缩放因子等)。
- 将
tf.lite.TFLiteConverter
中的experimental_new_quantizer
设置为 False,以禁用此变更。
4. tf.keras
tf.keras.metrics.AUC
现已支持 logit 预测。- 已在
Model.fit
中启用受支持的全新输入类型。tf.keras.utils.experimental.DatasetCreator
,该类型需要可调用函数dataset_fn
。DatasetCreator
适用于所有tf.distribute
策略,并且是参数服务器策略支持的唯一输入类型。
5. tf.distribute
- 现可在
tf.distribute.Strategy
范围内(tf.distribute.experimental.CentralStorageStrategy
和tf.distribute.experimental.ParameterServerStrategy
除外)创建tf.random.Generator
。不同的副本将得到不同随机数的工作流。 tf.distribute.experimental.ParameterServerStrategy
现在与DatasetCreator
一起使用时,可通过 KerasModel.fit
进行训练。
6. TPU 嵌入支持
已将 profile_data_directory
添加到 _tpu_estimator_embedding.py
中的 EmbeddingConfigSpec
。此功能允许将运行时收集的嵌入查找统计信息用于嵌入层分区决策。
7. PluggableDevice
第三方设备现可通过 StreamExecutor C API 和 PluggableDevice 接口 以模块化方式 连接至 TensorFlow。
- 通过 内核和算子注册 C API 添加自定义算子和内核。
- 使用 计算图优化 C API 注册自定义计算图优化通道。
8. 经过 Intel 优化的 TensorFlow 的 oneAPI 深度神经网络库(oneDNN) CPU 性能优化现已在官方 x86-64 Linux 和 Windows 版本中发布。
- 默认情况下,这些性能优化功能处于关闭状态。通过设置环境变量
TF_ENABLE_ONEDNN_OPTS=1
可启用这些功能。 - 不建议在 GPU 系统中使用这些功能,因为它们尚未经过 GPU 的充分测试。
9. 利用 CUDA11.2 和 cuDNN 8.1.0 构建 TensorFlow pip 软件包。
重大变更
已将 TF_CPP_MIN_VLOG_LEVEL
环境变量重命名为 TF_CPP_MAX_VLOG_LEVEL
,以正确描述其影响。