Skip to content

Implement multi-node vLLM health check#7

Open
TomerBN-Nvidia wants to merge 4 commits intoultra-rl-v0.17from
health-check-v0.17
Open

Implement multi-node vLLM health check#7
TomerBN-Nvidia wants to merge 4 commits intoultra-rl-v0.17from
health-check-v0.17

Conversation

@TomerBN-Nvidia
Copy link
Copy Markdown
Owner

@TomerBN-Nvidia TomerBN-Nvidia commented Mar 25, 2026

  • Add configurable RPC timeouts (VLLM_RPC_TIMEOUT=300s default)
  • Add load progress monitor: detects stalled workers by tracking shard-by-shard weight loading progress (VLLM_LOAD_STALL_TIMEOUT=120s)
  • Implement real check_health() in Worker (GPU probe + NCCL allreduce)
  • Add ray_check_health to RayWorkerWrapper for Ray-native detection
  • Restore NCCL_ASYNC_ERROR_HANDLING (was silently removed, broke error detection)
  • Add orphaned process cleanup on startup (nvidia-smi based)
  • Add SIGTERM/atexit shutdown handlers for clean teardown
  • Add get_load_progress() API for health monitor polling

Part of Nemotron Ultra 3 RL resiliency effort.

Purpose

Test Plan

Test Result


Essential Elements of an Effective PR Description Checklist
  • The purpose of the PR, such as "Fix some issue (link existing issues this PR will resolve)".
  • The test plan, such as providing test command.
  • The test results, such as pasting the results comparison before and after, or e2e results
  • (Optional) The necessary documentation update, such as updating supported_models.md and examples for a new model.
  • (Optional) Release notes update. If your change is user facing, please update the release notes draft in the Google Doc.

- Add configurable RPC timeouts (VLLM_RPC_TIMEOUT=300s default)
- Add load progress monitor: detects stalled workers by tracking
  shard-by-shard weight loading progress (VLLM_LOAD_STALL_TIMEOUT=120s)
- Implement real check_health() in Worker (GPU probe + NCCL allreduce)
- Add __ray_check_health__ to RayWorkerWrapper for Ray-native detection
- Restore NCCL_ASYNC_ERROR_HANDLING (was silently removed, broke error detection)
- Add orphaned process cleanup on startup (nvidia-smi based)
- Add SIGTERM/atexit shutdown handlers for clean teardown
- Add get_load_progress() API for health monitor polling

Part of Nemotron Ultra 3 RL resiliency effort.
@github-actions
Copy link
Copy Markdown

👋 Hi! Thank you for contributing to the vLLM project.

💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in #pr-reviews, coordinate on features in #feat- channels, or join special interest groups in #sig- channels.

Just a reminder: PRs would not trigger full CI run by default. Instead, it would only run fastcheck CI which starts running only a small and essential subset of CI tests to quickly catch errors.

You ask your reviewers to trigger select CI tests on top of fastcheck CI.

Once the PR is approved and ready to go, your PR reviewer(s) can run CI to test the changes comprehensively before merging.

To run CI, PR reviewers can either: Add ready label to the PR or enable auto-merge.

If you have any questions, please reach out to us on Slack at https://slack.vllm.ai.

🚀

- Use TORCH_NCCL_ASYNC_ERROR_HANDLING (old name deprecated)
- get_load_progress() now reads per-shard progress from default_loader
  during active loading, enabling the stall monitor to track real progress
- Remove LoadProgressMonitor (RPC polling doesn't work — Ray actors
  are single-threaded, can't poll while load_model is running)
- Use simple collective_rpc timeout for load_model instead
  (VLLM_MODEL_LOAD_TIMEOUT, default 600s)
- Remove per-shard progress tracking from worker and loader
- Keep: RPC timeouts, check_health(), NCCL fix, orphan cleanup
The compiled DAG bypasses dead actors, so collective_rpc('check_health')
can succeed even when a worker is dead. Fix: ping each actor with a
lightweight RPC (get_node_ip) first. RayActorError means the worker
was killed; GetTimeoutError means it's hung.
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