Skip to content

Pull request/24 - #24

Merged
aung-san-i merged 91 commits into
mainfrom
pull-request/24
Sep 28, 2026
Merged

aung-san-i merged 91 commits into
mainfrom
pull-request/24

Conversation

@aung-san-i

Copy link
Copy Markdown
Owner

Overview:

Details:

Where should the reviewer start?

Related Issues

⚠️ This section is required. Choose one path below and delete the other.

🔗 This PR is linked to an issue:

  • Closes #XXXX

🚫 This PR is NOT linked to an issue:

  • Confirmed — no related issue

Kaonael and others added 30 commits September 16, 2026 00:29
Add live-reloaded file sources for KV DC Relay namespace selection and expose readiness and source revisions through /engine/state.

Preserve applied membership on invalid updates, coalesce discovery refreshes, and isolate native integration tests in forked processes.

Signed-off-by: Nikita Sukharev <kaonael@gmail.com>
Signed-off-by: William Arnold <7565007+Aphoh@users.noreply.github.com>
Co-authored-by: Zero Rains <57100978+zeroRains@users.noreply.github.com>
…d recipes for B200 (ai-dynamo#14376)

Signed-off-by: Sandhya Rani Narravula <snarravula@nvidia.com>
…LM (ai-dynamo#14428)

Signed-off-by: Karen Chung <karenc@nvidia.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
Signed-off-by: VincyZhang <wenxin.zhang@intel.com>
…es (ai-dynamo#14435)

The sglang image-diffusion and video-generation handlers passed the
client-supplied input_reference through to the generator's image_path after only
a non-empty check. Validate it first, and for remote references materialize it
locally before the generator sees it, so the generator is always handed a
trusted local path. This brings the sglang diffusion path in line with the
vLLM/omni and trtllm backends, which already validate the same field.

Behavior change: local I2I/I2V references now require DYN_MM_LOCAL_PATH to be
set to the allowed directory; previously any path was accepted.

common/http:

- validate_media_reference() returns a plain filesystem path for local
  references; local_media_reference() is an async context manager that fetches a
  remote one through fetch_bytes(policy=...), which revalidates every redirect
  hop, into a temp file removed on exit. data: is rejected -- a URI is not a path.
- fetch_bytes() gained max_bytes, streaming through collect_capped at an explicit
  read granularity so the cap is an allocation bound and not only a rejection: a
  128 MiB-decoded gzip body against the 64 MiB cap peaks at 68,032,217 bytes
  rather than the whole decompressed body. Content-Length is caller-controlled
  and absent when chunked, and aiohttp's read(n) returns at most n bytes, so
  neither a header check nor a single capped read suffices. Defaults to None,
  leaving existing callers unchanged.
- DYN_MM_MAX_FILE_SIZE_MB makes that cap operator-tunable, in megabytes, as the
  SGLang arg it replaces was. Read per call; empty, unparseable or non-positive
  falls back to 64 with a warning, so a malformed value neither takes the worker
  down nor reads as unlimited.
- Messages built from caller input are bounded via describe_media_source, moved
  from multimodal/media_source.py (it pulls in torch) into url_validator.py and
  re-exported from its old home; a no-op below 120 characters.
- HttpStatusError bounds its .message attribute, not only the rendered string:
  errors.rs::extract_http_like_error reads .status and .message off this class by
  name and forwards .message on a 4xx without calling str(). Backend exception
  text is bounded head-and-tail, since aiohttp renders the host before the errno.
- validate_local_path uses exc.strerror rather than the raw OSError, whose text
  repeats the filename, and now catches the ValueError that Path.resolve() raises
  on an embedded NUL so callers keep their 4xx-vs-5xx decision.

Rebased onto ai-dynamo#14563 (single aiohttp backend); the httpx-side half of the
max_bytes plumbing went with that backend.

Signed-off-by: nnshah1 <neelays@nvidia.com>
Signed-off-by: Dmitry Tokarev <dtokarev@nvidia.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
Signed-off-by: svc-glamr@nvidia.com <svc-glamr@nvidia.com>
Signed-off-by: GLAMR <svc-glamr@nvidia.com>
Co-authored-by: Anant Sharma <anants@nvidia.com>
Co-authored-by: yunzhoul-nv <232973175+yunzhoul-nv@users.noreply.github.com>
Automated refresh from the public Dynamo Google Calendar.

Generated by .github/workflows/community-events-refresh.yml.

Signed-off-by: dynamo-ops <170655669+dynamo-ops@users.noreply.github.com>
…nnot run on (ai-dynamo#14571)

Signed-off-by: svc-glamr@nvidia.com <svc-glamr@nvidia.com>
Signed-off-by: Julien Darve <jdarve@NVIDIA.com>
Throwaway PR to prove the CI merged in #22 actually runs end to end on XPU
hardware. Adds only a comment to container/templates/vllm_runtime.Dockerfile,
which matches the `vllm` path filter (container/templates/vllm_*) and so makes
changed-files set vllm=true, which is what gates build-xpu and the
heterog-test-px-dn / heterog-test-pn-dx jobs.

What this exercises:
  - .github/workflows/pr-xpu.yaml            (push to pull-request/[0-9]+, needs the xpu label)
  - .github/workflows/pr-xpu-heterogeneous.yaml (push; its guard deliberately skips the label gate)
  - .github/workflows/epd-test-template.yml  (workflow_call, from the heterog jobs)
  - .github/scripts/test-filters.js          (the brace fix from #22)
  - container/templates/vllm_runtime.Dockerfile rendered and built for device=xpu

Not exercised: .github/workflows/xpu-heterogeneous-dispatch.yaml is
workflow_dispatch only and has to be run by hand from the Actions tab.

The marker comment must be removed before this branch is ever merged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: J Wyman <jwyman@nvidia.com>
Co-authored-by: Rini Gupta <rinig@nvidia.com>
Signed-off-by: bzsuni <bingzhe.sun@daocloud.io>
…4795)

Signed-off-by: Sai Kiran Polisetty <spolisetty@nvidia.com>
…rtup (ai-dynamo#14568)

Signed-off-by: svc-glamr@nvidia.com <svc-glamr@nvidia.com>
Co-authored-by: yunzhoul-nv <232973175+yunzhoul-nv@users.noreply.github.com>
Signed-off-by: Matej Kosec <mkosec@nvidia.com>
…[DYN-4310] (ai-dynamo#14756)

Signed-off-by: Anna Tchernych <atchernych@nvidia.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
…king (ai-dynamo#14135)

Signed-off-by: Dan Gil <dagil@nvidia.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
nnshah1 and others added 13 commits September 17, 2026 23:16
…i-dynamo#14429)

Signed-off-by: nnshah1 <neelays@nvidia.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
…o#13893)

Signed-off-by: Jie Hao <jihao@nvidia.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: jthomson04 <jwillthomson19@gmail.com>
…ai-dynamo#14872)

Signed-off-by: Jacky <18255193+kthui@users.noreply.github.com>
Signed-off-by: Guan Luo <gluo@nvidia.com>
Co-authored-by: Guan Luo <gluo@nvidia.com>
Signed-off-by: Guan Luo <gluo@nvidia.com>
Co-authored-by: Guan Luo <gluo@nvidia.com>
Signed-off-by: Guan Luo <gluo@nvidia.com>
Signed-off-by: GuanLuo <41310872+GuanLuo@users.noreply.github.com>
Co-authored-by: Guan Luo <gluo@nvidia.com>
Co-authored-by: GuanLuo <41310872+GuanLuo@users.noreply.github.com>
Co-authored-by: Ryan McCormick <rmccormick@nvidia.com>
Signed-off-by: VincyZhang <wenxin.zhang@intel.com>
Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
Signed-off-by: Wenxin Zhang <wenxin.zhang@intel.com>
"MultimodalEncodeWorkerHandler",
"MultimodalPrefillWorkerHandler",
"MultimodalWorkerHandler",
"PrefillWorkerHandler",
"MultimodalPrefillWorkerHandler",
"MultimodalWorkerHandler",
"PrefillWorkerHandler",
"RerankWorkerHandler",
"MultimodalWorkerHandler",
"PrefillWorkerHandler",
"RerankWorkerHandler",
"VideoGenerationWorkerHandler",
"from-image and baseline resolve to the same digest; reusing the "
"baseline SBOM instead of re-scanning"
)
from_sbom = baseline_sbom
_ASYNC_TOKENIZER_POOL[key] = async_tokenizer
return async_tokenizer
try:
tokenizer_ref = weakref.ref(tokenizer)
await waiter
finally:
release.set()
await collection
assert not collection.done()
collection.cancel()
with pytest.raises(asyncio.CancelledError):
await collection
try:
if S_ISREG(os.stat(config_path).st_mode):
return local_path
except (FileNotFoundError, NotADirectoryError):
pytest.skip("vLLM omni dependencies not available", allow_module_level=True)

try:
import vllm_omni.model_executor.models.audex.prompt # noqa: F401

try:
import vllm_omni.model_executor.models.audex.prompt # noqa: F401
import vllm_omni.model_executor.models.audex.tta # noqa: F401
Extract the XPU heterogeneous P/D pipeline out of pr-xpu-heterogeneous.yaml
into xpu-heterogeneous-run.yml, a workflow_call reusable workflow, and call it
from three thin trigger workflows so all three merge phases run the identical
pipeline instead of drifting copies.

  xpu-heterogeneous-run.yml           new, reusable. guard, changed-files,
                                      build-xpu, build-nvidia, resolve-images
                                      and both heterog tests, unchanged, plus
                                      7 inputs.
  pr-xpu-heterogeneous.yaml           reduced to the pre-merge trigger, the
                                      slash-command gate and the reaction.
  post-merge-xpu-heterogeneous.yaml   new. push to main.
  nightly-xpu-heterogeneous.yaml      new file, but the cron is MOVED, not
                                      added: it is the 0 23 * * * schedule
                                      that was already in
                                      pr-xpu-heterogeneous.yaml.

No behaviour change per phase. force_all_tests replaces the old
  github.event_name == 'schedule' || github.event_name == 'issue_comment'
expression with the same truth table: pre-merge passes
github.event_name == 'issue_comment', nightly passes true. Post-merge also
passes true, because a push to main has no PR base for
.github/actions/changed-files to diff against, and post-merge exists to catch
what per-PR gating missed.

xpu-status-check stays a TOP-LEVEL job in each caller rather than moving into
the reusable workflow. A job contributed by a reusable workflow reports to the
Checks API as "run / xpu-status-check", so hosting it there would rename the
context and leave any branch protection rule requiring xpu-status-check waiting
forever on a check that no longer reports.

The concurrency mapping stays byte-identical across all four workflows that
touch this hardware, now including xpu-heterogeneous-dispatch.yaml. Three files
do NOT get three slots: the cluster, the dynamo-system namespace and the
onexpu-/onenvidia-rdma-kueue ResourceClaimTemplates are one global resource.
The reusable workflow deliberately carries no concurrency block of its own,
which would deadlock against the slot the caller's run already holds.

Parameterised gpu_tag, model, tensor_parallel and runner as inputs so the
callers can diverge; all default to the previously hardcoded values. Added
workflow_dispatch to the nightly, without which a schedule-only workflow cannot
be exercised before it reaches the default branch.

Verified: all files parse; the four concurrency mappings are byte-identical; the
reusable workflow declares no concurrency; every input each caller passes exists
and every required input is supplied; nesting is depth 3 of the 4 GitHub allows.
actionlint was not available to run, and will report queue:max as an unknown key
in all four files, a known false positive.
@aung-san-i
aung-san-i merged commit 5218649 into main Sep 28, 2026
26 of 42 checks passed

This branch had an error being deployed

1 failed deployment
external_collaborator — feb6f95c Deployed Sep 28, 2026 by aung-san-i via ok-to-test #57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.