Skip to content

Comments

[rollout, perf, cfg] fix: Add global step info and support more profile control params for rollout profiling (sglang backend)#5025

Merged
wuxibin89 merged 4 commits intoverl-project:mainfrom
shenyichong:0121
Jan 27, 2026
Merged

Conversation

@bithighrr
Copy link
Contributor

What does this PR do?

Address key functionality gaps in rollout discrete profiling for the sglang backend by adding global step awareness and expanding support for flexible profile control parameters:

  1. Missing global step information resulted in disorganized profiling files;
  2. Lack of support for specifying critical sglang backend profile control parameters (including num_steps, profile_by_stage, and merge_profiles) led to overly large profile files and hindered convenient profiling analysis.

Solutions implemented:

  • Pass kwargs parameters to the rollout server to enable global step awareness, and generate an independent folder for each global step to organize profiling data in a structured way;
  • Extend the profiling config by adding optional parameters to the content field, and remove unnecessary restrictions on content values in TorchProfilerToolConfig to support specifying sglang-specific profile control parameters (e.g., profile_by_stage, merge_profiles).

Checklist Before Starting

  • Search for similar PRs. Paste at least one query link here: PR #4320: [perf] feat: verl profiler system support Agent Loop scenario and integrate torch.profiler
  • Format the PR title as [{modules}] {type}: {description} (This will be checked by the CI)
    • {modules} include fsdp, megatron, veomni, sglang, vllm, rollout, trainer, ci, training_utils, recipe, hardware, deployment, ray, worker, single_controller, misc, perf, model, algo, env, tool, ckpt, doc, data, cfg, reward
    • If this PR involves multiple modules, separate them with , like [megatron, fsdp, doc]
    • {type} is in feat, fix, refactor, chore, test
    • If this PR breaks any API (CLI arguments, config, function signature, etc.), add [BREAKING] to the beginning of the title.
    • Example: [BREAKING][fsdp, megatron] feat: dynamic batching

Test

To validate the functionality of each profile control parameter for the sglang rollout backend, orthogonal test cases were designed (minimizing redundant combinations while covering all key parameter values). The test results are as follows:

step_start step_end profile-by-stage merge-profiles stack shapes cpu/cuda Test Result
default default default (False) default (False) default (False) default (False) default Pass
0 (≥0) 1 (≥1) default default default default default Pass
0 (≥0) default default default default default default Pass
default 1 (≥1) default default default default default Pass
default default True default default default default Pass
default default default True default default default Pass
default default default default True default default Pass
default default default default default True default Pass
default default default default default default [] / [cpu] / [cuda] / [cpu,cuda] Pass

API and Usage Example

  rollout:
    quantization: null
    profiler:
      enable: True
      all_ranks: False
      ranks: [0, 1, 2] 
      tool_config:
        torch:
          discrete: True
          step_start: 0
          step_end: 1
          contents: [cpu, cuda, stack, shapes, profile_by_stage, merge_profiles]

Design & Code Changes

Demonstrate the high-level design if this PR is complex, and list the specific changes.

Checklist Before Submitting

Important

Please check all the following items before requesting a review, otherwise the reviewer might deprioritize this PR for review.

…le control params for rollout profiling (sglang backend)
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces global step awareness for rollout profiling and expands support for sglang-specific profile control parameters. The changes correctly integrate global_step into the profiling process and add new configuration options for TorchProfilerToolConfig. However, there are a couple of high-severity issues related to the profiling logic in async_sglang_server.py that need to be addressed to ensure correct and predictable behavior.

@bithighrr
Copy link
Contributor Author

The 'Repo id error' in NPU unit tests appears to be unrelated to this PR, could you please verify?

@bithighrr
Copy link
Contributor Author

Local Test Status Summary

Test Suite Commit 74f3224 PR c68dd6c
test_reward_model_manager Failed (same root cause) Failed (same root cause)
e2e_ascend/E2E_Ascend_testing_for_RL_training_scenarios_of_LLM_models Passed Passed
e2e_ppo_trainer_megatron_vllm_2/e2e_ppo_trainer_fsdp_vllm(run_function_reward.sh) Passed Passed

Can you check this for me? Thanks!

@bithighrr bithighrr requested a review from tardis-key January 26, 2026 04:15
Copy link
Collaborator

@tardis-key tardis-key left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@tardis-key tardis-key self-requested a review January 26, 2026 10:28
@bithighrr
Copy link
Contributor Author

The test case e2e_ascend/E2E Ascend testing for RL training scenarios of LLM models nearly failed during the execution of other CI jobs.
The test case reward_model_sglang passed in the previous CI job of this PR.

The failure of these two test cases is likely due to the impact of other CI jobs. A potential solution would be to increase the container shared memory (shm-size) for both test cases.

@wuxibin89 wuxibin89 merged commit 11f14a7 into verl-project:main Jan 27, 2026
76 of 81 checks passed
wuxibin89 pushed a commit that referenced this pull request Feb 4, 2026
### What does this PR do?

**Description**

This PR addresses issues with profiler configuration for inference
engines (vLLM and SGLang) and refactors the profiler code for better
cohesion and maintainability.

**Key Changes:**

- vLLM Profiler Configuration Fix:
Implemented automatic setup of profiler-related environment variables
for vLLM engine before process launch. Users no longer need to manually
set vLLM environment variables.
Added support for configuring the profiler via profiler_config for newer
vLLM versions, ensuring compatibility.

- SGLang Profiler Bug Fix:
Fixed a bug introduced in [@pr
5025](#5025) regarding SGLang
profiler data collection.
Corrected the argument construction logic to ensure accurate profiling
parameters are passed to the SGLang backend.

- Code Refactoring & Cohesion:
Centralized profiler logic by introducing adapter functions
(build_vllm_profiler_args, build_sglang_profiler_args) within the
profiler component.
These adapters encapsulate the logic for constructing engine-specific
profiler arguments, improving code organization and readability.

- Testing:
Added comprehensive unit tests to verify the correctness of the new
adapter functions and ensure regression testing for the fixed bugs.

### Checklist Before Starting

- [x] Search for similar PRs. Paste at least one query link here: ...
- [x] Format the PR title as `[{modules}] {type}: {description}` (This
will be checked by the CI)
- `{modules}` include `fsdp`, `megatron`, `veomni`, `sglang`, `vllm`,
`rollout`, `trainer`, `ci`, `training_utils`, `recipe`, `hardware`,
`deployment`, `ray`, `worker`, `single_controller`, `misc`, `perf`,
`model`, `algo`, `env`, `tool`, `ckpt`, `doc`, `data`, `cfg`, `reward`
- If this PR involves multiple modules, separate them with `,` like
`[megatron, fsdp, doc]`
  - `{type}` is in `feat`, `fix`, `refactor`, `chore`, `test`
- If this PR breaks any API (CLI arguments, config, function signature,
etc.), add `[BREAKING]` to the beginning of the title.
  - Example: `[BREAKING][fsdp, megatron] feat: dynamic batching`

### Test

> For changes that can not be tested by CI (e.g., algorithm
implementation, new model support), validate by experiment(s) and show
results like training curve plots, evaluation results, etc.

### API and Usage Example

> Demonstrate how the API changes if any, and provide usage example(s)
if possible.

```python
# Add code snippet or script demonstrating how to use this
```

### Design & Code Changes

> Demonstrate the high-level design if this PR is complex, and list the
specific changes.

### Checklist Before Submitting

> [!IMPORTANT]
> Please check all the following items before requesting a review,
otherwise the reviewer might deprioritize this PR for review.

- [x] Read the [Contribute
Guide](https://github.com/volcengine/verl/blob/main/CONTRIBUTING.md).
- [x] Apply [pre-commit
checks](https://github.com/volcengine/verl/blob/main/CONTRIBUTING.md#code-linting-and-formatting):
`pre-commit install && pre-commit run --all-files --show-diff-on-failure
--color=always`
- [x] Add / Update [the
documentation](https://github.com/volcengine/verl/tree/main/docs).
- [x] Add unit or end-to-end test(s) to [the CI
workflow](https://github.com/volcengine/verl/tree/main/.github/workflows)
to cover all the code. If not feasible, explain why: ...
- [ ] Once your PR is ready for CI, send a message in [the `ci-request`
channel](https://verl-project.slack.com/archives/C091TCESWB1) in [the
`verl` Slack
workspace](https://join.slack.com/t/verl-project/shared_invite/zt-3855yhg8g-CTkqXu~hKojPCmo7k_yXTQ).
(If not accessible, please try [the Feishu group
(飞书群)](https://applink.larkoffice.com/client/chat/chatter/add_by_link?link_token=772jd4f1-cd91-441e-a820-498c6614126a).)
- [ ] If your PR is related to the `recipe` submodule, please also
update the reference to the submodule commit via `git submodule update
--remote` or `cd recipe && git pull origin main`.
Tjh-UKN pushed a commit to Tjh-UKN/verl that referenced this pull request Feb 13, 2026
### What does this PR do?

**Description**

This PR addresses issues with profiler configuration for inference
engines (vLLM and SGLang) and refactors the profiler code for better
cohesion and maintainability.

**Key Changes:**

- vLLM Profiler Configuration Fix:
Implemented automatic setup of profiler-related environment variables
for vLLM engine before process launch. Users no longer need to manually
set vLLM environment variables.
Added support for configuring the profiler via profiler_config for newer
vLLM versions, ensuring compatibility.

- SGLang Profiler Bug Fix:
Fixed a bug introduced in [@pr
5025](verl-project#5025) regarding SGLang
profiler data collection.
Corrected the argument construction logic to ensure accurate profiling
parameters are passed to the SGLang backend.

- Code Refactoring & Cohesion:
Centralized profiler logic by introducing adapter functions
(build_vllm_profiler_args, build_sglang_profiler_args) within the
profiler component.
These adapters encapsulate the logic for constructing engine-specific
profiler arguments, improving code organization and readability.

- Testing:
Added comprehensive unit tests to verify the correctness of the new
adapter functions and ensure regression testing for the fixed bugs.

### Checklist Before Starting

- [x] Search for similar PRs. Paste at least one query link here: ...
- [x] Format the PR title as `[{modules}] {type}: {description}` (This
will be checked by the CI)
- `{modules}` include `fsdp`, `megatron`, `veomni`, `sglang`, `vllm`,
`rollout`, `trainer`, `ci`, `training_utils`, `recipe`, `hardware`,
`deployment`, `ray`, `worker`, `single_controller`, `misc`, `perf`,
`model`, `algo`, `env`, `tool`, `ckpt`, `doc`, `data`, `cfg`, `reward`
- If this PR involves multiple modules, separate them with `,` like
`[megatron, fsdp, doc]`
  - `{type}` is in `feat`, `fix`, `refactor`, `chore`, `test`
- If this PR breaks any API (CLI arguments, config, function signature,
etc.), add `[BREAKING]` to the beginning of the title.
  - Example: `[BREAKING][fsdp, megatron] feat: dynamic batching`

### Test

> For changes that can not be tested by CI (e.g., algorithm
implementation, new model support), validate by experiment(s) and show
results like training curve plots, evaluation results, etc.

### API and Usage Example

> Demonstrate how the API changes if any, and provide usage example(s)
if possible.

```python
# Add code snippet or script demonstrating how to use this
```

### Design & Code Changes

> Demonstrate the high-level design if this PR is complex, and list the
specific changes.

### Checklist Before Submitting

> [!IMPORTANT]
> Please check all the following items before requesting a review,
otherwise the reviewer might deprioritize this PR for review.

- [x] Read the [Contribute
Guide](https://github.com/volcengine/verl/blob/main/CONTRIBUTING.md).
- [x] Apply [pre-commit
checks](https://github.com/volcengine/verl/blob/main/CONTRIBUTING.md#code-linting-and-formatting):
`pre-commit install && pre-commit run --all-files --show-diff-on-failure
--color=always`
- [x] Add / Update [the
documentation](https://github.com/volcengine/verl/tree/main/docs).
- [x] Add unit or end-to-end test(s) to [the CI
workflow](https://github.com/volcengine/verl/tree/main/.github/workflows)
to cover all the code. If not feasible, explain why: ...
- [ ] Once your PR is ready for CI, send a message in [the `ci-request`
channel](https://verl-project.slack.com/archives/C091TCESWB1) in [the
`verl` Slack
workspace](https://join.slack.com/t/verl-project/shared_invite/zt-3855yhg8g-CTkqXu~hKojPCmo7k_yXTQ).
(If not accessible, please try [the Feishu group
(飞书群)](https://applink.larkoffice.com/client/chat/chatter/add_by_link?link_token=772jd4f1-cd91-441e-a820-498c6614126a).)
- [ ] If your PR is related to the `recipe` submodule, please also
update the reference to the submodule commit via `git submodule update
--remote` or `cd recipe && git pull origin main`.
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.

4 participants