61 Commits

Author SHA1 Message Date
yy-fighting
90d1738605 Merge branch 'main' of https://gitee.com/yy-fighting/sskj 2026-07-09 15:24:08 +00:00
yy-fighting
31731ebb75 dsv4_h200_vllm_tp_dp_matrix: export CONCURRENCY_SAMPLES so generate_scenarios.py sees it 2026-07-09 15:23:57 +00:00
Root User
8d61e682cd add dsv4_h200_sglang_tp_dp_matrix experiment (Docker-based SGLang TP×DP matrix) 2026-07-09 14:49:31 +00:00
yy-fighting
0ae1ea0a9f dsv4_h200_vllm_tp_dp_matrix: fix output naming, parser/compat, add Docker startup option 2026-07-09 12:33:52 +00:00
yy-fighting
0aee540c67 dsv4_h200_vllm_tp_dp_matrix: single server per config, OOM/restart handling, DRY_RUN/GRID_LIMIT, include 1M 2026-07-09 10:50:59 +00:00
yy-fighting
329d4c3975 dsv4_h200_vllm_tp_dp_matrix: use vLLM internal DP LB, drop proxy/supervisor 2026-07-09 10:28:50 +00:00
yy-fighting
59dbadb110 add dp_proxy for vLLM DP, write kv_cache_analysis.md, fix DP bench port 2026-07-09 10:19:30 +00:00
yy-fighting
5898d578ed dsv4_h200_vllm_tp_dp_matrix: allow MATRIX_FILE env override 2026-07-09 10:02:45 +00:00
yy-fighting
39326eaf4a remove partial smoke test artifacts from killed run 2026-07-09 10:02:03 +00:00
yy-fighting
15b5489535 dsv4_h200_vllm_tp_dp_matrix: use minimal official vLLM args, no EP, Y-only, exclude 1M 2026-07-09 10:01:51 +00:00
yy-fighting
04a384b265 add dsv4_h200_vllm_tp_dp_matrix experiment (TP×DP matrix with Y-only mode, 1M excluded) 2026-07-09 09:55:18 +00:00
yy-fighting
1482601ae5 Add num_prompts = 5×concurrency convention and update all experiments
- Document the rule in docs/EXPERIMENT_GUIDE.md section 7
- Update all config.env SCENARIOS to follow the 5x rule
- Migrate dsv4_h200_sglang, dsv4_h200_vllm, dsv4_p800_sglang
  from global NUM_PROMPTS to per-scenario num_prompts
- Keep long-context phase2 as exception (low counts documented)
- Add legacy 3-field fallback in run_bench.sh loops
2026-07-09 09:26:41 +00:00
Quantong Qiu
a1da95ef44 Scale P800 long-context matrix to concurrency=1 for stability
- P800 INT8 cannot sustain >1 concurrent long-context request without OOM;
  set all scenarios to concurrency=1.
- Keep max_running=2 because max_running=1 triggers req_to_token_pool
  allocation failures in this image.
- Reduce 64k max_context_len to 72000 (65536 + 4096 + pad).
- Make run_bench.sh resilient to container death: detect dead container and
  skip remaining scenarios in the group instead of crashing the orchestrator.
- Update README to document the concurrency limitation.
2026-07-09 05:59:28 +00:00
Quantong Qiu
46e05a57a4 Re-enable chunked prefill for P800 long-context matrix stability
Without chunked prefill the server OOM/crashes (exit 137) during or
immediately after concurrent 64k-context scenarios. Speculative decoding
remains disabled as requested.
2026-07-09 05:13:04 +00:00
Quantong Qiu
59f480b1bc Disable chunked prefill and speculative decoding in P800 long-context matrix 2026-07-09 04:47:59 +00:00
Quantong Qiu
90eecc4ede Add P800 long-context matrix experiment (64k/128k) for DeepSeek-V4-Flash-INT8
- New experiment: experiments/dsv4_p800_long_context_matrix/
- Single backend: sglang-xpu in Docker on Kunlun P800
- Context groups: 64k (max_context_len=80000, max_running=10) and
  128k (max_context_len=140000, max_running=5)
- Scenarios: concurrency sweeps x output lengths 256/1024/4096
- Parameterized start_sglang.sh enforces max_running >= 2 to avoid
  P800 INT8 req_to_token_pool allocation failures
- Reuses proven P800 INT8 environment, NSA/EAGLE settings, and
  bench_serving invocations from dsv4_p800_max_context_length
2026-07-09 04:45:04 +00:00
Quantong Qiu
b1b5f50f56 results(p800): max context length exploration run 20260709-033134
P800 SGLang INT8 max supported input length: 131072 tokens.
262144 tokens fails during warmup (server connection lost, likely OOM).
2026-07-09 04:08:40 +00:00
Quantong Qiu
06549d8faf cleanup(p800): remove local debugging artifacts from dsv4_p800_sglang/results
These were failed/intermediate smoke-test runs created while debugging the
managed server startup. Keep the repository clean; new runs can be reproduced
with experiments/dsv4_p800_sglang/run_bench.sh.
2026-07-09 03:30:58 +00:00
Quantong Qiu
3694614dd9 feat(p800): add max context length exploration experiment
Add experiments/dsv4_p800_max_context_length/ to find the longest input
context that P800 SGLang INT8 can serve for DeepSeek-V4-Flash-INT8.

- Docker-based server start with dynamic --context-length.
- Single-request, single-output-token probes for each candidate length.
- Records success/failure, server args, and metrics per length.
- Generates results.json and report.md summarizing the max supported length.
- Smoke-tested at 4096 tokens successfully.
2026-07-09 03:30:09 +00:00
Quantong Qiu
8324d944f2 fix(p800): define RUN_ID/RESULT_ROOT/LOG_DIR in start_server.sh
start_server.sh referenced LOG_DIR and RESULT_ROOT without defining them,
causing an unbound-variable failure under set -u. Mirror the initialization
from run_bench.sh so the script can run standalone.
2026-07-09 02:53:38 +00:00
yy-fighting
7e614fb702 Add DSpark backend to long-context matrix experiment
- Add start_dspark.sh with --spec-method dspark --spec-tokens 5
- Add BACKENDS env var to run only selected backends
- Fix client/backend mapping for DSpark (bench client uses vllm, parser uses vllm)
- Add three-way compare.py for sglang/vllm/dspark
- Reuse existing sglang/vllm results from 20260708-100016
- Add DSpark long-context results and comparison
2026-07-09 02:36:57 +00:00
yy-fighting
278653b6a6 Add three-way comparison: MTP vs DSpark vs default 2026-07-09 01:42:46 +00:00
yy-fighting
7d2ed7f05d Add vLLM+MTP speculative decoding benchmark vs default on H200
- Experiment: experiments/dsv4_h200_vllm_mtp_vs_default/
- Use official DeepSeek-V4 recipe: --speculative-config '{method: mtp, num_speculative_tokens: 1}'
- Reuse default-side results from dsv4_h200_vllm_dspark_vs_default
- Add TTFT analysis for DSpark vs default trade-offs
2026-07-08 16:13:01 +00:00
yy-fighting
a56c995091 results(max-context): complete H200 max context length exploration run 20260708-143534 2026-07-08 15:33:48 +00:00
yy-fighting
cd0b083a10 results(vllm-dspark-vs-default): complete TTFT comparison run 20260708-142121 2026-07-08 14:35:14 +00:00
yy-fighting
27ceaac47f results(long-context-matrix): complete 64k/128k/256k matrix run 20260708-100016; use common scripts 2026-07-08 11:21:15 +00:00
yy-fighting
9b135aa4ff revert: remove intermediate matrix results committed by mistake (again) 2026-07-08 11:06:54 +00:00
yy-fighting
80959cf765 docs: move SLO_STANDARDS.md from scripts/ to docs/; update references 2026-07-08 11:06:49 +00:00
yy-fighting
ccf65e745b revert: remove intermediate matrix results committed by mistake 2026-07-08 11:04:23 +00:00
yy-fighting
9b485c05f7 cleanup(scripts): remove unused legacy scripts; update README and workflow docs 2026-07-08 11:04:16 +00:00
yy-fighting
f51697aed6 refactor(common): remove duplicated parse/compare/warmup from existing experiments 2026-07-08 10:49:27 +00:00
yy-fighting
a127cf7ef0 refactor(common): centralize parse/compare/warmup; add TEMPLATE and EXPERIMENT_GUIDE 2026-07-08 10:48:43 +00:00
yy-fighting
868ebc6cdf feat(long-context-matrix): add SGLang vs vLLM long-context matrix experiment 2026-07-08 10:09:32 +00:00
yy-fighting
cd2ba29d49 feat(256k-4k-probe): verify SGLang/vLLM can serve 256k+4k without OOM 2026-07-08 09:59:05 +00:00
yy-fighting
0f9399baf6 feat(64k): add SGLang vs vLLM 64k-context comparison and results run 20260708-092556 2026-07-08 09:44:13 +00:00
yy-fighting
ee954d7409 fix(sglang-vs-vllm): use jq for metadata update; add results run 20260708-083346 2026-07-08 09:21:49 +00:00
yy-fighting
5eb605b7a2 feat: support resuming interrupted SGLang vs vLLM runs
- run_bench.sh: skip scenarios whose raw jsonl already exists and has expected completed count
- parse_backend.py: replace scenarios list instead of appending, so resume+reparse stays clean
- README.md: document RUN_ID-based resume
2026-07-08 08:42:21 +00:00
yy-fighting
fd0474099a chore: do not commit partial SGLang vs vLLM results while run is in progress 2026-07-08 08:36:13 +00:00
yy-fighting
19d336de08 feat: add max context length exploration experiment
- New experiments/dsv4_h200_max_context_length/
- start_sglang.sh / start_vllm.sh accept target length as argument
- run_bench.sh tests a ladder of input lengths (default 64k -> 1M)
  with --random-range-ratio 1.0 for exact length
- extract_metrics.py + parse_results.py produce results.json + report.md
- README.md documents usage and control variables
- Root README updated with entry and quick command
2026-07-08 08:35:56 +00:00
yy-fighting
b12039599d chore: remove partial SGLang vs vLLM run that failed mid-way 2026-07-08 08:33:37 +00:00
yy-fighting
0bb8adf2d9 feat: add SLO status field to per-backend reports and results.json
- parse_backend.py for sglang_vs_vllm and dspark_vs_default:
  - compute slo_status per scenario (TTFT P95 < 3000ms, TPOT mean < 50ms)
  - append slo_status to results.json
  - add SLO column to report.md
- BENCHMARK_WORKFLOW.md documents slo_status in schema and checklist
2026-07-08 08:28:37 +00:00
yy-fighting
b5b636236d docs: require server launch args to be recorded in results.json
- Add rule 9: exact server command/args must be saved in config.server_args
- Update Final JSON Schema example to include server_args
- Update checklist and new-experiment instructions
2026-07-08 08:22:33 +00:00
yy-fighting
162168da3c feat: record exact server launch args in results.json for reproducibility
- sglang_vs_vllm/run_bench.sh: add phase1/phase2 server_args per backend
- dspark_vs_default/run_bench.sh: add server_args for dspark/default
- READMEs document where to find the recorded server args
2026-07-08 08:21:55 +00:00
yy-fighting
69756c598c fix: ignore nested backend raw_outputs/logs and remove accidentally committed intermediate files
- Update .gitignore to handle results/<run_id>/<backend>/raw_outputs/ structure
- Remove in-progress SGLang vs vLLM raw jsonl and partial results from git index
2026-07-08 08:15:39 +00:00
yy-fighting
5d1cd9c266 feat: add vLLM+DSpark vs vLLM-default TTFT comparison experiment
- New experiments/dsv4_h200_vllm_dspark_vs_default/
- start_dspark.sh: vllm serve with --spec-method dspark --spec-tokens 5
- start_default.sh: plain vllm serve baseline
- Unified scenario matrix (512/4000 input, 1/32/128 concurrency)
- parse_backend.py + compare.py focused on TTFT differences
- README.md + root README entries
2026-07-08 08:15:02 +00:00
yy-fighting
3cf8b8f0d7 fix: use --context-length instead of --max-model-len for SGLang server 2026-07-08 07:57:15 +00:00
yy-fighting
06b3398ad0 feat: add ShareGPT dataset scenarios to SGLang vs vLLM comparison
- config.env: add SHAREGPT_DATASET, SHAREGPT_CONTEXT_LEN and SHAREGPT_SCENARIOS
- run_bench.sh: add run_sharegpt() and integrate it after Phase 1 for each backend
- parse_backend.py: support both phase{1|2} and sharegpt raw output filenames
- README.md: document ShareGPT scenarios
2026-07-08 07:42:05 +00:00
yy-fighting
e6d9e99b6f feat: add SGLang vs vLLM controlled comparison experiment
- New experiments/dsv4_h200_sglang_vs_vllm/ with TP=8 on all 8 H200 cards
- Phase1 short-context throughput + Phase2 long context up to 200k
- Unified scenario matrix, warmup, parsing, and side-by-side comparison report
- H200 SGLang vs vLLM entry added to root README
2026-07-08 07:34:34 +00:00
yy-fighting
8b82f700e4 feat: add H200 SGLang baseline experiment and fix health check
- Add experiments/dsv4_h200_sglang (config, server start, orchestrator, parser, README)
- Fix start_server.sh to wait for HTTP 200 via curl --fail instead of treating 503 as ready
- Add H200 SGLang baseline to root README and update .gitignore for per-run raw_outputs/logs
- Remove stale experiments/dsv4_h200_dspark/DSPARK_FIX_PR_PREP.md
2026-07-08 06:56:45 +00:00
Quantong Qiu
20d04a31ae refactor: move final legacy result dspark_grid into experiments/legacy_bench_results/
- Move bench_results/dspark_grid_20260707-132641/ to experiments/legacy_bench_results/
- Remove empty bench_results/ directory
- Update README.md, BENCHMARK_WORKFLOW.md, legacy README, and parse_results.py default path
- Update internal report/evaluation paths
2026-07-08 06:40:39 +00:00