NVIDIA Warp (APIC): Triton deploy runtime [2/2, stacked on export] - #1
Draft
lgulich wants to merge 1 commit into
Draft
NVIDIA Warp (APIC): Triton deploy runtime [2/2, stacked on export]#1lgulich wants to merge 1 commit into
lgulich wants to merge 1 commit into
Conversation
…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>
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the Triton deploy runtime for Warp
.wrpnodes, 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 PythonInferenceManager. 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 +warpbranch; emits a python-backend model dir per warp node and an ensemble wiring thedata_flowedges).triton/warp_node/warp_apic_runtime.py—WarpApicRunner: loads a warp node's.wrp, binds inputs viawp.from_torch(using the_in_/_out_APIC binding names from the sidecar), replays the captured CUDA graph withcapture_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.test_triton_model_repo.py(generator: ONNX-only, warp-only,onnx→warp→onnxensemble) andtest_triton_warp_node.py(live (py)triton replay — skips cleanly when pytriton is absent). Example helperexamples/triton_warp_node/make_warp_model_repo.py.The runtime is self-contained (it imports nothing from
leapp/; it reads the YAML +.warpmeta.jsonthe export side writes), so it sits cleanly on top of the export MR.Test plan
test_triton_model_repo.py+test_triton_warp_node.py— 10 passed, 1 skipped (the skip is the live (py)triton-server tier, absent in this env).test_warp_autocapture.pyvalidates the captured.wrpvia the export backend (WarpExportBackend), so NVIDIA Warp (APIC) export: non-invasive auto-split of mixed PyTorch + Warp graphs [1/2] nvidia-isaac/leapp#3 stands alone; this MR'sWarpApicRunneris the deploy-side runner.Deliberately out of scope (left for a follow-up)
Consolidating both runtimes into one
leapp_runtime*/package is intentionally NOT done here. TodayInferenceManagerlives atleapp/inference_manager.py(the existing in-process runtime, onmain) and the Triton runtime lives atleapp_runtimes/. Unifying them would move the publicfrom leapp import InferenceManagerimport 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