Skip to content

Commit a798424

Browse files
s0lCodex
andcommitted
docs: describe TP3 validation methodology
Co-authored-by: Codex <codex@local> Signed-off-by: s0l <thetrues0l@gmail.com>
1 parent b2b4762 commit a798424

1 file changed

Lines changed: 59 additions & 2 deletions

File tree

docs/design/qwen36_tp3_dcp_research.md

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,59 @@ Research items:
403403
4. Revisit native FP4 MoE only when SM120/SM12x correctness and performance
404404
issues are resolved upstream.
405405

406+
## Testing Methodology
407+
408+
The local validation is not just "the server started." It combines vLLM-style
409+
benchmarking ideas with end-to-end agent workload checks.
410+
411+
Relevant vLLM methodology:
412+
413+
- unit tests for sharding/math invariants where the behavior is deterministic;
414+
- `vllm bench serve` for online server throughput/latency, including custom
415+
datasets and OpenAI-compatible request paths;
416+
- `vllm bench throughput` for offline throughput isolation;
417+
- `vllm bench latency` for lower-level latency measurements;
418+
- benchmark sweeps to compare serve parameters while keeping server settings
419+
controlled and resetting caches between runs;
420+
- SPEED-Bench-style speculative decoding measurement for acceptance rate,
421+
acceptance length, and throughput across prompt-length buckets;
422+
- production-oriented benchmarking with realistic request rate and concurrency,
423+
not only a single synthetic prompt.
424+
425+
For this hardware research, the most important follow-up benchmark shape is:
426+
427+
- no-MTP vs MTP vs DFlash/external drafter;
428+
- 10-20 warmed sequential requests at fixed 256/512 generated tokens;
429+
- concurrency 4 and 8 for aggregate throughput;
430+
- long-prefill smoke at 128K-150K;
431+
- separate text, vision, and agent-tool workloads;
432+
- record TTFT, TPOT/decode throughput, output throughput, acceptance rate, and
433+
peak/free GPU memory.
434+
435+
The local agent harness adds an end-to-end workload layer that plain vLLM
436+
benchmarks do not cover. It runs real agent CLIs (`qwen`, `codex`, `claude`,
437+
`hermes`, and optionally `opencode`) inside containers configured to use only
438+
the local vLLM endpoint (`host.docker.internal:8902`) with dummy API keys. The
439+
summary files record:
440+
441+
- whether container internet was available;
442+
- whether the local model endpoint was available;
443+
- whether each agent passed its task;
444+
- whether internet was used;
445+
- whether the local model was used.
446+
447+
The agent task is intentionally closer to a real coding-agent loop than a raw
448+
completion benchmark: the agent must interact with a workspace and complete a
449+
small edit/test-style task. This catches failures that a one-shot chat request
450+
does not reveal, including server disconnects, request-path incompatibilities,
451+
tool-call/rendering issues, long prompt handling, and memory instability under
452+
multiple independent clients.
453+
454+
These agent tests are not a replacement for upstream unit tests or vLLM
455+
benchmarks. They are a hardware/workload acceptance gate: a serving profile is
456+
not considered stable for this project unless it can survive both synthetic
457+
long-context tests and agent-style traffic.
458+
406459
## Intercommunication Research Direction
407460

408461
Current stable communication mode is PyNCCL:
@@ -527,6 +580,10 @@ Dense 27B:
527580
- 10-20 warmed sequential requests;
528581
- 256 and 512 generated tokens;
529582
- then concurrency 4 and 8.
530-
6. Build and pin FlashInfer autotune caches separately from production startup.
531-
7. Keep PyNCCL as the stable interconnect baseline until a measured custom path
583+
6. Add vLLM benchmark artifacts for the promoted profiles:
584+
- `vllm bench serve` or GuideLLM for online throughput/latency;
585+
- SPEED-Bench-style speculative decoding metrics for MTP/DFlash;
586+
- agent harness summaries for real coding-agent traffic.
587+
7. Build and pin FlashInfer autotune caches separately from production startup.
588+
8. Keep PyNCCL as the stable interconnect baseline until a measured custom path
532589
beats it without long-context instability.

0 commit comments

Comments
 (0)