Skip to content

Build ProfileArgs in BenchmarkGenerativeTextArgs - #774

Merged
mergify[bot] merged 5 commits into
vllm-project:mainfrom
dbutenhof:refactor/redata
Jun 9, 2026
Merged

Build ProfileArgs in BenchmarkGenerativeTextArgs#774
mergify[bot] merged 5 commits into
vllm-project:mainfrom
dbutenhof:refactor/redata

Conversation

@dbutenhof

@dbutenhof dbutenhof commented Jun 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Let BenchmarkGenerativeTextArgs build the ProfileArgs embedded object.

Details

This is a refactoring that follows up on a discussion during review of #753.

The key was to shuffle data/data_samples from ReplayProfileArgs to ReplayProfile so that we can rely on a built loader by the time we need it. Now we can fully build ProfileArgs up front.

Test Plan

Ensure proper parsing of profile parameters, particularly,

  • merging of global rate & rampup into ProfileArgs dict
  • proper handling of global --rate with aliased ProfileArgs parameters

E.g.:

  • uv run guidellm benchmark --target http:// --max-seconds 10 --profile kind=replay,time_scale=0.3 --data kind=trace_synthetic,path=${HOME}/replay.jsonl --rate 5
  • uv run guidellm benchmark --target http:// --max-seconds 10 --data "kind=synthetic_text,prompt_tokens=256,output_tokens=128" --rate 5 --profile kind=async

Related Issues

N/A


  • "I certify that all code in this PR is my own, except as noted below."

Use of AI

  • Includes code generated or substantially modified by an AI agent
  • Includes tests generated or substantially modified by an AI agent

NOTE: the Generated-by or Assisted-by trailers should be used in git commit messages when code or tests were generated or substantially modified by an AI agent, as described in the project's DEVELOPING.md file.


git log

commit 3e27713
Author: David Butenhof dbutenho@redhat.com
Date: Fri Jun 5 02:03:41 2026 -0400

Build ProfileArgs in BenchmarkGenerativeTextArgs

This follows up on a discussion in #753.

Shuffle data/data_samples from ReplayProfileArgs to ReplayProfile so that we
can rely on built loader. Now we can fully build ProfileArgs up front.

Assisted-by: Cursor
Signed-off-by: David Butenhof <dbutenho@redhat.com>

commit 66d9025
Author: David Butenhof dbutenho@redhat.com
Date: Fri Jun 5 15:04:53 2026 -0400

Pull random_seed back out of kwargs

Signed-off-by: David Butenhof <dbutenho@redhat.com>

commit c3cf2d0
Author: David Butenhof dbutenho@redhat.com
Date: Fri Jun 5 20:12:36 2026 -0400

Fix a typo

Signed-off-by: David Butenhof <dbutenho@redhat.com>

commit a11f2dd
Author: David Butenhof dbutenho@redhat.com
Date: Mon Jun 8 08:45:01 2026 -0400

Complain about duplicate rates

More consistent behavior than ignoring one.

Signed-off-by: David Butenhof <dbutenho@redhat.com>

commit f240157
Author: David Butenhof dbutenho@redhat.com
Date: Tue Jun 9 16:21:31 2026 -0400

Fix merge queue test breakage

(Yeah, that's why we *have* a merge queue!)

Signed-off-by: David Butenhof <dbutenho@redhat.com>

Assisted-by: Cursor
Signed-off-by: David Butenhof dbutenho@redhat.com

@dbutenhof dbutenhof self-assigned this Jun 5, 2026
@dbutenhof dbutenhof added internal filed by core contributor or associate cleanup Internal refactoring or improvement, including CI, that's not directly user-visible. labels Jun 5, 2026
sjmonson
sjmonson previously approved these changes Jun 5, 2026

@sjmonson sjmonson left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Small nit but not really blocking. Otherwise looks good.

Comment thread src/guidellm/benchmark/profiles/asynchronous.py Outdated
Comment thread src/guidellm/benchmark/profiles/throughput.py Outdated
profile=args.profile,
rate=args.rate,
random_seed=args.random_seed,
rampup=args.rampup,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Is the rampup field this was referencing still used anywhere?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

It's referenced in ProfileArgs. (Which, as Sam pointed out earlier, is really weird because it's a completely different path from warmup & cooldown, and shouldn't be -- but that's beyond the scope of this PR.) Anyway, it was needed because we built ProfileArgs here; but we no longer do.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It probably makes sense to create an issue then to note the odd design and retirement of that pathway.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Yeah, we'd talked about unifying the paths for all of these; an issue makes sense, but when I started to think about writing one I got hung up on details and didn't get far.

jaredoconnell
jaredoconnell previously approved these changes Jun 6, 2026
Comment thread src/guidellm/benchmark/profiles/concurrent.py Outdated
Comment thread src/guidellm/benchmark/profiles/replay.py Outdated
jaredoconnell
jaredoconnell previously approved these changes Jun 8, 2026
sjmonson
sjmonson previously approved these changes Jun 9, 2026
@mergify

mergify Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 2 minutes 46 seconds in the queue, with no time running CI.

Waiting for
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = quality (3.10) / type-checks
    • check-skipped = quality (3.10) / type-checks
    • check-success = quality (3.10) / type-checks
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = quality (3.10) / precommit-checks
    • check-skipped = quality (3.10) / precommit-checks
    • check-success = quality (3.10) / precommit-checks
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = tests (3.10) / e2e-tests
    • check-skipped = tests (3.10) / e2e-tests
    • check-success = tests (3.10) / e2e-tests
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = tests (3.10) / integration-tests
    • check-skipped = tests (3.10) / integration-tests
    • check-success = tests (3.10) / integration-tests
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = tests (3.10) / unit-tests
    • check-skipped = tests (3.10) / unit-tests
    • check-success = tests (3.10) / unit-tests
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = update-description
    • check-skipped = update-description
    • check-success = update-description
All conditions
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = quality (3.10) / type-checks
    • check-skipped = quality (3.10) / type-checks
    • check-success = quality (3.10) / type-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = quality (3.10) / precommit-checks
    • check-skipped = quality (3.10) / precommit-checks
    • check-success = quality (3.10) / precommit-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = tests (3.10) / e2e-tests
    • check-skipped = tests (3.10) / e2e-tests
    • check-success = tests (3.10) / e2e-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = tests (3.10) / integration-tests
    • check-skipped = tests (3.10) / integration-tests
    • check-success = tests (3.10) / integration-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = tests (3.10) / unit-tests
    • check-skipped = tests (3.10) / unit-tests
    • check-success = tests (3.10) / unit-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = update-description
    • check-skipped = update-description
    • check-success = update-description
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / quality-checks
    • check-neutral = quality (3.10) / quality-checks
    • check-skipped = quality (3.10) / quality-checks

Reason

Pull request #774 has been dequeued by a dequeue command

Hint

If you want to requeue this pull request, you can post a @mergifyio queue comment.

mergify Bot added a commit that referenced this pull request Jun 9, 2026
@mergify mergify Bot added the queued label Jun 9, 2026
@sjmonson

sjmonson commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

@Mergifyio dequeue

@mergify mergify Bot added dequeued and removed queued labels Jun 9, 2026
@sjmonson

sjmonson commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

^ @dbutenhof Sorry it auto queued since we have two approvals but I am not sure if you are done. Just requeue if you're ready.

@dbutenhof

Copy link
Copy Markdown
Collaborator Author

@Mergifyio queue

@mergify

mergify Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

This pull request spent 5 minutes 50 seconds in the queue, including 5 minutes 35 seconds running CI.

Waiting for
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = tests (3.10) / unit-tests
    • check-skipped = tests (3.10) / unit-tests
    • check-success = tests (3.10) / unit-tests
  • any of: [🛡 GitHub repository ruleset rule Merge Requirements]
    • check-neutral = update-description
    • check-skipped = update-description
    • check-success = update-description
All conditions
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = tests (3.10) / unit-tests
    • check-skipped = tests (3.10) / unit-tests
    • check-success = tests (3.10) / unit-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-neutral = update-description
    • check-skipped = update-description
    • check-success = update-description
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / type-checks
    • check-neutral = quality (3.10) / type-checks
    • check-skipped = quality (3.10) / type-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / precommit-checks
    • check-neutral = quality (3.10) / precommit-checks
    • check-skipped = quality (3.10) / precommit-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / quality-checks
    • check-neutral = quality (3.10) / quality-checks
    • check-skipped = quality (3.10) / quality-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = tests (3.10) / e2e-tests
    • check-neutral = tests (3.10) / e2e-tests
    • check-skipped = tests (3.10) / e2e-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = tests (3.10) / integration-tests
    • check-neutral = tests (3.10) / integration-tests
    • check-skipped = tests (3.10) / integration-tests

Reason

The merge conditions cannot be satisfied due to failing checks

Failing checks:

Hint

You may have to fix your CI before adding the pull request to the queue again.
If you update this pull request, to fix the CI, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

@mergify mergify Bot added the queued label Jun 9, 2026
mergify Bot added a commit that referenced this pull request Jun 9, 2026
dbutenhof added 5 commits June 9, 2026 16:07
This follows up on a discussion in vllm-project#753.

Shuffle data/data_samples from ReplayProfileArgs to ReplayProfile so that we
can rely on built loader. Now we can fully build ProfileArgs up front.

Assisted-by: Cursor
Signed-off-by: David Butenhof <dbutenho@redhat.com>
Signed-off-by: David Butenhof <dbutenho@redhat.com>
Signed-off-by: David Butenhof <dbutenho@redhat.com>
More consistent behavior than ignoring one.

Signed-off-by: David Butenhof <dbutenho@redhat.com>
(Yeah, that's why we *have* a merge queue!)

Signed-off-by: David Butenhof <dbutenho@redhat.com>
@dbutenhof
dbutenhof dismissed stale reviews from sjmonson and jaredoconnell via f240157 June 9, 2026 20:22
@mergify mergify Bot removed the dequeued label Jun 9, 2026
@dbutenhof

Copy link
Copy Markdown
Collaborator Author

@Mergifyio requeue

@mergify

mergify Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

🛑 Queue command has been cancelled

@mergify mergify Bot added the queued label Jun 9, 2026
@mergify

mergify Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • Entered queue2026-06-09 20:44 UTC · Rule: default
  • Checks skipped · PR is already up-to-date
  • Merged2026-06-09 20:44 UTC · at f240157a121895d7bfb3d085c6687244215d1eb4 · squash

This pull request spent 14 seconds in the queue, including 2 seconds running CI.

Required conditions to merge
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / type-checks
    • check-neutral = quality (3.10) / type-checks
    • check-skipped = quality (3.10) / type-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / precommit-checks
    • check-neutral = quality (3.10) / precommit-checks
    • check-skipped = quality (3.10) / precommit-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = quality (3.10) / quality-checks
    • check-neutral = quality (3.10) / quality-checks
    • check-skipped = quality (3.10) / quality-checks
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = tests (3.10) / e2e-tests
    • check-neutral = tests (3.10) / e2e-tests
    • check-skipped = tests (3.10) / e2e-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = tests (3.10) / integration-tests
    • check-neutral = tests (3.10) / integration-tests
    • check-skipped = tests (3.10) / integration-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = tests (3.10) / unit-tests
    • check-neutral = tests (3.10) / unit-tests
    • check-skipped = tests (3.10) / unit-tests
  • any of [🛡 GitHub repository ruleset rule Merge Requirements]:
    • check-success = update-description
    • check-neutral = update-description
    • check-skipped = update-description

@mergify
mergify Bot merged commit 501c0c6 into vllm-project:main Jun 9, 2026
12 checks passed
@mergify mergify Bot removed the queued label Jun 9, 2026
@dbutenhof
dbutenhof deleted the refactor/redata branch June 9, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cleanup Internal refactoring or improvement, including CI, that's not directly user-visible. internal filed by core contributor or associate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants