Skip to content

NVIDIA Warp (APIC): Triton deploy runtime [2/2, stacked on export] - #1

Draft
lgulich wants to merge 1 commit into
lgulich/warp-node-prototypefrom
lgulich/warp-triton
Draft

NVIDIA Warp (APIC): Triton deploy runtime [2/2, stacked on export]#1
lgulich wants to merge 1 commit into
lgulich/warp-node-prototypefrom
lgulich/warp-triton

Conversation

@lgulich

@lgulich lgulich commented Jun 8, 2026

Copy link
Copy Markdown
Owner

Stacked MR — 2 of 2: Triton deploy runtime. Built on top of the Warp-export MR (nvidia-isaac/leapp#3). Review nvidia-isaac#3 first.

This is a fork-internal PR whose base is the export branch (lgulich/warp-node-prototype), so the diff below is exactly this MR's net-new change — the leapp_runtimes/ Triton runtime + its tests/example. It will be retargeted to nvidia-isaac/leapp:main once nvidia-isaac#3 merges.

Summary

Adds the Triton deploy runtime for Warp .wrp nodes, on top of the Warp export work in nvidia-isaac#3. nvidia-isaac#3 captures a mixed PyTorch + Warp graph and emits per-node artifacts (torch → ONNX/JIT, warp → native APIC .wrp) runnable via the in-process Python InferenceManager. This MR adds the path to deploy those same artifacts under Triton.

What it adds (leapp_runtimes/)

  • triton/create_triton_model_repo.py — turns a LEAPP YAML + per-node artifacts into a Triton model repository (ONNX/JIT + warp branch; emits a python-backend model dir per warp node and an ensemble wiring the data_flow edges).
  • triton/warp_node/warp_apic_runtime.pyWarpApicRunner: loads a warp node's .wrp, binds inputs via wp.from_torch (using the _in_/_out_ APIC binding names from the sidecar), replays the captured CUDA graph with capture_launch, reads outputs back — the deploy-side analogue of the export backend's _WarpGraphCallable.
  • triton/warp_node/model.py — the Triton python-backend model template copied verbatim into each generated warp model dir.
  • Tests: test_triton_model_repo.py (generator: ONNX-only, warp-only, onnx→warp→onnx ensemble) and test_triton_warp_node.py (live (py)triton replay — skips cleanly when pytriton is absent). Example helper examples/triton_warp_node/make_warp_model_repo.py.

The runtime is self-contained (it imports nothing from leapp/; it reads the YAML + .warpmeta.json the export side writes), so it sits cleanly on top of the export MR.

Test plan

Deliberately out of scope (left for a follow-up)

Consolidating both runtimes into one leapp_runtime*/ package is intentionally NOT done here. Today InferenceManager lives at leapp/inference_manager.py (the existing in-process runtime, on main) and the Triton runtime lives at leapp_runtimes/. Unifying them would move the public from leapp import InferenceManager import path — a repo-wide, downstream-visible change — so it's deferred to a separate, focused refactor MR rather than bundled into this deploy-runtime MR.

🤖 Generated with Claude Code

…p export)

Adds leapp_runtimes/triton: the LEAPP-graph -> Triton model-repo generator and the
python-backend APIC runtime (WarpApicRunner + model.py template) that loads and replays a
warp node's .wrp under (py)triton, plus tests and the make_warp_model_repo example helper.
Stacked on the warp-export MR (nvidia-isaac#3); consumes the .wrp artifacts that MR produces.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant