DeepSeek-V4-Pro / Pro6000D / Two-Node / SGLang TP16 Quick Map
This directory contains the short, repeatable performance-map suite for
DeepSeek-V4-Pro on two RTX PRO 6000 Blackwell nodes. It does not modify or call the existing
dsv4_pro6000_sglang_tp16/run_batch.sh.
Scope
The fixed suite covers nine points:
| Group | ISL | OSL | Concurrency |
|---|---|---|---|
| Prefill latency | 1K / 32K / 128K | 1 | 1 |
| Prefill throughput | 32K | 1 | 16 |
| Decode latency | 1K | 1K | 1 |
| Decode throughput | 1K | 1K | 16 / 32 / 64 |
| Balanced pressure | 32K | 1K | 8 |
The same main entry also runs a mixed-interference A/B:
- Run a finite 64-request
1K -> 1K, C=32decode control. - Run the same decode workload again.
- Wait for the background benchmark to enter its measured run, then inject one
128K -> 1, C=1prefill request. - Report the change in output TPS and P95 TPOT/TTFT.
This aggregate mixed test is sufficient for the first performance-map pass. Per-request time-series attribution belongs to the later scheduler/interference phase.
Files
| File | Purpose |
|---|---|
run_quick_map.sh |
The only Shell entry: service lifecycle, fixed map, mixed A/B, cleanup |
config.env |
Machine, model, SGLang and benchmark configuration |
quick_map_scenarios.tsv |
Nine fixed workload points |
quick_map_results.py |
Validate output and generate CSV/JSONL/Markdown summaries |
tests/test_quick_map_results.py |
Result parser regression tests |
Before using GPUs
The scripts default to ports 20002 and 30002, and use unique container
names. They never stop containers belonging to another experiment.
cd /data/hzy/sskj/experiments/pro6000/dsv4pro_pro6000d_2node_sglang_tp16_quick_map
bash -n run_quick_map.sh
python3 -m unittest discover -s tests -v
DRY_RUN=1 bash run_quick_map.sh all
The launcher refuses to start while either node has an active GPU compute
process. ALLOW_BUSY_GPU=1 exists only for deliberate operator override.
GPU run
Run the complete quick map in tmux after both nodes are free:
tmux new-session -d -s dsv4pro-pro6000d-2node-sglang-quick-map \
-c /data/hzy/sskj/experiments/pro6000/dsv4pro_pro6000d_2node_sglang_tp16_quick_map
tmux send-keys -t dsv4pro-pro6000d-2node-sglang-quick-map \
'bash run_quick_map.sh all' Enter
The default all action starts the two-node service, runs the fixed and mixed
suites, writes summaries, and then removes both service containers. The same
entry supports targeted operations when debugging:
bash run_quick_map.sh start
bash run_quick_map.sh fixed
bash run_quick_map.sh mixed
bash run_quick_map.sh stop
Outputs
results/<RUN_ID>/
run_manifest.json
run.log
summary.csv
summary.jsonl
aggregate.csv
report.md
cases/<case_id>/rep<N>/
bench_cmd.txt
bench.jsonl
bench.log
meta.json
server/
summary.csv is one row per repetition. aggregate.csv groups repetitions and
reports mean throughput plus coefficient of variation. Raw request arrays stay
inside ignored result directories and are not committed.
Runtime policy
- Quick default: one repetition and one measured request wave
(
num_prompts=C, including one request whenC=1). - Milestone: three repetitions.
- Short Prefill and Decode cases use one warm-up request. Expensive 32K/128K Prefill cases do not add a same-shape warm-up.
- Every isolated point calls SGLang benchmark with
--flush-cache; the benchmark performs its warm-up first and then clears the server Prefix Cache before measured requests. - No SLO-based early stop in the fixed map.
- A case failure is recorded; an unhealthy service aborts the run to avoid producing a cascade of meaningless failures.
- Benchmark and profiler results must not be mixed. This directory does not enable a profiler.
Hardware validation is recorded in the implementation report linked from the repository's optimization plan.