feat(diagnose): add the vLLM out-of-memory failure mode to the catalog (EAI-8060) - #290
Open
r0x0r wants to merge 2 commits into
Open
feat(diagnose): add the vLLM out-of-memory failure mode to the catalog (EAI-8060)#290r0x0r wants to merge 2 commits into
r0x0r wants to merge 2 commits into
Conversation
Collaborator
|
A few observations from a read-through:
|
1 task
r0x0r
force-pushed
the
gpu-out-of-memory
branch
from
August 21, 2026 10:14
ee202f0 to
a97a39f
Compare
…AI-8060) Add a keyword-scored OOM signature to the rocm-core diagnosis catalog and a matching print-only remediation recipe. The error covers two distinct faults (a tenancy collision with vLLM's fixed ~90% VRAM reservation, versus a model that genuinely does not fit), so the wording stays conditional: it never prescribes lowering --gpu-memory-utilization as the unconditional answer, and the verify step avoids the tenancy knob. Because an Examination carries no per-GPU VRAM or tenancy fields, the match is keyword-only and the checker is gated to Linux (vLLM is Linux/WSL-only). - diagnose.rs: KEYWORDS_VLLM_OOM table + check_16_vllm_oom (linux-only) - fix.rs: print-only fix-16-vllm-oom recipe; catalog count 15 -> 16 and AUTO-set assertion strengthened - engines/vllm: serve OOM hint points users at 'rocm diagnose --symptom' - e2e-cucumber: conditional-remediation scenario + step defs and catalog contract updated Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
Review feedback on #290 flagged that KEYWORDS_VLLM_OOM never required anything vLLM-specific: 'torch.OutOfMemoryError: CUDA out of memory' scores 45+45=90 (high confidence) under the keyword table alone, so any ROCm PyTorch job's OOM would be misreported as a vLLM startup OOM with rocm-serve-only remediation. gpu_memory_utilization -- the one vLLM-specific token -- was weighted lowest and never required. check_16_vllm_oom now requires an explicit vLLM anchor (the word 'vllm', or one of its distinctive flags: gpu[-_]memory[-_]utilization, tensor[-_]parallel) before the keyword table is scored at all. Update the serve OOM hint's suggested --symptom text and the matching e2e-cucumber step to carry that anchor so the self-referential 'rocm serve' -> 'rocm diagnose' flow keeps working, and add a regression test for the reported false positive. Also fix a second issue from the same review: the diagnose() WSL branch dropped sub-threshold hits from matched entirely when nothing cleared MIN_SCORE_FOR_MATCH, which the DiagnoseReport::matched doc says should never happen. It now keeps whatever run_all_checks returns (empty only when no wsl-applicable checker fired at all) and adds a regression test. Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
r0x0r
force-pushed
the
oom-diagnostics-catalog
branch
from
August 21, 2026 11:20
d2cd3ac to
8d9f22d
Compare
Collaborator
Author
|
Thanks for the review — addressed both issues in bac9ce2 / rebased and pushed.
All of |
r0x0r
marked this pull request as draft
August 21, 2026 11:21
r0x0r
marked this pull request as ready for review
August 21, 2026 12:36
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 vLLM startup out-of-memory failure mode to the
rocm-corediagnosiscatalog, with a matching print-only remediation recipe.
The error string covers two distinct faults, and the remediation splits on which
one it is:
already in use on a shared or busy GPU; lowering the reservation is the fix, or
steer onto a less-busy device with
--gpu <index>.an earlier OOM for a later one; the fix is a smaller/quantized model or
sharding across GPUs with
--tensor-parallel-size <n>.So the wording stays conditional: it never presents
--gpu-memory-utilizationas the unconditional answer, and the
verifystep avoids the tenancy knob so itdoes not unconditionally prescribe the tenancy workaround.
What changed
crates/rocm-core/src/diagnose.rs—KEYWORDS_VLLM_OOMkeyword table andcheck_16_vllm_oom. The match is keyword-only: anExaminationcarries noper-GPU VRAM or tenancy fields, so nothing structural can corroborate it — the
user passes the error via
--symptom, or arrives from the serve failure hint.The checker is gated to Linux and WSL2 (vLLM is Linux/WSL-only). On
WSL2 this means a qualifying keyword match now produces a normal
diagnosis instead of the platform's previous unconditional "out of
scope" routing -- an exit-code/output contract change worth calling out
explicitly here, not just in code comments. A required vLLM anchor (the
word
vllm, or one of its distinctive flags/logs) gates the wholekeyword table, so a bare framework OOM string (e.g.
torch.OutOfMemoryError: CUDA out of memoryfrom an unrelated PyTorch job) is not misattributedto vLLM.
crates/rocm-core/src/fix.rs— print-onlyfix-16-vllm-oomrecipe(
auto_applicable: false, no runner). Catalog count assertion 15 → 16 and theAUTO-set assertion strengthened to pin fix-16 as print-only.
engines/vllm/src/lib.rs— the serve OOM hint points users atrocm diagnose --symptom '…'.tests/e2e-cucumber— a conditional-remediation scenario(
@id:diagnose-vllm-oom-is-conditional,@requires-os:linux), its stepdefinitions, and the catalog fix-id contract updated.
Dependencies / stacking
gpu-out-of-memory, EAI-8058) — this PR targets thatbranch, not
main, and stays in draft until feat(vllm): Tackle out of memory errors (EAI-8058) #251 merges upstream.routes users here.
Test plan
cargo test -p rocm-core --lib— passes (includes the checker tests: ahigh-confidence anchored OOM match, a bare "out of memory" staying below
threshold, a bare framework OOM without a vLLM anchor not matching at all,
Linux/WSL gating, and a WSL sub-threshold hit staying in
matchedinsteadof being routed out of scope).
cargo test -p rocm-engine-vllm --lib— passes.cargo clippy --workspace --all-targets -- -D warnings— clean.@requires-os:linuxscenario runs on theself-hosted Linux/GPU lane rather than locally.