github NVIDIA/DALI v2.3.0
DALI v2.3.0

3 hours ago

Key Features and Enhancements

This DALI release includes the following key features and enhancements:

  • Improved capture mode (transparent pipelining): (#6445, #6441, #6434, #6440, #6420, #6388)
    • Support tracing random ops and external source (#6423, #6401)
    • Added ndd.compile.invariant (#6429)
  • Improved dynamic mode skill (#6447, #6389, #6421, #6448)
  • Added support for nvImageCodec 0.9.0 (#6426)
  • Added support for CUDA 13.3U1 (#6416)
  • Improved StdCUFileStream (avoid unnecessary creation of buffered file-descriptors) (#6386)

Fixed Issues

  • Fixed insufficient validation of NPY shape sizes (#6443)
  • Fixed wds2idx parsing with spaced tar owners and non-ASCII names (#6422, #6409)
  • Fixed insufficient validation of RecordIO record length (#6406)
  • Fixed parallel external source forwarding recycled output buffers (#6413)
  • Added a check to reject non-string COCO file names (#6415)
  • Fixed 0d reader tensor args handling in dynamic readers (#6398)
  • Fixed insufficient validation of TFRecord payload length (#6405)
  • Fixed malformed numpy headers parsing (#6410)
  • Fixed external source prefetch drain with separated async executor (#6397)
  • Added support for full-range VP9 video decoding (#6367)

Improvements

  • Update VERSION to 2.3.0
  • Improve call site detection in capture mode and add it to hw decoder bench (#6445)
  • Add OpenAI metadata in the dynamic mode skill (#6447)
  • Update NVSkill CI to latest template (#6448)
  • Rename dynamic compile mode APIs to capture mode (#6441)
  • Add capture mode documentation (#6440)
  • Update DALI_DEPS_VERSION (#6439)
  • Install missing python-build module in Jetson build image (#6438)
  • Drop Python 3.13t-specific test dependencies and warn on 3.13t (#6436)
  • Use python-build for package artifacts (#6433)
  • Preserve JAX decorator metadata (#6427)
  • Support random ops in transparent pipelining (#6423)
  • Optimize passing non-tensor named arguments in Dynamic Mode (#6434)
  • Fix coverity detected defects
  • Add ndd.compile.invariant (#6429)
  • Reduce the number of threads in test_parallel_pipelines (#6431)
  • Upgrade nvimgcodec to 0.9.0 (#6426)
  • Update third-party dependencies (#6418)
  • Fix compiled external source tests on Python 3.10 (#6424)
  • Pin versions in the dynamic mode skill requirements.txt (#6421)
  • Test wds2idx names with spaces (#6414)
  • Update CUDA to 13.3U1 and related libraries for CTK 12 & 13 (#6416)
  • Add ExternalSource support to transparent pipelining (#6401)
  • Optimize call site resolution. (#6420)
  • Add license header to skill asset (#6412)
  • Fix free-threaded Python 3.13 QA dependency constraints (#6417)
  • Update FFmpeg build instructions (#6408)
  • Fix URI fragment parsing without query (#6393)
  • Fix TL1_tensorflow-dali_test and free threded 3.13 tests (#6403)
  • Add ExternalSource to dynamic mode (#6395)
  • Rename TL0_self_test_Ampere to TL0_self_test_arch_next (#6404)
  • Update DALI_DEPS_VERSION (#6399)
  • conda: pin libopencv to >=4.13,<5 (#6400)
  • Accept function parameters and closure cells as arguments with compile=True (#6388)
  • Add missing version selector for 2.1.1 (#6396)
  • Refine dynamic mode skill eval (#6389)
  • Switch back to upstream CV-CUDA. (#6392)
  • Prevent deadlocks in test_parallel_pipelines when a worker fails (#6394)
  • Add conda build option and CUDA target includes (#6316)
  • feat: lazy open file handle (#6386)

Bug Fixes

  • Fix incorrect link to 2.1.1 release (#6453)
  • Validate NPY shape sizes before allocation (#6443)
  • Bump up nvComp version to 5.3.0.16 (#6430)
  • Fix wds2idx parsing with spaced tar owners (#6422)
  • Fix num_workers swapped with batch_size in test parameters. (#6425)
  • Validate RecordIO record lengths before parsing (#6406)
  • Stop bundling FFmpeg libraries in Conda package (#6419)
  • Fix parallel external source forwarding recycled output buffers (#6413)
  • Reject non-string COCO file names (#6415)
  • Promote 0d reader tensor args to scalars (#6398)
  • Validate TFRecord payload length before parsing (#6405)
  • Handle non-ASCII names in wds2idx (#6409)
  • Bound numpy header parsing to string views (#6410)
  • Fix separated external source prefetch drain (#6397)
  • Add support for full-range VP9 video decoding (#6367)
  • Support different ops at the same call site with compile=True (#6378)

Breaking API changes

There are no breaking changes in this DALI release.

Deprecated features

Deprecated experimental support for Python 3.13t (in favour of 3.14t).

Known issues:

  • A problem with insufficient static TLS allocation size has been observed on Ubuntu 22.04 for aarch64 that can result in process crash when loading dynamic libraries. Updating glibc to 2.39 or newer, or specifying higher static TLS size with GLIBC_TUNABLES=glibc.rtld.optional_static_tls=10000 should resolve the issue.
  • The following operators: experimental.readers.fits, experimental.decoders.video, and experimental.inputs.video do not currently support checkpointing.
  • The video loader operator requires that the key frames occur, at a minimum, every 10 to 15 frames of the video stream.
    If the key frames occur at a frequency that is less than 10-15 frames, the returned frames might be out of sync.
  • Experimental VideoReaderDecoder does not support open GOP.
    It will not report an error and might produce invalid frames. VideoReader uses a heuristic approach to detect open GOP and should work in most common cases.
  • The DALI TensorFlow plugin might not be compatible with TensorFlow versions 1.15.0 and later.
    To use DALI with the TensorFlow version that does not have a prebuilt plugin binary shipped with DALI, make sure that the compiler that is used to build TensorFlow exists on the system during the plugin installation. (Depending on the particular version, you can use GCC 4.8.4, GCC 4.8.5, or GCC 5.4.)
  • In experimental debug and eager modes, the GPU external source is not properly synchronized with DALI internal streams.
    As a workaround, you can manually synchronize the device before returning the data from the callback.
  • Due to some known issues with meltdown/spectra mitigations and DALI, DALI shows best performance when running in Docker with escalated privileges, for example:
    • privileged=yes in Extra Settings for AWS data points
    • --privileged or --security-opt seccomp=unconfined for bare Docker.

Binary builds

NOTE: DALI builds dynamically link the CUDA toolkit. To use DALI, please install the latest (12.x or 13.x) CUDA toolkit.

DALI builds use CUDA toolkit enhanced compatibility: 
DALI is built with the latest CUDA 12.x/13.x toolkit but can be run on any stable drivers from the respective CUDA family (525 and 580).
Using the most recent driver may enable additional functionality. 
More details can be found in enhanced CUDA compatibility guide.

Install via pip for CUDA 13.0:
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/ nvidia-dali-cuda130==2.3.0
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/ nvidia-dali-tf-plugin-cuda130==2.3.0

or just:

pip install nvidia-dali-cuda130==2.3.0
pip install nvidia-dali-tf-plugin-cuda130==2.3.0

For CUDA 12:
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/ nvidia-dali-cuda120==2.3.0
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/ nvidia-dali-tf-plugin-cuda120==2.3.0

or just:

pip install nvidia-dali-cuda120==2.3.0
pip install nvidia-dali-tf-plugin-cuda120==2.3.0

Or use direct download links (CUDA 13.0):

Or use direct download links (CUDA 12.0):

FFmpeg source code:

  • This software uses code of FFmpeg licensed under the LGPLv2.1 and its source can be downloaded here

Libsndfile source code:

Don't miss a new DALI release

NewReleases is sending notifications on new releases.