Skip to content

Prevent LLMPerf monitor hangs from full subprocess pipes - #4931

Open
lighthuska-lab wants to merge 2 commits into
aws:defaultfrom
lighthuska-lab:fix/llmperf-pipe-monitor
Open

lighthuska-lab wants to merge 2 commits into
aws:defaultfrom
lighthuska-lab:fix/llmperf-pipe-monitor

Conversation

@lighthuska-lab

Copy link
Copy Markdown

Issue #, if available:
Related fork issue: lighthuska-lab#2

Description of changes:
Drain stdout and stderr with communicate(timeout=15) while monitoring LLMPerf instead of polling for exit before reading pipes. A verbose child can otherwise fill a pipe and never exit. Preserve progress and nonzero-exit logging; replace invalid UTF-8 for display. Includes offline regressions, documentation, and Python 3.11–3.13 CI.

Testing done:
Four regression tests pass; baseline had two failures and one error. Tests cover timeout retries, nonzero exits, undecodable output, and a real local child writing 1 MiB to each pipe with a five-second watchdog. All nine push/PR jobs passed in the fork, including Black checks and XGBoost regressions from the merged base. git diff --check passes. No LLMPerf workload, AWS endpoint call, or notebook end-to-end test was run.

Merge Checklist

  • No new notebooks added.
  • Read CONTRIBUTING.md and followed existing folder placement.
  • Documented offline tests, behavior, and memory-buffering limits; no index change needed.
  • Notebook end-to-end tests: not applicable; no notebooks changed.
  • Formatted changed Python code with Black -l 100.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

This branch has not been deployed

No deployments
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