5.1.1. TensorFlow changelog

2.6.0

New features

  • Migrated codebase from TensorFlow 2.5 to TensorFlow 2.6.

  • Add support for exporting models to Graphcore’s version of TensorFlow Serving. See the documentation for more details.

Bug fixes and optimisations

  • The Protobuf dependency issue has been addressed and manually downgrading the Protobuf version is no longer necessary.

  • Optimisations for loop based models (such as RNNs) to improve compile time, memory usage and runtime performance.

  • Optimisations for gather and scatter operations where the input tensor is a constant.

  • Scheduling optimisations to improve memory usage.

  • Wrapping Keras layers in ipu.outlined_function no longer causes compilation errors.

  • To improve I/O performance for most use cases the default prefetch_depth for infeed queues has been changed from 1 to 3. See the documentation in Efficient IPU I/O for TensorFlow 2 and Efficient IPU I/O for TensorFlow 1 for information on the prefetch feature.

2.5.1

New features

  • Migrated codebase from TensorFlow 2.4 to TensorFlow 2.5.

  • Added efficient support for Keras Model subclasses, see the documentation for full details.

  • Added ipu.ops.within_replica_ops module which provides within replica variants of all gather, all reduce and reduce scatter operations.

  • Added optimise_latency option to IPUInfeedQueue and IPUOutfeedQueue, which when enabled can speedup small data transfers.

  • Expanded interface for ipu.ops.reduce_scatter and ipu.ops.all_gather to support multiple inputs in a single operation.

  • Improved integration with TensorBoard for TensorFlow 2 Keras models.

  • Added support for passing tf.function to ipu.application_compile_op.experimental_application_compile_op in TensorFlow 2.

  • Added ipu.control_flow_ops.barrier for forcing the scheduling of operations, see the documentation for full details.

Bug fixes

  • Optimisations for loop based models (such as RNNs) to improve compile time, memory usage and runtime performance.

  • Memory usage optimisations for dynamic slices/update operations. This optimisation is on by default, but can be disabled with IPUConfig.optimizations.enable_dynamic_slice_replacement.