Diagnoses wrong gradients in differentiable NVIDIA Warp programs by measuring first — comparing autodiff against finite differences on a shrunk reproduction before proposing any fix.
NVIDIA DALI Dynamic ModeSkill
Summary
NVIDIA's official skill for DALI's imperative dynamic-mode API — write GPU data loading as ordinary Python, or migrate an existing pipeline-mode graph across.
Features
- Writes DALI data loading as imperative Python with no pipeline graph
- Blocks pipeline-mode APIs that silently misbehave in dynamic mode
- Covers the Tensor and Batch data model, slicing and zero-copy wrapping
- Handles PyTorch hand-off via .torch(), including pad=True for ragged batches
- Guides migration of existing pipeline-mode code to ndd
- Supports DLPack, __cuda_array_interface__ and __array__ interop
Install This Skill
Add this skill to your favorite AI agent in a few steps.
Skill Content
Usage Instructions
Learn how to use this skill with different AI agents.
Example Usage
"Migrate this @pipeline_def image-augmentation pipeline to DALI dynamic mode, keep the reader alive across epochs, and hand the batches to PyTorch without an extra copy."
Description
An official, NVIDIA-authored agent skill for nvidia.dali.experimental.dynamic (imported as ndd), the imperative API that lets DALI operators be called from normal Python control flow instead of being wired into a pipeline graph. The skill exists because the two modes look similar and are not interchangeable: pipeline-mode habits carried into dynamic mode produce code that fails in confusing ways.
The rules it enforces
- No pipeline-mode APIs.
Pipeline,@pipeline_def,pipe.build()andpipe.run()have no place in dynamic-mode code; the agent is told to write directnddcalls instead. - Readers are stateful. Create them once, reuse them across epochs, and pass
batch_sizetonext_epoch(...)rather than rebuilding. - Batch size is explicit. There is no pipeline-level batch size to inherit, so random operators need it passed in.
- Convention differences that bite.
device="gpu"replaces pipeline mode's"mixed";Batch.tensors[...]selects samples andBatch.slice[...]slices per sample. - Framework hand-off.
.torch()converts a tensor or batch to PyTorch, withpad=Truefor batches of variable shape.
The data model it covers
Tensor is a single sample supporting ndd.tensor(data) (copy) and ndd.as_tensor(data) (wrap without copying where possible), .cpu() / .gpu() moves, slicing, np.asarray on CPU, and the __dlpack__, __cuda_array_interface__ and __array__ protocols plus arithmetic operators. Batch is a collection of samples that tolerates variable shapes.
Who it is for
Teams writing or reviewing GPU data-loading and augmentation code, and anyone migrating an existing DALI pipeline to the imperative API. The skill deliberately stands down on pipeline-only tasks rather than volunteering advice that does not apply.
Requirements
NVIDIA DALI installed with dynamic mode importable as nvidia.dali.experimental.dynamic. GPU decode and GPU operators need a CUDA-capable DALI build and an available NVIDIA GPU and driver; the PyTorch conversion examples need PyTorch installed.
Installing it
Part of NVIDIA's agent-skills catalogue, mirrored daily from NVIDIA's product repositories. npx skills add nvidia/skills installs the set, or npx skills add nvidia/skills --skill dali-dynamic-mode --yes fetches just this one. Apache-2.0.
Related Skills
Google's official skill for the gws CLI — drive Gmail, Drive, Calendar, Sheets, Docs, Chat and Admin APIs from an agent, with Model Armor screening.
Netlify's official skill for zero-config managed Postgres — querying from Functions, Drizzle setup, migrations and per-preview database branches.
Official WordPress skill for Gutenberg block work: block.json, attributes and serialization, dynamic rendering, and the deprecation path that keeps existing content valid.
