NVIDIA Dynamo · AITune

AITune

One API that finds the fastest validated backend for every module of your PyTorch model.

Apache 2.0PyTorch 2.8+v0.6.0
PyTorchmodel fastestvalidated, per module 6 frameworks · 50+ export / conversion / runtime paths
The problem · deployment entropy

Every model has dozens of paths to a fast engine, and they keep moving

Pain
7core technologies
~26runtime × precision configurations
4owners: NVIDIA · Meta · Microsoft · Lightning AI

Result: teams fall back to vanilla PyTorch or the simplest path, and leave GPU performance on the table.

Before → after

From a manual loop to one call

Analyzewhich modules? shapes? Configureflags per tool Tuneexport · convert · fix Deployor start over repeat until it worksweeks per model model+ sample inputs AITunesearch · validate· pick tunedmodel / .ait minutes, in your Python environment
✗ Manual · per module, per tool
torch.onnx.export(unet, ...)          # trace or dynamo?
modelopt.quantize(...)                # pin ORT version
trtexec --onnx=unet.onnx --stronglyTyped \
        --minShapes=... --optShapes=...
torch_tensorrt.compile(vae, ...)      # 1 of 3 APIs
torch.compile(text_enc, mode="max-autotune")
# benchmark · compare outputs · repeat
✓ JIT · automatic# no code changes: one env var
AUTOWRAPT_BOOTSTRAP=aitune_enable_jit_tuning \
  python your_script.py
✓ AOT · tune once, save for deploymentimport aitune.torch as ait
modules = ait.inspect(pipe, inputs)
pipe    = ait.wrap(pipe, modules.get_modules())
ait.tune(pipe, inputs)
ait.save(pipe, "tuned_pipe.ait")
What AITune searches

One frontend over every NVIDIA and PyTorch inference path

Click a framework to see the paths and precisions AITune can try.

Architecture

Inspect, wrap, tune, validate, select, deploy

Inspect pipeline text_enc transformer decoder Wrapstrategy+ candidatesper module Tune Validateoutputs finiteshapes matchfaster thaneager? Selectby strategy→ run→ .ait

Press → to walk through the pipeline.

↳ falls back to child modules on a graph breakprefill / decode tuned as separate graphsmulti-GPU: TP / CPbring your own Backend
Hybrid deployment

No backend wins everywhere, so AITune picks per module

Diffusion pipeline · speedup vs eager per module

Click a module to see the candidates it raced.

How often each backend is the best, across ~300 models

Internal dashboard, ~300 TRT-priority models on H100. AITune is 100% by construction: it picks the winner.

Selection strategies

Tell it the objective; it picks a different winner

Objective

        

Strategy classes: MaxThroughputStrategy (default) · MinLatencyStrategy · LatencyBudgetStrategy · FirstWinsStrategy · OneBackendStrategy

Two modes

JIT to try it in seconds, AOT to ship it anywhere

# unchanged application
pipe = FluxPipeline.from_pretrained(...)
pipe("A cat holding a sign")

# one env var turns tuning on
AUTOWRAPT_BOOTSTRAP=aitune_enable_jit_tuning \
  python your_script.py

Records the first calls, tunes top-down while the app runs, and falls back to child modules on a graph break. Deferred mode suits denoising loops.

# tune once, save, reload anywhere
import aitune.torch as ait
modules = ait.inspect(pipe, inputs)
pipe = ait.wrap(pipe, modules.get_modules())
ait.tune(pipe, inputs)
ait.save(pipe, "tuned_pipe.ait")

pipe = ait.load(pipe, "tuned_pipe.ait")

You choose the modules and per-module strategies; AITune benchmarks across batch sizes and writes a portable, checksummed artifact.

JITAOT
Code changesNone4 lines
Module selectionAutomaticYou choose
Tune timeQuickSlower
StrategiesGlobalGlobal or per module
BenchmarkingNoYes
Batch extrapolationNoYes
Saved artifactNo.ait
Next startRe-tunesLoads, zero warmup
.aitstate + engines · checksummed · portable
→
Pythonait.load(model, "model.ait")
Dynamo workerOpenAI-compatible · multi-GPU · image, video, audio, embeddings
Tritongenerated model repository
Performance · internal benchmarks

Faster than torch.compile, without touching the model

1.46×average speedup vs eager on ~100 Hugging Face models torch.compile: 1.22×
2.23×P75 speedup torch.compile: 1.79×
18backends searched · 128 models · 2 GPU platforms · 20k+ runs
Sort by
eager 1.0×torch.compileAITune* with experimental Kernel Selector
Get started

Shipping every 1–2 months. Try it today.

pip install --extra-index-url \
  https://pypi.nvidia.com aitune

# zero code changes
AUTOWRAPT_BOOTSTRAP=aitune_enable_jit_tuning \
  python your_script.py
13 ready recipes
FLUX.1-devSD3 MediumSDXLWan 2.1 T2VQwen3 0.6BParakeet CTCParakeet RNNTBERT-baseE5 Large V2ESM-2 650MResNet-50YOLOv10n

Each recipe tunes, validates, benchmarks and deploys to Dynamo or Triton.

Speaker notes

← → step · N notes · F fullscreen