feat(vllm): enhance OOM diagnostics and guidance in serve summary (eai-8059) - #284
feat(vllm): enhance OOM diagnostics and guidance in serve summary (eai-8059)#284r0x0r wants to merge 6 commits into
Conversation
|
A few observations, mostly around the signature list and the stacking:
|
ee202f0 to
a97a39f
Compare
Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
738cdf4 to
b9316f3
Compare
|
Thanks for the detailed review — addressed all of these in b9316f3 (rebased onto the current
All changes covered by unit tests; |
3d05a44 to
a910068
Compare
- Drop the generic "engine core initialization failed" wrapper from vllm_log_shows_oom: vLLM emits it as the terminal line for any EngineCore startup crash (unsupported arch, shm size, TP misconfig, missing weights), not just OOM, so it was misreporting unrelated failures as OOM. - Stop double-printing the memory-utilization hint: append_oom_serve_note now skips appending when the pre-launch low-VRAM note already carried the same hint text. - Stop attributing an already-running managed service's log to a new serve invocation: append_oom_serve_note now only fires for a launch this invocation actually performed, not one it merely reused. - Update unit tests accordingly and add regression coverage for the two fixes above. - Repoint the e2e OOM scenario at the actual bug: it now proves that reusing an already-running service never blames it for another process's OOM, using a real allocator OOM signature instead of the removed generic wrapper string. Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
a910068 to
83dc552
Compare
|
Round 2. Items 1, 4 and 5 are genuinely fixed — I checked the mechanisms, not just the claims. The dedup works ( Blocking:
On #290: the claim that nothing defines Smaller things:
Checked and clean: log lifecycle ( Centralising the signature into |
Round-2 review (EAI-8059): - vllm_log_shows_oom: drop the dead `hip out of memory` signature (any log containing it already contains `out of memory`) in favour of the space-free `outofmemory` form, so the allocator error types match whatever module path they carry (torch.OutOfMemoryError, torch.cuda.OutOfMemoryError, hipErrorOutOfMemory); add rocm-core unit coverage. - Gate the post-failure OOM note on serve_summary::serve_failed_to_become_ready (only `starting` is a launch failure) instead of `status != "ready"`, so a healthy still-loading `running` service is never blamed; check the shared hint before reading the log. - Revert the inert spawn_managed_engine_child log/manifest-path change and the gratuitous select_auto_gpu_index comment churn; restore the auto_selection_uses_vram_row_count regression test. - docs/vllm.md: fix the `two ways` count (the list has three bullets). - e2e: move the reuse regression onto the no-GPU mock lane (--device cpu_only, @requires-no-gpu) so it gates every PR, and split the reused-service assertion into its own explicit Gherkin step. Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
|
Thanks for the Round-2 review — pushed Note could fire for a healthy Dead signature / narrowing regression. Inert
The Positive e2e scenario — not added, and here's why. The negative case (reuse must not blame this invocation) is the one the harness can drive without a GPU, because it reuses a pre-planted live service rather than launching. A positive end-to-end (this invocation launches, the launch OOMs, the note renders) needs the mock engine to emit a real allocator OOM signature in a log it owns ( Smaller items: added the missing rocm-core test for Coordination with #290: once both land there are two OOM detectors ( |
Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
Reusing an already-running managed service launches nothing and pins no GPU, yet the GPU-required fail-fast bail ran before the reuse short-circuit was ever reached. That forced the OOM-reuse e2e scenario onto a GPU lane, or (in the prior attempt) onto `--device cpu_only`, which parse_device_policy rejects outright under the strict no-CPU policy - so the scenario could not run on the no-GPU mock lane. Move model resolution and reuse detection ahead of the GPU pre-flight, gated by a cheap any_live_managed_service_for_engine pre-check so the common launch path still fails fast before any engine work. When a live managed service for the engine already exists and the model ref resolves to it, skip the GPU-required bail (the reuse pins no GPU; the service was vetted at its own launch). No-service paths - including the no-GPU / no-runtime refusal - are unchanged. The OOM-reuse scenario now runs on the no-GPU lane with the default device, so it gates every PR and allocates no GPU memory. Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
Signed-off-by: Roman Sirokov <roman.sirokov@amd.com>
|
@volen-silo — correction on the scenario-15 lane, because my Round-2 reply was wrong and CI called it out.
Proper fix ( Scenario 15 now runs on the blocking lane with the default device — Follow-up Note: the current red E2E tests (GPU) lane is unrelated — 9 scenarios fail identically with vLLM Your other two Round-2 items (restore the deleted |
This pull request enhances GPU out-of-memory (OOM) diagnostics and user guidance for vLLM model serving, especially on shared or busy GPUs. It introduces actionable hints in both pre-launch warnings and post-failure summaries, ensuring users are clearly informed about how to adjust memory settings to avoid OOM errors. The changes also unify the messaging across CLI, engine logs, and documentation, and add comprehensive tests for these new behaviors.
Improvements to OOM diagnostics and user guidance:
VLLM_GPU_MEMORY_UTILIZATION_HINT) that recommends adjusting--gpu-memory-utilizationand/or targeting a less-busy GPU with--gpu <index>, shown both before launch (when low VRAM is detected) and after OOM failures in vLLM serves. [1] [2] [3] [4]Integration and codebase updates:
collect_serve_notesand related serve summary logic to include vLLM-specific memory guidance, both pre-launch and post-failure, and ensured these notes are only shown when relevant. [1] [2] [3] [4]Documentation and testing:
These changes collectively improve the user experience by making OOM errors easier to diagnose and resolve, especially in shared GPU environments.<!--
Copyright © Advanced Micro Devices, Inc., or its affiliates.
SPDX-License-Identifier: MIT
-->
tests/e2e-cucumber/expectations.tomlfor the fixed ticket ID and removed/narrowed any now-stale xfail rows.