TensorFlow 2.13 和 Keras 2.13 的新功能?
2023 年 7 月 25 日
TensorFlow 和 Keras 团队发布

TensorFlow 2.13 和 Keras 2.13 现已发布!此版本亮点包括发布 Apple Silicon 滚轮、新的 Keras V3 格式成为 .keras 扩展文件的默认格式等等!

TensorFlow 核心

TensorFlow 的 Apple Silicon 滚轮

TensorFlow 2.13 是第一个提供 Apple Silicon 滚轮的版本,这意味着当您在 Apple Silicon Mac 上安装 TensorFlow 时,您可以使用最新版本的 TensorFlow。Apple Silicon 滚轮的夜间构建于 2023 年 3 月发布,得益于 Apple、MacStadium 和 Google 之间的技术合作,这种新支持将使更细粒度的测试成为可能。

tf.lite

Python TensorFlow Lite 解释器绑定现在有一个选项可以使用 experimental_disable_delegate_clustering 标志在委托图分区阶段关闭委托聚类。您可以在 TensorFlow Lite 解释器 Python API 中设置此标志

interpreter = new Interpreter(file_of_a_tensorflowlite_model, experimental_preserve_all_tensors=False)

该标志默认设置为 False。这是实验中的一个高级功能,专为需要通过 with tf.control_dependencies() 插入显式控制依赖关系或需要更改图执行顺序的人员设计。

此外,TensorFlow Lite 中的 2.13 版本还有一些运算符改进

  • add 操作现在支持最多 6 个维度的广播。这将从许多模型中删除显式广播操作。新实现也比当前的实现快得多,后者计算两个输入的整个索引,而不是仅计算更改的部分。
  • 通过为 expmirror_padspace_to_batch_ndbatch_to_space_nd 启用 int16x8 操作来改进对 16x8 量化 的覆盖范围
  • 增加整数数据类型的覆盖范围
    • lessgreater_thanequalbitcastbitwise_xorright_shifttop_kmul 启用 int16,为 gathergather_nd 启用 int16 索引
    • floor_divfloor_modbitwise_xorbitwise_xor 启用 int8
    • bitcastbitwise_xorright_shift 启用 32 位 int

tf.data

我们改进了 tf.data API 的可用性和添加了功能。

tf.data.Dataset.zip 现在支持 Python 样式的压缩。以前,用户需要在压缩数据集时提供额外的括号,例如 Dataset.zip((a, b, c))。通过此更改,用户可以简单地将要压缩的数据集指定为 Dataset.zip(a, b, c),使其更加直观。

此外,tf.data.Dataset.shuffle 现在支持完全洗牌。要指定应完全洗牌数据,请使用 dataset = dataset.shuffle(dataset.cardinality())。这将把完整的数据集加载到内存中以便洗牌,因此请确保仅对文件名数据集或其他小数据集使用此方法。

我们还添加了一个新的 tf.data.experimental.pad_to_cardinality 变换,它使用零个元素将数据集填充到指定的基数。这对于在不丢弃任何数据的情况下避免部分批次很有用。

示例用法

ds = tf.data.Dataset.from_tensor_slices({'a': [1, 2]})
ds = ds.apply(tf.data.experimental.pad_to_cardinality(3))
list(ds.as_numpy_iterator())
[{'a': 1, 'valid': True}, {'a': 2, 'valid': True}, {'a': 0, 'valid': False}]

这在评估期间可能很有用,例如当部分批次不可取,但同时也要注意不丢弃任何数据。

CPU 上的 oneDNN BF16 数学模式

oneDNN 支持 BF16 数学模式,其中完整 FP32 张量在计算过程中会隐式向下转换为 BF16,以实现更快的执行时间。TensorFlow CPU 用户可以通过将环境变量 TF_SET_ONEDNN_FPMATH_MODE 设置为 BF16 来启用此功能。此模式可能会对模型精度产生负面影响。要返回到完整的 FP32 数学模式,请取消设置该变量。

Keras

Keras 保存格式

TF 2.12 中发布的新 Keras V3 保存格式现在是所有具有 .keras 扩展名的文件的默认格式。

您现在可以通过调用 model.save(“your_model.keras”) 开始使用它。

它提供了更丰富的 Python 端模型保存和重新加载,具有许多优点

  • 一种轻量级、更快的格式
ALT TEXT
  • 人类可读:新格式是基于名称的,具有更详细的序列化格式,使调试变得更加容易。从 Python 的角度来看,您加载的内容与您保存的内容完全相同。
  • 更安全:与 SavedModel 不同,不依赖于通过字节码或腌制加载 - 这是安全 ML 的一项重大进步,因为腌制文件可用于在加载时导致任意代码执行。
  • 更通用:新格式中包含对非数值状态的支持,例如词汇表查找表
  • 可扩展:您可以使用 save_assets() 为自定义层添加对保存和加载奇特状态元素的支持,例如 FIFOQueue - 或者您想要的任何其他内容。您可以完全控制自定义资产的磁盘 I/O。

旧格式(h5 和 Keras SavedModel)将永远得到支持。但是,我们建议您考虑在 Python 运行时采用新的 Keras v3 格式进行保存/重新加载,并在所有其他运行时(例如 TF Serving)中使用 model.export() 进行推理。

下一篇
What's new in TensorFlow 2.13 and Keras 2.13?

TensorFlow 和 Keras 团队发布TensorFlow 2.13 和 Keras 2.13 现已发布!此版本亮点包括发布 Apple Silicon 滚轮、新的 Keras V3 格式成为 .keras 扩展文件的默认格式等等!TensorFlow 核心TensorFlow 的 Apple Silicon 滚轮TensorFlow 2.13 是第一个提供 Apple Silicon 滚轮的版本,这意味着当您在 Apple Silicon Mac 上安装 TensorFlow 时,您可以使用最新版本的 TensorFlow。Apple Silicon 滚轮的夜间构建于 2023 年 3 月发布,得益于 Apple、MacStadium 和 Google 之间的技术合作,这种新支持将使更细粒度的测试成为可能。