Skip to content

chore: add qwen perf yaml#369

Open
tianmu-li wants to merge 3 commits into
mlcommons:mainfrom
tianmu-li:chore/add_qwen_perf_yaml
Open

chore: add qwen perf yaml#369
tianmu-li wants to merge 3 commits into
mlcommons:mainfrom
tianmu-li:chore/add_qwen_perf_yaml

Conversation

@tianmu-li

Copy link
Copy Markdown
Collaborator

What does this PR do?

Add performance run .yaml file for Qwen3.6-35B-A3B for agentic inference

Type of change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor/cleanup

Related issues

Testing

  • Tests added/updated
  • All tests pass locally
  • Manual testing completed

Checklist

  • Code follows project style
  • Pre-commit hooks pass
  • Documentation updated (if needed)

Signed-off-by: Li, Tianmu <tianmu.li@intel.com>
@tianmu-li
tianmu-li requested review from a team and Copilot June 22, 2026 18:18
@github-actions

Copy link
Copy Markdown

MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅

Signed-off-by: Li, Tianmu <tianmu.li@intel.com>

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

Copy link
Copy Markdown
Contributor

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 a new benchmark configuration file, qwen_agentic_benchmark.yaml, for Qwen agentic inference. The review feedback highlights missing configuration parameters required to comply with benchmark invariants, specifically recommending the addition of num_trajectories_to_issue and stop_issuing_on_first_user_complete under agentic_inference, as well as the settings.client configuration block.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +22 to +24
agentic_inference:
enable_salt: true # do not change.
inject_tool_delay: true # do not change.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

To ensure compliance with the benchmark invariants and to make the configuration complete, please explicitly specify num_trajectories_to_issue and stop_issuing_on_first_user_complete under agentic_inference.

    agentic_inference:
      enable_salt: true # do not change.
      inject_tool_delay: true # do not change.
      num_trajectories_to_issue: 990 # Should be integer multiple of dataset trajectory count.
      stop_issuing_on_first_user_complete: false # required benchmark default.

Comment on lines +31 to +33
load_pattern:
type: agentic_inference
target_concurrency: 8 # Submission-specific concurrency.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The settings.client configuration is missing. For official agentic benchmark runs, the client settings warmup_connections: 0 and max_idle_time: 0.5 are required invariants to ensure consistent and comparable performance results.

  load_pattern:
    type: agentic_inference
    target_concurrency: 8 # Submission-specific concurrency.

  client:
    warmup_connections: 0
    max_idle_time: 0.5

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds a runnable benchmark configuration YAML under examples/10_Agentic_Inference/ for running an online performance benchmark of Qwen/Qwen3.6-35B-A3B using the agentic inference load pattern.

Changes:

  • Add qwen_agentic_benchmark.yaml example config for agentic inference performance runs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +31 to +34
load_pattern:
type: agentic_inference
target_concurrency: 8 # Submission-specific concurrency.

Comment on lines +22 to +25
agentic_inference:
enable_salt: true # do not change.
inject_tool_delay: true # do not change.

@arekay-nv arekay-nv 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.

Review-council (Codex + Grok + Claude) — notes for the author

This is an example config and it validates cleanly against the schema, so nothing here blocks. The notes below are documentation in case you want to align it with the sibling kimi_agentic_benchmark.yaml in this directory — whose "do not change" / "required benchmark default" fields this config drops. Severities are medium at most given it's an example; all findings were verified against the schema defaults.

The two worth a look: adding the settings.client block (avoids automatic connection warmup) and setting a Qwen thinking-enable flag.


load_pattern:
type: agentic_inference
target_concurrency: 8 # Submission-specific concurrency.

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.

[medium] Consider adding a settings.client block (all three reviewers). The sibling kimi_agentic_benchmark.yaml pins warmup_connections: 0 / max_idle_time: 0.5. Without them this config uses the HTTPClientConfig defaults — warmup_connections: -1 (auto: pre-warms ~50% of the host's ephemeral-port budget → potentially thousands of connections to localhost:30000 before any request is issued) and max_idle_time: 4.0. For an agentic run that can mean a slow/failed startup or distorted endpoint load. Non-blocking for an example, but worth matching the sibling:

Suggested change
target_concurrency: 8 # Submission-specific concurrency.
target_concurrency: 8 # Submission-specific concurrency.
client:
warmup_connections: 0
max_idle_time: 0.5

repetition_penalty: 1.0
presence_penalty: 1.5
max_new_tokens: 8192
chat_template_kwargs:

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.

[medium] No Qwen thinking-enable flag (Grok + Claude). This sets preserve_thinking: true but no flag that enables thinking. The sibling (Kimi) uses thinking: true (Kimi-specific); Qwen3's chat template typically uses enable_thinking: true. Without an enable flag, thinking mode depends on the server/template default and may run non-thinking while still preserving reasoning blocks. Confirm the correct key for your served Qwen template and add it under chat_template_kwargs.

eval_method: agentic_inference_inline # required benchmark default.
agentic_inference:
enable_salt: true # do not change.
inject_tool_delay: true # do not change.

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.

[medium] num_trajectories_to_issue / stop_issuing_on_first_user_complete dropped (Grok + Claude). The sibling pins num_trajectories_to_issue: 990. Omitted, it defaults to Noneone pass over the dataset (len(base_convs)), so the issued workload becomes whatever the JSONL holds rather than the intended count. stop_issuing_on_first_user_complete defaults to false (same behavior — explicitness only). Consider matching the sibling:

Suggested change
inject_tool_delay: true # do not change.
inject_tool_delay: true # do not change.
num_trajectories_to_issue: 990 # Should be integer multiple of 990.
stop_issuing_on_first_user_complete: false

type: "online"

model_params:
name: "Qwen/Qwen3.6-35B-A3B"

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.

[low] Confirm the served model id. model_params.name becomes the OpenAI request model string and must match the endpoint's /v1/models id (the sibling uses the served name /model). Also double-check Qwen/Qwen3.6-35B-A3B itself — unusual vs the widely-known Qwen3-30B-A3B; confirm it's not a typo.

top_k: 20
top_p: 0.95
repetition_penalty: 1.0
presence_penalty: 1.5

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.

[low] presence_penalty: 1.5 is aggressive for a long multi-turn agentic/thinking workload — it can suppress token reuse that structured / tool-call turns rely on, and it diverges from the locked sibling baseline (temperature / top_p / max_new_tokens only). top_k: 20 is fine for Qwen; repetition_penalty: 1.0 is a no-op. Confirm these are intended.

settings:
runtime:
min_duration_ms: 0
max_duration_ms: 36000000

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.

[low] max_duration_ms: 36000000 (10h) adds a hard cap the sibling doesn't have (unset → unlimited). Agentic completion is trajectory/drain-driven; a hard cap can abort a long tail mid-drain and mark the run incomplete. Confirm it's intended and comfortably above the expected run length.

@arekay-nv arekay-nv 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.

Added some comments that can be addressed, but looks good overall for an example.

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.

3 participants