TensorFlow 2.5.0 slithers in with support for Python 3.9

TensorFlow 2.5.0 slithers in with support for Python 3.9

The TensorFlow team has released v2.5.0 of the open source software framework for machine learning, delivering a number of improvements along with the usual bug fixes.

Among the changes is the addition of support for Python 3.9, the most recent major release of the programming language. According to TensorFlow’s page on GitHub, it still supports Python 3.6, 3.7 and 3.8.

In this release, the tf.data service has been updated to support strict round-robin reads. This is useful for synchronous training workloads, where example sizes vary. This means developers can now guarantee consumers get similar-sized examples in the same step.

Also, tf.data input pipelines can now be executed in debug mode, which disables any asynchrony, parallelism, or non-determinism. It also forces Python execution rather than trace-compiled graph execution of user-defined functions.

In tf.lite, the new MLIR-based quantization backend is now enabled by default. MLIR, or Multi-Level Intermediate Representation, defines a common intermediate representation (IR) for machine learning models. This new backend is for 8-bit full integer post-training quantisation, removing redundant rescales and fixing some bugs.

In this release, third-party devices can now connect to TensorFlow as plug-ins through StreamExecutor C API and PluggableDevice interface. PluggableDevice also adds custom ops and kernels through kernel and op registration C API.

This release also adds CPU performance optimisations from the Intel-optimised TensorFlow build into the official x86-64 Linux and Windows builds. These are turned off by default and must be enabled by setting an environment variable. However, the team does not currently recommend using them in GPU systems, as this use case has not been sufficiently tested.

One important breaking change in TensorFlow 2.5.0 is that the TF_CPP_MIN_VLOG_LEVEL environment variable has been renamed to TF_CPP_MAX_VLOG_LEVEL, to more correctly describe its effect.

Meanwhile, a host of bug fixes and other changes have been made to various modules including tf.keras, tf.data, tf.distribute and tf.lite. See the release notes for further details.