Skip to content

Commit e233589

Browse files
authored
feat(agentx): add 5-minute warmup and 20-minute profiling preset / feat(agentx):新增 5 分钟预热与 20 分钟性能采集预设 (#2388)
* feat(agentx): add fast feedback timing preset Add an e2e AgentX fast-mode switch that uses a five-minute cache warmup and twenty-minute profile without changing AIPerf. Preserve the canonical one-hour profile and existing warmup override outside fast mode. 中文:新增 AgentX 端到端快速模式开关,采用 5 分钟缓存预热和 20 分钟性能采集,无需修改 AIPerf。快速模式之外继续保留标准的 1 小时性能采集以及现有预热时长覆盖能力。 * docs(agentx): document fast preflight dispatch Document the agentx-fast e2e input, timing preset, duration precedence, and the requirement to return to canonical timing for official sweeps. 中文:记录 agentx-fast 端到端输入、时长预设、duration 优先级,以及正式扫描必须恢复标准时长的要求。
1 parent 2c22d8a commit e233589

5 files changed

Lines changed: 42 additions & 6 deletions

File tree

.github/workflows/benchmark-multinode-tmpl.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,11 @@ on:
154154
type: string
155155
required: false
156156
default: "3600"
157+
agentx-fast:
158+
description: "Use the AgentX 5-minute warmup and 20-minute profiling preset"
159+
type: boolean
160+
required: false
161+
default: false
157162
kv-offloading:
158163
description: "KV offload mode for agentic scenarios (none/dram)"
159164
required: false
@@ -214,6 +219,7 @@ env:
214219
IS_AGENTIC: ${{ inputs.scenario-type == 'agentic-coding' && '1' || '0' }}
215220
CONC: ${{ inputs.conc }}
216221
DURATION: ${{ inputs.duration }}
222+
AIPERF_EXPERIMENTAL_FAST: ${{ inputs.agentx-fast && '1' || '0' }}
217223
KV_OFFLOADING: ${{ inputs.kv-offloading }}
218224
KV_OFFLOAD_BACKEND: ${{ inputs.kv-offload-backend }}
219225
KV_OFFLOAD_BACKEND_METADATA: ${{ inputs.kv-offload-backend-metadata }}

.github/workflows/benchmark-tmpl.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ on:
129129
required: false
130130
type: string
131131
default: '3600'
132+
agentx-fast:
133+
description: "Use the AgentX 5-minute warmup and 20-minute profiling preset"
134+
required: false
135+
type: boolean
136+
default: false
132137
eval-limit:
133138
description: "Eval instance count: empty/full = whole split (default); N = first-N smoke slice"
134139
required: false
@@ -174,6 +179,7 @@ env:
174179
KV_P2P_TRANSFER: ${{ inputs.kv-p2p-transfer }}
175180
TOTAL_CPU_DRAM_GB: ${{ inputs.total-cpu-dram-gb }}
176181
DURATION: ${{ inputs.duration }}
182+
AIPERF_EXPERIMENTAL_FAST: ${{ inputs.agentx-fast && '1' || '0' }}
177183
EVAL_LIMIT: ${{ inputs.eval-limit }}
178184
SWEBENCH_GEN_MODE: ${{ inputs.swebench-gen-mode }}
179185
AIPERF_FAILED_REQUEST_THRESHOLD: '0.10'

.github/workflows/e2e-tests.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ on:
2121
required: false
2222
type: string
2323
default: ""
24+
agentx-fast:
25+
description: "AgentX fast feedback: 5-minute cache warmup and 20-minute profile."
26+
required: false
27+
type: boolean
28+
default: false
2429
eval-limit:
2530
description: "Eval instance count: empty/full = whole split (default); N = first-N smoke slice"
2631
required: false
@@ -50,6 +55,11 @@ on:
5055
required: false
5156
type: string
5257
default: ""
58+
agentx-fast:
59+
description: "AgentX fast feedback: 5-minute cache warmup and 20-minute profile."
60+
required: false
61+
type: boolean
62+
default: false
5363
eval-limit:
5464
description: "Eval instance count: empty/full = whole split (default); N = first-N smoke slice"
5565
required: false
@@ -264,7 +274,8 @@ jobs:
264274
kv-offload-backend: ${{ matrix.config['kv-offload-backend'].name }}
265275
kv-offload-backend-metadata: ${{ matrix.config['kv-offload-backend'] && toJson(matrix.config['kv-offload-backend']) || '' }}
266276
total-cpu-dram-gb: ${{ matrix.config.total-cpu-dram-gb }}
267-
duration: ${{ inputs.duration-override != '' && inputs.duration-override || matrix.config.duration }}
277+
duration: ${{ inputs.agentx-fast && '1200' || (inputs.duration-override != '' && inputs.duration-override || matrix.config.duration) }}
278+
agentx-fast: ${{ inputs.agentx-fast }}
268279
isl: '0'
269280
osl: '0'
270281
max-model-len: '0'
@@ -301,7 +312,8 @@ jobs:
301312
kv-offloading: ${{ matrix.config.kv-offloading }}
302313
kv-offload-backend: ${{ matrix.config.kv-offload-backend }}
303314
total-cpu-dram-gb: ${{ matrix.config.total-cpu-dram-gb }}
304-
duration: ${{ inputs.duration-override != '' && inputs.duration-override || matrix.config.duration }}
315+
duration: ${{ inputs.agentx-fast && '1200' || (inputs.duration-override != '' && inputs.duration-override || matrix.config.duration) }}
316+
agentx-fast: ${{ inputs.agentx-fast }}
305317
isl: '0'
306318
osl: '0'
307319
max-model-len: '0'
@@ -364,7 +376,8 @@ jobs:
364376
kv-offloading: ${{ matrix.config.kv-offloading }}
365377
kv-offload-backend: ${{ matrix.config['kv-offload-backend'].name }}
366378
kv-offload-backend-metadata: ${{ matrix.config['kv-offload-backend'] && toJson(matrix.config['kv-offload-backend']) || '' }}
367-
duration: ${{ inputs.duration-override != '' && inputs.duration-override || matrix.config.duration }}
379+
duration: ${{ inputs.agentx-fast && '1200' || (inputs.duration-override != '' && inputs.duration-override || matrix.config.duration) }}
380+
agentx-fast: ${{ inputs.agentx-fast }}
368381
run-eval: false
369382
scenario-type: agentic-coding
370383
ref: ${{ inputs.ref }}

AGENTS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ gh api -X POST \
119119

120120
Inputs: top-level `ref` (required) is the workflow ref to dispatch from, almost always `main`. `inputs[ref]` is the repo ref under test (defaults to the dispatch ref's `github.sha`). `inputs[generate-cli-command]` (required) is passed verbatim to `generate_sweep_configs.py` - test locally first. `inputs[test-name]` is the display name in the Actions UI. `inputs[duration-override]` overrides per-config duration (seconds); empty = use matrix value.
121121

122+
For an AgentX preflight, add `-F 'inputs[agentx-fast]=true'` to the dispatch command. This selects a 5-minute cache warmup and 20-minute profile for every AgentX job in that e2e dispatch and takes precedence over `duration-override`. Use it to get faster signal while debugging, then run the official sweep without `agentx-fast`; canonical AgentX timing remains a 10-minute cache warmup and 1-hour profile.
123+
122124
The POST returns no body and no run ID - find the run with `gh run list` below.
123125

124126
### Monitoring jobs

benchmarks/benchmark_lib.sh

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1744,6 +1744,15 @@ build_replay_cmd() {
17441744
# utils/aiperf/docs/tutorials/agentx-mvp.md.
17451745
local result_dir="$1"
17461746
local duration="$DURATION"
1747+
local cache_warmup_duration="${AIPERF_AGENTIC_CACHE_WARMUP_DURATION:-600}"
1748+
1749+
# Fast mode is an e2e-only feedback preset used before canonical one-hour
1750+
# sweeps. AIPerf already exposes both controls, so no AIPerf patch is
1751+
# required.
1752+
if [[ "${AIPERF_EXPERIMENTAL_FAST:-0}" == "1" ]]; then
1753+
duration=1200
1754+
cache_warmup_duration=300
1755+
fi
17471756

17481757
export AIPERF_DATASET_WEKA_LIVE_ASSISTANT_RESPONSES="${AIPERF_DATASET_WEKA_LIVE_ASSISTANT_RESPONSES:-0}"
17491758
# Dataset configuration (load + reconstruct + inputs.json + mmap)
@@ -1776,9 +1785,9 @@ build_replay_cmd() {
17761785
REPLAY_CMD+=" --trajectory-start-min-ratio 0.25"
17771786
REPLAY_CMD+=" --trajectory-start-max-ratio 0.75"
17781787
# After the normal t* snapshot warmup, continue those exact trajectories
1779-
# with one-token outputs and no idle delays for 10 minutes. Profiling begins
1780-
# only after those requests drain and resumes from the resulting live state.
1781-
REPLAY_CMD+=" --agentic-cache-warmup-duration 600"
1788+
# with one-token outputs and no idle delays. Profiling begins only after
1789+
# those requests drain and resumes from the resulting live state.
1790+
REPLAY_CMD+=" --agentic-cache-warmup-duration $cache_warmup_duration"
17821791
# Give long-context warmup requests up to 30 minutes to drain before
17831792
# declaring warmup failed. Recipes whose saturation arms carry a larger
17841793
# in-flight working set may override via AGENTIC_WARMUP_GRACE_PERIOD

0 commit comments

Comments
 (0)