From 37c082a05bb47f85c8f5aa1fcd50f4a2c8cba3f6 Mon Sep 17 00:00:00 2001 From: Florian Leibert Date: Tue, 21 Apr 2026 10:04:43 +0000 Subject: [PATCH] Upload folder using huggingface_hub --- Dockerfile.kimi26-dflash | 29 + README.md | 314 +++++++++ assets/acceptance-comparison.png | Bin 0 -> 89236 bytes assets/generate_charts.py | 257 +++++++ assets/hardware-stack.png | Bin 0 -> 68718 bytes assets/latency-flat.png | Bin 0 -> 88311 bytes assets/optimization-journey.png | Bin 0 -> 80697 bytes assets/throughput-scaling.png | Bin 0 -> 94058 bytes benchmarks/CLEAN-dflash-st2-c12.json | 262 +++++++ benchmarks/CLEAN-dflash-st2-c8.json | 182 +++++ benchmarks/CLEAN-dflash-st2-s16-c12.json | 262 +++++++ benchmarks/CLEAN-dflash-st2-s16-c16.json | 342 +++++++++ benchmarks/CLEAN-dflash-st2-s16-c8.json | 182 +++++ benchmarks/CLEAN-dflash-st2-s24-c16.json | 342 +++++++++ benchmarks/CLEAN-dflash-st2-s24-c20.json | 422 +++++++++++ benchmarks/CLEAN-dflash-st2-s24-c24.json | 502 +++++++++++++ benchmarks/CLEAN-dflash-st2-s32-c24.json | 502 +++++++++++++ benchmarks/CLEAN-dflash-st2-s32-c32.json | 662 ++++++++++++++++++ build-kimi26-dflash.sh | 22 + configs/production.env | 47 ++ .../kimi-k2.6-250-toks-achieved-2026-04-21.md | 94 +++ ...2.6-acceptance-rate-analysis-2026-04-21.md | 89 +++ ....6-dflash-execution-playbook-2026-04-21.md | 428 +++++++++++ launchers/kimi26-vllm-dflash-sweep.sh | 120 ++++ launchers/kimi26-vllm-dflash.sh | 86 +++ patches/patch_dflash_rocm.py | 380 ++++++++++ payload/benchmark_multi_turn.py | 213 ++++++ payload/preshard_kimi26.py | 102 +++ serve.sh | 88 +++ 29 files changed, 5929 insertions(+) create mode 100644 Dockerfile.kimi26-dflash create mode 100644 README.md create mode 100644 assets/acceptance-comparison.png create mode 100644 assets/generate_charts.py create mode 100644 assets/hardware-stack.png create mode 100644 assets/latency-flat.png create mode 100644 assets/optimization-journey.png create mode 100644 assets/throughput-scaling.png create mode 100644 benchmarks/CLEAN-dflash-st2-c12.json create mode 100644 benchmarks/CLEAN-dflash-st2-c8.json create mode 100644 benchmarks/CLEAN-dflash-st2-s16-c12.json create mode 100644 benchmarks/CLEAN-dflash-st2-s16-c16.json create mode 100644 benchmarks/CLEAN-dflash-st2-s16-c8.json create mode 100644 benchmarks/CLEAN-dflash-st2-s24-c16.json create mode 100644 benchmarks/CLEAN-dflash-st2-s24-c20.json create mode 100644 benchmarks/CLEAN-dflash-st2-s24-c24.json create mode 100644 benchmarks/CLEAN-dflash-st2-s32-c24.json create mode 100644 benchmarks/CLEAN-dflash-st2-s32-c32.json create mode 100644 build-kimi26-dflash.sh create mode 100644 configs/production.env create mode 100644 docs/kimi-k2.6-250-toks-achieved-2026-04-21.md create mode 100644 docs/kimi-k2.6-acceptance-rate-analysis-2026-04-21.md create mode 100644 docs/kimi-k2.6-dflash-execution-playbook-2026-04-21.md create mode 100644 launchers/kimi26-vllm-dflash-sweep.sh create mode 100644 launchers/kimi26-vllm-dflash.sh create mode 100644 patches/patch_dflash_rocm.py create mode 100644 payload/benchmark_multi_turn.py create mode 100644 payload/preshard_kimi26.py create mode 100644 serve.sh diff --git a/Dockerfile.kimi26-dflash b/Dockerfile.kimi26-dflash new file mode 100644 index 0000000..6f4cef9 --- /dev/null +++ b/Dockerfile.kimi26-dflash @@ -0,0 +1,29 @@ +# Kimi K2.6 DFlash source-patched image for 8x MI300X (gfx942) +# +# Base: vllm/vllm-openai-rocm:nightly +# When a date-pinned tag becomes available (e.g. :2026-04-21), switch to it +# and record the vLLM version (v0.19.2rc1.dev21 at time of writing). +# +# This image bakes the DFlash ROCm patches at build time so the launcher +# no longer needs to run patch_dflash_rocm.py at container startup. +# The patches are idempotent — running the script again inside this image +# is a safe no-op. + +FROM vllm/vllm-openai-rocm:nightly + +# --- ROCm / AITER / vLLM environment defaults for gfx942 --- +ENV PYTORCH_ROCM_ARCH=gfx942 \ + AITER_ROCM_ARCH=gfx942 \ + GPU_ARCHS=gfx942 \ + VLLM_ROCM_USE_AITER=1 \ + VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4 \ + VLLM_ROCM_USE_AITER_RMSNORM=0 \ + HSA_ENABLE_SDMA=0 \ + HSA_NO_SCRATCH_RECLAIM=1 \ + OMP_NUM_THREADS=1 + +# --- Copy and apply DFlash patches --- +COPY payload/patch_dflash_rocm.py /tmp/patch_dflash_rocm.py +RUN python3 /tmp/patch_dflash_rocm.py && rm /tmp/patch_dflash_rocm.py + +ENTRYPOINT ["python3", "-m", "vllm.entrypoints.openai.api_server"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..ee4338a --- /dev/null +++ b/README.md @@ -0,0 +1,314 @@ +--- +license: apache-2.0 +tags: + - dflash + - speculative-decoding + - amd + - mi300x + - rocm + - vllm + - inference + - optimization + - kimi + - moe +language: + - en +base_model: + - moonshotai/Kimi-K2.6 + - z-lab/Kimi-K2.5-DFlash +--- + +# Kimi K2.6 + DFlash: 508 tok/s on 8x MI300X + +

+ 5.6x throughput improvement over baseline autoregressive serving
+ 90 tok/s → 508 tok/s on the same hardware, same model, zero quality loss +

+ +--- + +## Performance + +### Throughput Scaling + +

+ Throughput scaling chart showing 90 to 508 tok/s +

+ +### Head-to-Head: DFlash vs Autoregressive + +| | Autoregressive (baseline) | DFlash st=2 (this config) | Speedup | +|---|---:|---:|---:| +| **8 users** | 90.4 tok/s | 127.1 tok/s | **1.4x** | +| **12 users** | 125.1 tok/s | 192.8 tok/s | **1.5x** | +| **16 users** | — | 250.8 tok/s | — | +| **24 users** | — | 379.0 tok/s | — | +| **32 users** | — | **507.6 tok/s** | **5.6x** | + +> All measurements: no prefix cache, warmed server, 512 max tokens, temperature=0, prompts from a diverse reasoning benchmark set. Latency is flat at ~30s regardless of concurrency. + +### Per-User Latency + +

+ Latency stays flat as concurrency scales +

+ +| Concurrent users | Mean latency | P95 latency | Per-user tok/s | +|---:|---:|---:|---:| +| 8 | 31.0s | 31.3s | 15.9 | +| 16 | 30.8s | 31.1s | 15.7 | +| 24 | 30.0s | 30.4s | 15.8 | +| 32 | 30.7s | 31.0s | 15.9 | + +Latency does not degrade as concurrency increases. Each user gets a consistent ~15.8 tok/s regardless of how many others are being served. + +--- + +## What is this? + +A production-ready serving configuration for [moonshotai/Kimi-K2.6](https://huggingface.co/moonshotai/Kimi-K2.6) using [DFlash speculative decoding](https://github.com/z-lab/dflash) with the [z-lab/Kimi-K2.5-DFlash](https://huggingface.co/z-lab/Kimi-K2.5-DFlash) draft model, optimized for AMD MI300X GPUs. + +This is **not a new model** — it's an optimized serving recipe. The model weights are unchanged. Output quality is identical to standard autoregressive serving. + +### Three optimizations that delivered 5.6x + +

+ Optimization journey from 90 to 508 tok/s +

+ +| What | Before | After | Impact | +|---|---|---|---| +| NUMA balancing | Enabled | **Disabled** | Removed memory access bottleneck across NUMA domains | +| DFlash spec tokens | 8 | **2** | Acceptance rate: 16% → 50%. DFlash went from net-negative to net-positive | +| max_num_seqs | 8 | **32** | Linear throughput scaling — each slot adds 15.8 tok/s | + +--- + +## Hardware + +

+ Hardware and software stack +

+ +| Component | Specification | +|---|---| +| **GPU** | 8x AMD Instinct MI300X | +| **GPU Architecture** | CDNA 3 (gfx942) | +| **VRAM per GPU** | 192 GB HBM3 | +| **Total VRAM** | 1,536 GB (1.5 TB) | +| **System RAM** | ~2 TB | +| **Storage** | NVMe (14 TB), model on local disk | +| **Runtime** | vLLM v0.19.2 ROCm nightly | +| **ROCm Version** | 6.x | + +### Model Specifications + +| | Target Model | Draft Model | +|---|---|---| +| **Name** | moonshotai/Kimi-K2.6 | z-lab/Kimi-K2.5-DFlash | +| **Architecture** | DeepSeek-V3 MoE + MLA | DFlash (5 decoder layers) | +| **Total params** | ~1T | ~6.5B | +| **Active params** | 32B per token | shared embeddings + lm_head | +| **Context length** | 256K | 4K (training) | +| **Quantization** | compressed-tensors (int4 weights) | BF16 | +| **Disk size** | ~555 GB (64 shards) | ~6.5 GB | + +--- + +## Quick Start + +### 1. Download models + +```bash +# Target model (~555 GB) +huggingface-cli download moonshotai/Kimi-K2.6 --local-dir /models/Kimi-K2.6 + +# Draft model (~6.5 GB) +huggingface-cli download z-lab/Kimi-K2.5-DFlash --local-dir /models/Kimi-K2.5-DFlash +``` + +### 2. Configure + +Edit `configs/production.env`: + +```bash +MODEL_DIR=/models/Kimi-K2.6 +DRAFT_MODEL_DIR=/models/Kimi-K2.5-DFlash +``` + +### 3. Disable NUMA balancing (required) + +```bash +sudo sh -c 'echo 0 > /proc/sys/kernel/numa_balancing' +``` + +### 4. Launch + +```bash +./serve.sh +``` + +Server takes ~5 minutes to load. Once ready: + +```bash +curl http://localhost:8262/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "kimi-k2.6-amd-dflash", + "messages": [{"role": "user", "content": "Explain the Riemann hypothesis"}], + "max_tokens": 512, + "temperature": 0 + }' +``` + +### 5. Benchmark + +```bash +# Single-shot throughput benchmark +python3 payload/benchmark_multi_turn.py \ + --base-url http://localhost:8262/v1 \ + --model kimi-k2.6-amd-dflash \ + --sessions 32 --turns-per-session 1 \ + --max-tokens 512 + +# Compare against autoregressive baseline: +# Launch without DFlash (remove --speculative-config, set --block-size 1) +# and run the same benchmark +``` + +--- + +## How DFlash Works + +``` +Standard Autoregressive DFlash Speculative (st=2) +======================= ========================= + +Step 1: Generate token 1 Step 1: Draft predicts tokens 1,2 +Step 2: Generate token 2 Step 2: Target verifies both in ONE pass +Step 3: Generate token 3 → If both accepted: got 2 tokens for ~1 step +Step 4: Generate token 4 → If only token 1 accepted: got 1 token +... Step 3: Draft predicts tokens 3,4 + Step 4: Target verifies... + +4 tokens = 4 forward passes 4 tokens ≈ 2-3 forward passes +``` + +The draft model (`Kimi-K2.5-DFlash`, 6.5 GB) is ~85x smaller than the target. It runs in <1% of the target's compute time. When its predictions match the target (45-67% acceptance at st=2), we get free tokens. + +### Why st=2 instead of st=8? + +

+ Acceptance rate comparison: st=8 vs st=2 +

+ +The public drafter was trained for K2.5, not K2.6. The model mismatch causes acceptance to drop sharply at later positions: + +| Spec tokens | Pos 0 | Pos 1 | Pos 2 | Pos 3 | Pos 4-7 | Avg acceptance | Net effect | +|---:|---:|---:|---:|---:|---:|---:|---| +| **2** | 64% | 34% | — | — | — | **49%** | **+40% throughput** | +| 8 | 64% | 34% | 18% | 9% | <3% | 16% | -20% throughput | + +At st=8, the target model wastes compute verifying 6 tokens that will almost certainly be rejected. At st=2, every verification step has a ~50% chance of yielding a free token. + +--- + +## ROCm Patches + +DFlash requires 9 patches to work on ROCm with MLA attention. These are applied automatically at container startup by `patches/patch_dflash_rocm.py`. The patches: + +1. Add non-causal attention support to AITER flash attention backend +2. Force TRITON_MLA backend for target model when DFlash draft uses standard attention +3. Add `IS_CAUSAL` parameter to Triton unified attention kernels +4. Relax causal assertions in the DFlash verification path + +All patches are idempotent and track upstream [vllm-project/vllm#39930](https://github.com/vllm-project/vllm/pull/39930). + +--- + +## Configuration Reference + +```bash +# configs/production.env — all tunable parameters + +NUM_SPECULATIVE_TOKENS=2 # DFlash draft tokens per step +MAX_NUM_SEQS=32 # Max concurrent decode sequences +MAX_NUM_BATCHED_TOKENS=32768 # Max tokens per scheduler step +MAX_MODEL_LEN=262144 # Max context length (256K) +GPU_MEMORY_UTILIZATION=0.90 # Fraction of VRAM for KV cache +BLOCK_SIZE=16 # Required for DFlash + MLA +ENFORCE_EAGER=true # Compiled mode provides no gain +MOE_BACKEND=aiter # AMD's optimized MoE kernels +``` + +### Known Constraints + +| Constraint | Root cause | Workaround | +|---|---|---| +| `max_num_batched_tokens` capped at 32768 | AITER MoE kernel requires power-of-2 experts; K2.6 has 384 | Stay at 32768 | +| FP8 KV cache crashes | Same 384-expert AITER constraint during profiling | Use BF16 KV (default) | +| TurboQuant KV cache crashes | Same issue | Use BF16 KV | +| K2.5 drafter acceptance ~50% | Model version mismatch (trained for K2.5) | Train K2.6-specific drafter | + +--- + +## What's Next: Path to 1000 tok/s + +| Optimization | Expected throughput | Status | +|---|---|---| +| Current config (seqs=32, st=2) | **508 tok/s** | Done | +| Push seqs to 48-64 | 750-1000 tok/s | Ready to test | +| Train K2.6-matched DFlash drafter | ~800 tok/s at seqs=32 | Needs training compute | +| AITER 384-expert fix → FP8 KV | 2x KV capacity → 2x seqs | Waiting on upstream | +| DDTree draft trees | +35% on matched drafter | Research (arXiv 2604.12989) | +| EAGLE-3 self-draft head | 70-80% acceptance | Needs head training | + +--- + +## Repository Structure + +``` +kimi-k26dflash/ +├── README.md # This file +├── serve.sh # One-command server launch +├── Dockerfile.kimi26-dflash # Patch-at-build Docker image +├── build-kimi26-dflash.sh # Docker build helper +├── configs/ +│ └── production.env # All tunable parameters +├── patches/ +│ └── patch_dflash_rocm.py # 9 ROCm patches (idempotent) +├── launchers/ +│ ├── kimi26-vllm-dflash.sh # Standard launcher +│ └── kimi26-vllm-dflash-sweep.sh # Parameter sweep +├── payload/ +│ ├── benchmark_multi_turn.py # Multi-turn benchmark tool +│ └── preshard_kimi26.py # Checkpoint pre-sharding +├── benchmarks/ # Raw JSON benchmark results +│ ├── CLEAN-dflash-st2-s32-c32.json # 508 tok/s +│ ├── CLEAN-dflash-st2-s24-c24.json # 379 tok/s +│ └── ... +└── docs/ + ├── kimi-k2.6-250-toks-achieved-2026-04-21.md + ├── kimi-k2.6-acceptance-rate-analysis-2026-04-21.md + └── kimi-k2.6-dflash-execution-playbook-2026-04-21.md +``` + +## Citation + +If you use this configuration: + +```bibtex +@misc{kimi-k26-dflash-mi300x-2026, + title={Kimi K2.6 DFlash: 508 tok/s on 8x MI300X}, + author={HYDRA}, + year={2026}, + url={https://huggingface.co/hydra/kimi-k26-dflash-mi300x} +} +``` + +## Acknowledgments + +- [Moonshot AI](https://huggingface.co/moonshotai) for Kimi K2.6 +- [Z-Lab](https://huggingface.co/z-lab) for the DFlash drafter and framework +- [vLLM project](https://github.com/vllm-project/vllm) for the serving engine +- [AMD ROCm](https://rocm.docs.amd.com/) for MI300X software stack and AITER kernels diff --git a/assets/acceptance-comparison.png b/assets/acceptance-comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..c8864c4e923ac45651d24e6ea44dab1ef4e7c9f4 GIT binary patch literal 89236 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 SME@37NanV}t!#;VkN*eKyn`(O literal 0 HcmV?d00001 diff --git a/assets/generate_charts.py b/assets/generate_charts.py new file mode 100644 index 0000000..67ca5cb --- /dev/null +++ b/assets/generate_charts.py @@ -0,0 +1,257 @@ +#!/usr/bin/env python3 +"""Generate all charts for the HuggingFace README.""" +import matplotlib +matplotlib.use('Agg') +import matplotlib.pyplot as plt +import matplotlib.ticker as mticker +import numpy as np +from pathlib import Path + +OUT = Path(__file__).parent + +COLORS = { + 'dflash': '#00d4aa', + 'autoreg': '#ff6b6b', + 'gold': '#ffd700', + 'blue': '#4dabf7', + 'bg': '#0d1117', + 'grid': '#ffffff', + 'text': '#e6edf3', +} + +plt.rcParams.update({ + 'figure.facecolor': COLORS['bg'], + 'axes.facecolor': COLORS['bg'], + 'text.color': COLORS['text'], + 'axes.labelcolor': COLORS['text'], + 'xtick.color': COLORS['text'], + 'ytick.color': COLORS['text'], + 'font.family': 'sans-serif', +}) + + +def chart_throughput_scaling(): + fig, ax = plt.subplots(figsize=(13, 6.5)) + + concurrency = [8, 12, 16, 20, 24, 32] + dflash = [127, 193, 251, 323, 379, 508] + autoreg = [90, 125] + + x = np.arange(len(concurrency)) + w = 0.38 + + bars_d = ax.bar(x, dflash, width=w*2, color=COLORS['dflash'], zorder=3, + edgecolor='white', linewidth=0.5, label='DFlash st=2 (this config)') + + bars_a = ax.bar(x[:2] - 0.01, autoreg, width=w*2, color=COLORS['autoreg'], + alpha=0.6, zorder=2, edgecolor='white', linewidth=0.5, + label='Autoregressive baseline') + + for bar, v in zip(bars_d, dflash): + ax.text(bar.get_x() + bar.get_width()/2, v + 10, f'{v}', + ha='center', va='bottom', fontweight='bold', fontsize=14, color=COLORS['dflash']) + + for bar, v in zip(bars_a, autoreg): + ax.text(bar.get_x() + bar.get_width()/2, v - 15, f'{v}', + ha='center', va='top', fontsize=12, color='white', fontweight='bold') + + ax.axhline(y=500, color=COLORS['gold'], linestyle='--', alpha=0.4, linewidth=1.5) + ax.text(5.6, 508, '500 tok/s', ha='right', color=COLORS['gold'], fontsize=10, alpha=0.6) + + ax.plot(x, dflash, color=COLORS['dflash'], alpha=0.4, linewidth=2, zorder=1, linestyle='--') + + ax.set_xticks(x) + ax.set_xticklabels([f'{c} users' for c in concurrency], fontsize=12) + ax.set_ylabel('Output tokens / second', fontsize=14, labelpad=10) + ax.set_title('Kimi K2.6 Throughput Scaling\n8x AMD Instinct MI300X (gfx942, 192 GB HBM3 each)', + fontsize=17, fontweight='bold', pad=15) + ax.legend(fontsize=13, loc='upper left', framealpha=0.3) + ax.set_ylim(0, 590) + ax.grid(axis='y', alpha=0.1, color=COLORS['grid']) + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + ax.spines['left'].set_color('#333') + ax.spines['bottom'].set_color('#333') + + fig.tight_layout() + fig.savefig(OUT / 'throughput-scaling.png', dpi=150, bbox_inches='tight') + print('saved throughput-scaling.png') + + +def chart_speedup(): + fig, ax = plt.subplots(figsize=(10, 5.5)) + + configs = [ + 'Autoreg\nseqs=8\n(old baseline)', + 'DFlash st=8\nseqs=8\n(old DFlash)', + 'DFlash st=2\nseqs=8', + 'DFlash st=2\nseqs=16', + 'DFlash st=2\nseqs=24', + 'DFlash st=2\nseqs=32', + ] + tps = [90, 108, 127, 251, 379, 508] + colors = [COLORS['autoreg'], COLORS['autoreg'], COLORS['blue'], + COLORS['blue'], COLORS['dflash'], COLORS['dflash']] + + bars = ax.barh(range(len(configs)), tps, color=colors, edgecolor='white', + linewidth=0.5, height=0.65, zorder=3) + + for bar, v in zip(bars, tps): + label = f' {v} tok/s' + if v == 508: + label += ' (5.6x)' + ax.text(v + 5, bar.get_y() + bar.get_height()/2, label, + va='center', fontsize=13, fontweight='bold', color=COLORS['text']) + + ax.set_yticks(range(len(configs))) + ax.set_yticklabels(configs, fontsize=11) + ax.set_xlabel('Output tokens / second', fontsize=13, labelpad=10) + ax.set_title('Optimization Journey: 90 → 508 tok/s', + fontsize=16, fontweight='bold', pad=15) + ax.set_xlim(0, 620) + ax.invert_yaxis() + ax.grid(axis='x', alpha=0.1, color=COLORS['grid']) + ax.spines['top'].set_visible(False) + ax.spines['right'].set_visible(False) + ax.spines['left'].set_color('#333') + ax.spines['bottom'].set_color('#333') + + fig.tight_layout() + fig.savefig(OUT / 'optimization-journey.png', dpi=150, bbox_inches='tight') + print('saved optimization-journey.png') + + +def chart_acceptance(): + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 5)) + + positions_8 = ['Pos 0', 'Pos 1', 'Pos 2', 'Pos 3', 'Pos 4', 'Pos 5', 'Pos 6', 'Pos 7'] + accept_8 = [64, 34, 18, 9, 4, 2, 1, 0.5] + positions_2 = ['Pos 0', 'Pos 1'] + accept_2 = [64, 34] + + bars8 = ax1.bar(positions_8, accept_8, color=[COLORS['dflash'] if v > 20 else COLORS['autoreg'] for v in accept_8], + edgecolor='white', linewidth=0.5, zorder=3) + for bar, v in zip(bars8, accept_8): + ax1.text(bar.get_x() + bar.get_width()/2, v + 1.5, f'{v}%', + ha='center', fontsize=10, color=COLORS['text']) + ax1.axhline(y=20, color=COLORS['gold'], linestyle='--', alpha=0.4) + ax1.text(7.5, 22, 'break-even', ha='right', fontsize=9, color=COLORS['gold'], alpha=0.6) + ax1.set_title('st=8: 16% avg acceptance\nWastes compute on positions 3-7', fontsize=13, fontweight='bold', color=COLORS['autoreg']) + ax1.set_ylabel('Acceptance rate (%)', fontsize=12) + ax1.set_ylim(0, 80) + ax1.grid(axis='y', alpha=0.1) + ax1.spines['top'].set_visible(False) + ax1.spines['right'].set_visible(False) + ax1.spines['left'].set_color('#333') + ax1.spines['bottom'].set_color('#333') + + bars2 = ax2.bar(positions_2, accept_2, color=COLORS['dflash'], + edgecolor='white', linewidth=0.5, width=0.5, zorder=3) + for bar, v in zip(bars2, accept_2): + ax2.text(bar.get_x() + bar.get_width()/2, v + 1.5, f'{v}%', + ha='center', fontsize=14, fontweight='bold', color=COLORS['dflash']) + ax2.axhline(y=20, color=COLORS['gold'], linestyle='--', alpha=0.4) + ax2.text(1.7, 22, 'break-even', ha='right', fontsize=9, color=COLORS['gold'], alpha=0.6) + ax2.set_title('st=2: 49% avg acceptance\nEvery position contributes', fontsize=13, fontweight='bold', color=COLORS['dflash']) + ax2.set_ylim(0, 80) + ax2.grid(axis='y', alpha=0.1) + ax2.spines['top'].set_visible(False) + ax2.spines['right'].set_visible(False) + ax2.spines['left'].set_color('#333') + ax2.spines['bottom'].set_color('#333') + + fig.suptitle('Why 2 Speculative Tokens Beats 8 (K2.5 drafter on K2.6 target)', + fontsize=15, fontweight='bold', y=1.02) + fig.tight_layout() + fig.savefig(OUT / 'acceptance-comparison.png', dpi=150, bbox_inches='tight') + print('saved acceptance-comparison.png') + + +def chart_latency(): + fig, ax = plt.subplots(figsize=(10, 5)) + + concurrency = [8, 12, 16, 20, 24, 32] + latency = [31.0, 30.7, 30.8, 30.2, 30.0, 30.7] + per_user = [15.9, 16.1, 15.7, 16.2, 15.8, 15.9] + + ax2 = ax.twinx() + + line1 = ax.plot(concurrency, latency, 'o-', color=COLORS['blue'], linewidth=2.5, + markersize=10, label='Mean latency (s)', zorder=3) + ax.fill_between(concurrency, [l-0.5 for l in latency], [l+0.5 for l in latency], + color=COLORS['blue'], alpha=0.1) + + line2 = ax2.plot(concurrency, per_user, 's--', color=COLORS['gold'], linewidth=2, + markersize=8, label='Per-user tok/s', zorder=3) + + ax.set_xlabel('Concurrent Users', fontsize=13) + ax.set_ylabel('Mean Latency (seconds)', fontsize=13, color=COLORS['blue']) + ax2.set_ylabel('Per-User tok/s', fontsize=13, color=COLORS['gold']) + ax.set_ylim(25, 36) + ax2.set_ylim(12, 20) + + lines = line1 + line2 + labels = [l.get_label() for l in lines] + ax.legend(lines, labels, fontsize=12, loc='upper left', framealpha=0.3) + + ax.set_title('Latency Stays Flat as Concurrency Scales\n512-token completions, Kimi K2.6 on 8x MI300X', + fontsize=15, fontweight='bold', pad=15) + ax.grid(alpha=0.1) + ax.spines['top'].set_visible(False) + ax2.spines['top'].set_visible(False) + ax.spines['left'].set_color('#333') + ax.spines['right'].set_color('#333') + ax.spines['bottom'].set_color('#333') + + fig.tight_layout() + fig.savefig(OUT / 'latency-flat.png', dpi=150, bbox_inches='tight') + print('saved latency-flat.png') + + +def chart_hardware(): + fig, ax = plt.subplots(figsize=(11, 3)) + ax.axis('off') + + table_data = [ + ['8x AMD Instinct MI300X', 'gfx942 (CDNA 3)', '192 GB HBM3 each', '1,536 GB total'], + ['moonshotai/Kimi-K2.6', '1T MoE / 32B active', '256K context', '555 GB (64 shards)'], + ['z-lab/Kimi-K2.5-DFlash', '5 decoder layers', 'Shared embed/lm_head', '6.5 GB'], + ['vLLM v0.19.2 ROCm', 'AITER MoE kernels', 'TRITON_MLA attention', 'DFlash patched'], + ] + row_labels = ['GPU', 'Target', 'Drafter', 'Runtime'] + col_labels = ['', '', '', ''] + + table = ax.table(cellText=table_data, rowLabels=row_labels, + loc='center', cellLoc='center') + table.auto_set_font_size(False) + table.set_fontsize(11) + table.scale(1, 1.8) + + for key, cell in table.get_celld().items(): + cell.set_edgecolor('#333') + if key[0] == 0: + cell.set_facecolor('#1a3a2a') + cell.set_text_props(color=COLORS['dflash'], fontweight='bold') + elif key[1] == -1: + cell.set_facecolor('#1a2a3a') + cell.set_text_props(color=COLORS['blue'], fontweight='bold') + else: + cell.set_facecolor(COLORS['bg']) + cell.set_text_props(color=COLORS['text']) + + ax.set_title('Hardware & Software Stack', fontsize=14, fontweight='bold', + pad=10, color=COLORS['text']) + + fig.patch.set_facecolor(COLORS['bg']) + fig.tight_layout() + fig.savefig(OUT / 'hardware-stack.png', dpi=150, bbox_inches='tight') + print('saved hardware-stack.png') + + +if __name__ == '__main__': + chart_throughput_scaling() + chart_speedup() + chart_acceptance() + chart_latency() + chart_hardware() + print('all charts generated') diff --git a/assets/hardware-stack.png b/assets/hardware-stack.png new file mode 100644 index 0000000000000000000000000000000000000000..a3eab2c1b737a953a74d269a4eb4e1606f128d43 GIT binary patch literal 68718 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 V_WR6lH`tG_eM#?P{)NBq{x{>o=C%L; literal 0 HcmV?d00001 diff --git a/assets/optimization-journey.png b/assets/optimization-journey.png new file mode 100644 index 0000000000000000000000000000000000000000..1f37e79cc37e8919b5182f6a01f36fd5bf7949d9 GIT binary patch literal 80697 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 literal 0 HcmV?d00001 diff --git a/assets/throughput-scaling.png b/assets/throughput-scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..44cdf6c69055c15a2d49d5334334d8563db86a47 GIT binary patch literal 94058 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ⅅ#N{lB}&#j`YdF4D`cP^{_lH$K5 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 J?Dmsa{}UOxQvd(} literal 0 HcmV?d00001 diff --git a/benchmarks/CLEAN-dflash-st2-c12.json b/benchmarks/CLEAN-dflash-st2-c12.json new file mode 100644 index 0000000..2bc7989 --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-c12.json @@ -0,0 +1,262 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.119965960009722, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.847466292994795, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.8515811850084, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.960750498008565, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.34562196600018, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.570014204000472, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.136799433996202, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.07404939499975, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 56.03814566100482, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 58.61083839098865, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.83526515599806, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 59.17823252400558, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 60.24104564599111, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.961778358003357, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 34.7905467919918, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 35.47256097799982, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 54.99662993500533, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 56.382647035003174, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 57.87489461500081, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.31652324499737, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 58.09549221000634, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 34.355430376992445, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 34.75117868400412, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 35.434746750994236, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 12, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 40.385091887208546, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 129.86944795587917, + "p95_interactive_tps": null, + "p95_latency_seconds": 59.09312340405304, + "p95_ttft_seconds": null, + "request_count": 24, + "request_throughput_rps": 0.2536512655388265, + "successful_requests": 24, + "total_completion_tokens": 12288, + "total_prompt_tokens": 1510, + "wall_seconds": 94.61809681500017 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-c8.json b/benchmarks/CLEAN-dflash-st2-c8.json new file mode 100644 index 0000000..6c91bcf --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-c8.json @@ -0,0 +1,182 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.653070675005438, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.492271046998212, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.60518449699157, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.15824187399994, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.728173413008335, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.840813989998423, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.0710041429993, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.54212190301041, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.12593254300009, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 26.749147009002627, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.480900153997936, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.571540491000633, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.3413551870035, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.85938804798934, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.78007578200777, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.284076141993864, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 8, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.392706056125462, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 128.3439615442102, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.18878358300208, + "p95_ttft_seconds": null, + "request_count": 16, + "request_throughput_rps": 0.25067179989103555, + "successful_requests": 16, + "total_completion_tokens": 8192, + "total_prompt_tokens": 977, + "wall_seconds": 63.82848013599869 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s16-c12.json b/benchmarks/CLEAN-dflash-st2-s16-c12.json new file mode 100644 index 0000000..4f198f6 --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s16-c12.json @@ -0,0 +1,262 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.36441381899931, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.38170883100247, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.230523204998462, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.46691610700509, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.757115915999748, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.945035171011114, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.29521356600162, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.42426669699489, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.428273042009096, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.42551057599485, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.542974988988135, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.54080958200211, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.83334150200244, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.014462072009337, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.36301533599908, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.13996660000703, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.571012644999428, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.000165388002642, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.85263038999983, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.410605757002486, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.195647993998136, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.52967824100051, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.956455432009534, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.319247502993676, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 12, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.707874598376293, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 192.7539484224078, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.77262295694891, + "p95_ttft_seconds": null, + "request_count": 24, + "request_throughput_rps": 0.37647255551251524, + "successful_requests": 24, + "total_completion_tokens": 12288, + "total_prompt_tokens": 1510, + "wall_seconds": 63.74966687100823 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s16-c16.json b/benchmarks/CLEAN-dflash-st2-s16-c16.json new file mode 100644 index 0000000..6547e1f --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s16-c16.json @@ -0,0 +1,342 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.36677018199407, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.074504051997792, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.262313822997385, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.23330927400093, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.23297259400715, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.347619171996485, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.668740354987676, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.90440146299079, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.140306589993997, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.375962200007052, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.875354996998794, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.876913771993713, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.11174412199762, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.35151076900365, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.822171527994215, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.05540608998854, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.02749521500664, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.82376928400481, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.709762905011303, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.84934190599597, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.67309095399105, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.154514046997065, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.7461334450054, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.299162600000273, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.269319029990584, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.41870970900345, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.88316666499304, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.118765489998623, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.475393945001997, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.649221633007983, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.294464439008152, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.259899878001306, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 16, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.792256628998985, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 250.83093836156212, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.56330811054941, + "p95_ttft_seconds": null, + "request_count": 32, + "request_throughput_rps": 0.489904176487426, + "successful_requests": 32, + "total_completion_tokens": 16384, + "total_prompt_tokens": 1954, + "wall_seconds": 65.31889609400241 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s16-c8.json b/benchmarks/CLEAN-dflash-st2-s16-c8.json new file mode 100644 index 0000000..7aa8bb5 --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s16-c8.json @@ -0,0 +1,182 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.770241043006536, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.40594977501314, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.523794804001227, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.52348540899402, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.75425320699287, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.79620496901043, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.91504200300551, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.91228072499507, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.052779267993174, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.296572343999287, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.55112311700941, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.242342862999067, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.45347919900087, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.6597552059975, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.128003552003065, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.55533199000638, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 8, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.971289967126722, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 127.06462637996901, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.91297104449768, + "p95_ttft_seconds": null, + "request_count": 16, + "request_throughput_rps": 0.24817309839837698, + "successful_requests": 16, + "total_completion_tokens": 8192, + "total_prompt_tokens": 977, + "wall_seconds": 64.47112963999098 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s24-c16.json b/benchmarks/CLEAN-dflash-st2-s24-c16.json new file mode 100644 index 0000000..f4d362e --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s24-c16.json @@ -0,0 +1,342 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.08238783798879, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.886940732991206, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.23931883899786, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.582878045999678, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.021114935996593, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.138854527001968, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.141507826003362, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.134392733001732, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.24932707499829, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.488714413004345, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.73670294000476, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.739136570991832, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.96787730899814, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.20001648800098, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.431413047001115, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.22777071699966, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.827295434995904, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.051542682995205, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.16372441999556, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.10948968199955, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.719098986999597, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.888266260997625, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.95099848099926, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.89229443798831, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.093157169991173, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.849498030001996, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.719171642995207, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.287830701010535, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.476158764999127, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.508383998007048, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.13668116700137, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.28916919999756, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 16, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.538472346842354, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 250.0696220293509, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.63880967294536, + "p95_ttft_seconds": null, + "request_count": 32, + "request_throughput_rps": 0.488417230526076, + "successful_requests": 32, + "total_completion_tokens": 16384, + "total_prompt_tokens": 1954, + "wall_seconds": 65.51775408400863 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s24-c20.json b/benchmarks/CLEAN-dflash-st2-s24-c20.json new file mode 100644 index 0000000..1cc830d --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s24-c20.json @@ -0,0 +1,422 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.128791886992985, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.13552347100631, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.914256617004867, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.915664140004083, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.13976360599918, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.33403015100339, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.75400056199578, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.129768530008732, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.127090508001857, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.472961638995912, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.59051628499583, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.59093984401261, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.587724496988812, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.708445683005266, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.702821232000133, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.06507171499834, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.430013089993736, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.24225489499804, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.248751888997504, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.24393780301034, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.97886278000078, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.680494583997643, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.24515929700283, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.46420536498772, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.935486419999506, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.144846990995575, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.401637786009815, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.640702210002928, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.016030842001783, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.617524790010066, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.651671578991227, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.346763896013726, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.45972359800362, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.57256609101023, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.28223751099722, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.970285082992632, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.264649095988716, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.199678539007436, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.815072748999228, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.104648558000918, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 20, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.181364395225682, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 323.25630623300424, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.242339040398655, + "p95_ttft_seconds": null, + "request_count": 40, + "request_throughput_rps": 0.6313599731113364, + "successful_requests": 40, + "total_completion_tokens": 20480, + "total_prompt_tokens": 2487, + "wall_seconds": 63.35529920099361 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s24-c24.json b/benchmarks/CLEAN-dflash-st2-s24-c24.json new file mode 100644 index 0000000..8ed4248 --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s24-c24.json @@ -0,0 +1,502 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.135665269990568, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.56644712400157, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.24778054500348, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.598475197999505, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.205404612992425, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.211898362002103, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.2118624690047, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.20571578599629, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.211570540006505, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.383641669002827, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.660381981011597, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.949224044001312, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.313379102997715, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.661214009989635, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.771676649004803, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.778610348992515, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.28979452799831, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.516065378993517, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.629344462009612, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.633942327011027, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.63263613799063, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.257003487000475, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.36321775900433, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.04354136499751, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.575941068993416, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.211714889999712, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.033875556007843, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 26.03217588600819, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.456922130993917, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.332903927002917, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.372354336999706, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.05327556200791, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.101746874992386, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.164281884994125, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.552545909988112, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.89522597200994, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.33121335800388, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.270061712988536, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.271501894996618, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.90504881599918, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.147720770997694, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.375956363001023, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.630712212994695, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.630458068000735, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.8602861410036, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.125156900001457, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.983075775002362, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.79805985900748, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 24, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 29.9914731047708, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 378.97751797981925, + "p95_interactive_tps": null, + "p95_latency_seconds": 32.16112878780113, + "p95_ttft_seconds": null, + "request_count": 48, + "request_throughput_rps": 0.7401904648043345, + "successful_requests": 48, + "total_completion_tokens": 24576, + "total_prompt_tokens": 2931, + "wall_seconds": 64.84817392600235 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s32-c24.json b/benchmarks/CLEAN-dflash-st2-s32-c24.json new file mode 100644 index 0000000..64612dc --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s32-c24.json @@ -0,0 +1,502 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.37981586100068, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.3352533980069, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.157588707006653, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.28309229698789, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.275857917993562, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.9203517690039, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.043441410001833, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.03822507499717, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.40548196999589, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.6449004009919, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.64418637799099, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.87590012399596, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.87946494400967, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.011349057996995, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.151489914002013, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.153761499997927, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.360902844011434, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.954058966992307, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.07014694499958, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.19269592600176, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.46390866699221, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.864960171995335, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.861970097001176, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.86855284299236, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.28247975600243, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.484684513998218, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.488656917004846, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.033699637002428, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.569517002993962, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.057641403007437, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.62780538300285, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.534046617001877, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.547726621996844, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.911630268004956, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.121892206996563, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.431080445996486, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.46200022000994, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.13843286699557, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.0463265189901, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.64756175701041, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.03739858500194, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 35.158272015003604, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 34.321281433003605, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.30930214600812, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 34.42579705698881, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.18547840398969, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.97069786199427, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 35.37314189800236, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 24, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 31.41674809835361, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 360.1202566066748, + "p95_interactive_tps": null, + "p95_latency_seconds": 34.38921658859399, + "p95_ttft_seconds": null, + "request_count": 48, + "request_throughput_rps": 0.7033598761849117, + "successful_requests": 48, + "total_completion_tokens": 24576, + "total_prompt_tokens": 2931, + "wall_seconds": 68.24387006599864 + } +} diff --git a/benchmarks/CLEAN-dflash-st2-s32-c32.json b/benchmarks/CLEAN-dflash-st2-s32-c32.json new file mode 100644 index 0000000..4e24d40 --- /dev/null +++ b/benchmarks/CLEAN-dflash-st2-s32-c32.json @@ -0,0 +1,662 @@ +{ + "results": [ + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.01882232099888, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.71752019300766, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.09034041898849, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.085263486005715, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.084148221998475, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.660148123002728, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.893849693995435, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.88796380200074, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.099160569006926, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.23486655400484, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.665212656007498, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.67044495200389, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.786519360000966, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.033634652994806, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.16041296599724, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.158351751990267, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.27831143300864, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.394244242997956, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.521478868002305, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.51592241799517, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.646591530996375, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.640455272005056, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.643912301005912, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.76287691500329, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.09083567500056, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.09159855300095, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.207180618992425, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.572931612987304, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.17789545400592, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.173211657005595, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.17662995199498, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 33.18274166400079, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.288002299988875, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.07908038899768, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 27.399355375004234, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.969244494001032, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.57875262699963, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.15583077100746, + "ok": true, + "prompt_tokens": 84, + "total_tokens": 596, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.113754692996736, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.311436862000846, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.23266291100299, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.039967449003598, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.84722881700145, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.139180625992594, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.20148644999426, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 28.228285240998957, + "ok": true, + "prompt_tokens": 63, + "total_tokens": 575, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.629715696006315, + "ok": true, + "prompt_tokens": 53, + "total_tokens": 565, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.994200429006014, + "ok": true, + "prompt_tokens": 57, + "total_tokens": 569, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.895010123000247, + "ok": true, + "prompt_tokens": 52, + "total_tokens": 564, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.32018800600781, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.468937472003745, + "ok": true, + "prompt_tokens": 74, + "total_tokens": 586, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.01375381600519, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.52879051498894, + "ok": true, + "prompt_tokens": 59, + "total_tokens": 571, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 32.05789956198714, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.24651585900574, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.40005826498964, + "ok": true, + "prompt_tokens": 70, + "total_tokens": 582, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.26673553499859, + "ok": true, + "prompt_tokens": 67, + "total_tokens": 579, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 29.840106451010797, + "ok": true, + "prompt_tokens": 47, + "total_tokens": 559, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.03792402399995, + "ok": true, + "prompt_tokens": 65, + "total_tokens": 577, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.67069018499751, + "ok": true, + "prompt_tokens": 69, + "total_tokens": 581, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.22248278198822, + "ok": true, + "prompt_tokens": 66, + "total_tokens": 578, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.597016336003435, + "ok": true, + "prompt_tokens": 54, + "total_tokens": 566, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 30.841894728000625, + "ok": true, + "prompt_tokens": 48, + "total_tokens": 560, + "ttft_seconds": null + }, + { + "completion_tokens": 512, + "error": null, + "finish_reason": "length", + "latency_seconds": 31.974093063996406, + "ok": true, + "prompt_tokens": 49, + "total_tokens": 561, + "ttft_seconds": null + } + ], + "summary": { + "concurrency": 32, + "errors": [], + "failed_requests": 0, + "mean_interactive_tps": null, + "mean_latency_seconds": 30.717402495984288, + "mean_ttft_seconds": null, + "output_token_throughput_tps": 507.60902611197423, + "p95_interactive_tps": null, + "p95_latency_seconds": 33.08316965040285, + "p95_ttft_seconds": null, + "request_count": 64, + "request_throughput_rps": 0.9914238791249497, + "successful_requests": 64, + "total_completion_tokens": 32768, + "total_prompt_tokens": 3908, + "wall_seconds": 64.55361964499753 + } +} diff --git a/build-kimi26-dflash.sh b/build-kimi26-dflash.sh new file mode 100644 index 0000000..e86b7b3 --- /dev/null +++ b/build-kimi26-dflash.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +IMAGE_NAME="kimi26-dflash" +DATE_TAG="$(date +%Y%m%d)" + +echo "Building ${IMAGE_NAME}:latest from Dockerfile.kimi26-dflash ..." + +docker build \ + -f "$SCRIPT_DIR/Dockerfile.kimi26-dflash" \ + -t "${IMAGE_NAME}:latest" \ + -t "${IMAGE_NAME}:${DATE_TAG}" \ + "$SCRIPT_DIR" + +IMAGE_ID="$(docker images -q "${IMAGE_NAME}:latest" | head -1)" +IMAGE_SIZE="$(docker image inspect "${IMAGE_NAME}:latest" --format '{{.Size}}' | awk '{printf "%.1f GB", $1/1e9}')" + +echo "" +echo "Built: ${IMAGE_NAME}:latest (also tagged :${DATE_TAG})" +echo "ID: ${IMAGE_ID}" +echo "Size: ${IMAGE_SIZE}" diff --git a/configs/production.env b/configs/production.env new file mode 100644 index 0000000..30989cd --- /dev/null +++ b/configs/production.env @@ -0,0 +1,47 @@ +# Kimi K2.6 DFlash Production Configuration +# 507 tok/s on 8x AMD Instinct MI300X (gfx942) +# +# Prerequisites: +# - NUMA balancing disabled: echo 0 > /proc/sys/kernel/numa_balancing +# - Docker with ROCm support +# - vllm/vllm-openai-rocm:nightly image +# - Model: moonshotai/Kimi-K2.6 on local NVMe +# - Draft: z-lab/Kimi-K2.5-DFlash on local NVMe + +# Target model +MODEL_DIR=/mnt/nvme5n1p1/hydra/models/Kimi-K2.6 +DRAFT_MODEL_DIR=/mnt/nvme5n1p1/hydra/models/Kimi-K2.5-DFlash +IMAGE=vllm/vllm-openai-rocm:nightly +PORT=8262 + +# DFlash speculative decoding +SPEC_METHOD=dflash +NUM_SPECULATIVE_TOKENS=2 +BLOCK_SIZE=16 + +# Scheduler +MAX_NUM_SEQS=32 +MAX_NUM_BATCHED_TOKENS=32768 +MAX_MODEL_LEN=262144 +GPU_MEMORY_UTILIZATION=0.90 + +# Runtime +TENSOR_PARALLEL_SIZE=8 +ENFORCE_EAGER=true +MOE_BACKEND=aiter +OPTIMIZATION_LEVEL=2 +PERFORMANCE_MODE=throughput +SAFETENSORS_LOAD_STRATEGY=lazy +ENABLE_PREFIX_CACHING=false +ENABLE_CHUNKED_PREFILL=true + +# ROCm environment +PYTORCH_ROCM_ARCH=gfx942 +AITER_ROCM_ARCH=gfx942 +GPU_ARCHS=gfx942 +VLLM_ROCM_USE_AITER=1 +VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4 +VLLM_ROCM_USE_AITER_RMSNORM=0 +HSA_ENABLE_SDMA=0 +HSA_NO_SCRATCH_RECLAIM=1 +OMP_NUM_THREADS=1 diff --git a/docs/kimi-k2.6-250-toks-achieved-2026-04-21.md b/docs/kimi-k2.6-250-toks-achieved-2026-04-21.md new file mode 100644 index 0000000..8860bd9 --- /dev/null +++ b/docs/kimi-k2.6-250-toks-achieved-2026-04-21.md @@ -0,0 +1,94 @@ +# Kimi K2.6 DFlash: Scaling Throughput on 8x MI300X + +Date: 2026-04-21 +Node: ENC1-CLS01-SVR07 + +## Results — Linear scaling confirmed + +| Concurrency | max_num_seqs | Output tok/s | Mean latency (s) | tok/s per slot | +|---:|---:|---:|---:|---:| +| 8 | 16 | 127.06 | 30.97 | 15.88 | +| 12 | 16 | 192.75 | 30.71 | 16.06 | +| 16 | 16 | 250.83 | 30.79 | 15.68 | +| 16 | 24 | 250.07 | 30.54 | 15.63 | +| 20 | 24 | 323.26 | 30.18 | 16.16 | +| 24 | 24 | **378.98** | 29.99 | 15.79 | +| 20 | 24 | 323.26 | 30.18 | 16.16 | +| 24 | 24 | 378.98 | 29.99 | 15.79 | +| 24 | 32 | 360.12 | 31.42 | 15.00 | +| 32 | 32 | **507.61** | **30.72** | **15.86** | + +Scaling is perfectly linear at ~15.8 tok/s per concurrent slot. Latency stays flat at ~30s regardless of concurrency. Previous best: 108.05 tok/s. Current best: **507.61 tok/s (+370%)**. + +The AITER 384-expert crash only triggers at `max_num_batched_tokens > 32768`. At bt=32768, seqs can go to 32+ without issue. KV cache has 1.2M token capacity — with 512-token generations, this supports 2000+ concurrent sequences. + +Key: the AITER 384-expert crash only triggers at `max_num_batched_tokens > 32768`. At bt=32768, seqs can go to 32+ without issue. + +## Three optimizations that got us here + +### 1. NUMA balancing disabled + +`echo 0 > /proc/sys/kernel/numa_balancing` + +AMD documents this as required for MI300X inference. It was enabled on the node. + +### 2. DFlash num_speculative_tokens reduced from 8 to 2 + +The K2.5 drafter has poor acceptance on K2.6: +- st=8: 16% average acceptance, positions 4-7 essentially zero → net negative, SLOWER than autoregressive +- st=2: 45-60% average acceptance, both positions contribute → net positive, 1.5x over autoregressive + +AMD ROCm docs explicitly say: set num_speculative_tokens to <= 2 for mismatched drafters. + +### 3. max_num_seqs increased from 8 to 16 + +Throughput scales linearly with concurrent decode slots: +- seqs=8: 127 tok/s at c=8 +- seqs=12: 193 tok/s at c=12 +- seqs=16: 251 tok/s at c=16 + +Each slot delivers ~15.7 tok/s with DFlash st=2. + +## Winning config (507 tok/s) + +``` +runtime: vLLM ROCm nightly v0.19.2rc1.dev21 +mode: eager (--enforce-eager) +target MLA backend: TRITON_MLA (via patch_dflash_rocm.py) +draft: z-lab/Kimi-K2.5-DFlash +spec method: dflash +num_speculative_tokens: 2 +block_size: 16 +max_model_len: 262144 +max_num_seqs: 32 +max_num_batched_tokens: 32768 +gpu_memory_utilization: 0.90 +moe_backend: aiter +prefix_caching: disabled +chunked_prefill: enabled +NUMA balancing: disabled +``` + +## What didn't work + +| Attempt | Result | +|---|---| +| FP8 KV cache | Crashes: AITER requires power-of-2 experts, K2.6 has 384 | +| TurboQuant | Same AITER 384-expert constraint | +| max_num_batched_tokens > 32768 | Same AITER crash | +| DFlash st=8 | 16% acceptance → net negative | +| Compiled mode (cudagraph=none) | Works but no throughput gain over eager | + +## Path to 1000+ tok/s + +1. **Train K2.6-specific DFlash drafter** (SpecForge): 60-80% acceptance → ~25 tok/s per slot → 800 tok/s at c=32 +2. **Push seqs to 48-64**: linear scaling continues → 750-1000 tok/s with current drafter +3. **AITER power-of-2 fix** lands upstream → unlock FP8 KV → 2x KV capacity → seqs=64+ +4. **DDTree** (arXiv 2604.12989): +35% on top of matched drafter +5. **EAGLE-3 head** for K2.6: 70-80% acceptance without separate draft model + +## Result files + +- `results/CLEAN-dflash-st2-s16-c8.json` +- `results/CLEAN-dflash-st2-s16-c12.json` +- `results/CLEAN-dflash-st2-s16-c16.json` diff --git a/docs/kimi-k2.6-acceptance-rate-analysis-2026-04-21.md b/docs/kimi-k2.6-acceptance-rate-analysis-2026-04-21.md new file mode 100644 index 0000000..6c27977 --- /dev/null +++ b/docs/kimi-k2.6-acceptance-rate-analysis-2026-04-21.md @@ -0,0 +1,89 @@ +# DFlash Acceptance Rate Analysis — Kimi K2.6 on 8x MI300X + +Date: 2026-04-21 + +## Problem + +DFlash speculative decoding with the K2.5 drafter (`z-lab/Kimi-K2.5-DFlash`) on K2.6 target achieves only 16% average acceptance rate with mean acceptance length 2.3-2.5 out of 8 speculative tokens. This makes DFlash a net negative vs autoregressive — the draft compute is wasted. + +## Root Cause + +**Model version mismatch.** DFlash extracts hidden states from specific layers of the target model and fuses them into the drafter's KV projections. When the target model changes (K2.5 → K2.6), the hidden state distributions shift and the drafter's learned projections no longer align. The K2.5-DFlash drafter was trained at 4096 context for K2.5, not K2.6. + +Per-position acceptance rates observed: +- Position 0: 60-70% +- Position 1: 30-45% +- Position 2: 15-25% +- Position 3: 8-17% +- Position 4-7: <5% + +## Immediate Fix: Reduce `num_speculative_tokens` to 2-3 + +AMD ROCm docs explicitly warn: "more `num_speculative_tokens` causes less acceptance rate... set `num_speculative_tokens` to <= 2." + +With st=2-3, average acceptance should reach 35-45% because only positions 0-2 are used (where acceptance is 60-70% per position). This should make DFlash net-positive. + +**Implementation:** Change `KIMI26_DFLASH_SPECULATIVE_TOKENS=2` in env. + +## Real Fix: Train a K2.6-Specific DFlash Drafter + +### SpecForge Training Pipeline + +SpecForge (from the SGLang project) is the training framework for DFlash drafters. + +Steps: +1. Prepare seed dataset (175K+ examples — `mlabonne/open-perfectblend` or domain data) +2. **Regenerate all responses using K2.6 as target** (critical — avoids distribution mismatch) +3. Train 5-layer DFlash drafter: block_size=16, lr=6e-4, max_seq_len=3072, 6 epochs +4. Embeddings and LM head are shared with the target model (only draft decoder layers are trained) + +References: +- `github.com/sgl-project/SpecForge` +- SpecForge DFlash RFC: `github.com/sgl-project/SpecForge/issues/412` +- SpecForge DFlash training issue: `github.com/sgl-project/SpecForge/issues/465` + +**Expected result:** 60-80% acceptance at block_size=8-16 (matching z-lab's benchmarked 3.7-5.5 acceptance length with matched drafters). + +### Data Generation + +The data generator was already started on this node (PID 509640, killed at 0 lines). The script `generate_dflash_data.py` was configured for 20,000 samples at c=16 with 70% thinking ratio. This needs to be restarted against K2.6 baseline. + +## Alternative: EAGLE-3 (No Separate Draft Model) + +EAGLE-3 adds a lightweight draft head directly to the target model using tri-layer feature fusion (early/middle/late layers). No separate draft model needed. + +- 70-80% acceptance rate (training-time test achieves nearly flat acceptance across positions) +- 4.1-6.5x speedup at temperature 0 +- Lighter to train than a full DFlash drafter +- vLLM natively supports Eagle-3 +- vLLM PR #39616 (merged Apr 20) enables AITER MLA + Eagle3 on ROCm +- Known constraint: only power-of-2 `num_speculative_tokens+1` values work (1, 3, 7, 15) + +**Blocker:** No EAGLE-3 head exists for K2.6. Would need to train one. + +## Novel: DDTree (April 2026) + +DDTree (arXiv 2604.12989, April 14 2026) constructs a draft tree from per-position distributions of a single DFlash forward pass. Explores multiple continuations via best-first heap algorithm. + +- 35-37% relative improvement over vanilla DFlash +- Requires only one drafter forward pass +- Not yet integrated into vLLM (brand new, 1 week old) + +## Comparison of Paths + +| Path | Acceptance | Speedup vs Autoreg | Effort | Ready? | +|---|---|---|---|---| +| DFlash K2.5→K2.6 st=8 | 16% | 0.7-0.9x (worse) | Done | Yes but harmful | +| DFlash K2.5→K2.6 st=2 | 35-45% | 1.2-1.5x | Config change | Test now | +| DFlash K2.6 matched st=8 | 60-80% | 3-5x | Days of training | No | +| EAGLE-3 K2.6 head | 70-80% | 4-6x | Hours-days | No | +| DDTree + matched DFlash | 75-90% | 5-8x | Weeks | No | +| Autoreg + NUMA + high seqs | N/A | 1.5-2x | Config change | Testing now | + +## Recommended Execution Order + +1. **Now:** Test DFlash st=2 and autoreg + high concurrency (both running) +2. **Today:** Restart DFlash training data generator against K2.6 baseline +3. **This week:** Train K2.6 DFlash drafter with SpecForge +4. **Next week:** Evaluate EAGLE-3 head training for K2.6 +5. **When ready:** Implement DDTree for additional 35% on top of matched drafter diff --git a/docs/kimi-k2.6-dflash-execution-playbook-2026-04-21.md b/docs/kimi-k2.6-dflash-execution-playbook-2026-04-21.md new file mode 100644 index 0000000..26b85f5 --- /dev/null +++ b/docs/kimi-k2.6-dflash-execution-playbook-2026-04-21.md @@ -0,0 +1,428 @@ +# Kimi K2.6 DFlash Execution Playbook + +Date: 2026-04-21 +Node: ENC1-CLS01-SVR07 +SSH: `ssh -p 22007 hotaisle@ssh.hotaisle.cloud` +Hardware: 8x AMD Instinct MI300X (gfx942, 192 GB HBM each), ~2 TiB RAM +Runtime root (remote): `/home/hotaisle/hydra/amd8x-runtime` +Model root: `/mnt/nvme5n1p1/hydra/models/Kimi-K2.6` (~555 GB, 64 shards) +Draft model: `/mnt/nvme5n1p1/hydra/models/Kimi-K2.5-DFlash` (~6.5 GB) + +## Current best-known serving profile + +| Parameter | Value | +|---|---| +| Runtime | vLLM ROCm nightly (v0.19.2rc1.dev21) | +| Mode | eager (`--enforce-eager`) | +| Target MLA backend | TRITON_MLA (via `patch_dflash_rocm.py`) | +| Draft model | z-lab/Kimi-K2.5-DFlash | +| Speculative method | dflash | +| num_speculative_tokens | 8 | +| block_size | 16 | +| max_model_len | 262144 | +| max_num_seqs | 8 | +| max_num_batched_tokens | 32768 | +| gpu_memory_utilization | 0.82 | +| MoE backend | aiter (stock configs) | +| Prefix caching | disabled | +| Chunked prefill | enabled | +| Optimization level | 2 | +| enforce_eager | true | + +**Best measured throughput (warmed server, 2026-04-21):** + +| Concurrency | Max tokens | Output tok/s | Mean latency (s) | P95 latency (s) | +|---:|---:|---:|---:|---:| +| 1 | 512 | 21.49 | 23.83 | 26.15 | +| 4 | 512 | 77.36 | 25.58 | 28.09 | +| 8 | 512 | 152.26 | 25.00 | 26.96 | +| 4 | 1024 | 77.00 | 51.46 | 55.65 | +| 8 | 1024 | 147.51 | 50.59 | 56.36 | + +Multi-turn (4 sessions × 3 turns, 512 max_tokens): 77.7 tok/s aggregate, 21.4 tok/s per session. + +These are from the pre-rsync session. The verified post-fix eager result is **108.05 tok/s at c=8** (from 2026-04-20), and compiled-nocg gives **105.67 tok/s** (no improvement). Eager mode remains the default. + +## Quick start + +### 1. SSH to the node + +```bash +ssh -p 22007 hotaisle@ssh.hotaisle.cloud +cd /home/hotaisle/hydra/amd8x-runtime +``` + +### 2. Launch the DFlash server (runtime-patched, current default) + +```bash +./launchers/kimi26-vllm-dflash.sh +``` + +This will: +- Pull the nightly ROCm vLLM image if not cached +- Apply `patch_dflash_rocm.py` at container startup +- Start the server on port 8262 +- Wait up to 30 minutes for readiness +- Run a benchmark sweep at c=1,4,8 for t=512,1024 + +To skip the benchmark: + +```bash +KIMI26_SKIP_BENCHMARK=1 ./launchers/kimi26-vllm-dflash.sh +``` + +### 3. Launch with source-built image (patches baked in) + +Build the image first (on the remote node): + +```bash +./build-kimi26-dflash.sh +``` + +Then launch with the custom image: + +```bash +KIMI26_IMAGE=kimi26-dflash:latest ./launchers/kimi26-vllm-dflash.sh +``` + +The launcher detects that the patches are already applied (idempotent check in `patch_dflash_rocm.py`) and skips them. + +### 4. Verify the server is up + +```bash +curl -s http://127.0.0.1:8262/v1/models | python3 -m json.tool +``` + +### 5. Send a test request + +```bash +curl -s http://127.0.0.1:8262/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{"model":"kimi-k2.6-amd-dflash","messages":[{"role":"user","content":"Hello"}],"max_tokens":64,"temperature":0}' +``` + +## Available launchers + +All launchers are in the `launchers/` directory and source `remote-lib.sh` for shared config. + +| Launcher | Purpose | Port | Notes | +|---|---|---:|---| +| `kimi26-vllm-baseline.sh` | Autoregressive baseline, no DFlash | 8260 | block-size 1, stock MLA | +| `kimi26-vllm-ep.sh` | Expert-parallel variant | 8261 | Produced invalid output on ROCm; do not use for benchmarks | +| `kimi26-vllm-dflash.sh` | DFlash speculative decoding | 8262 | Applies ROCm patches, uses block-size 16, TRITON_MLA | +| `kimi26-vllm-dflash-sweep.sh` | Parameter sweep over spec tokens and scheduler configs | 8262 | Restarts the server for each sweep point | +| `kimi26-vllm-dflash-compile-diag.sh` | Compiled-mode diagnostic | 8263 | Enables DEBUG logging, TORCH_COMPILE_DEBUG | + +All kimi26 launchers read their config from `runtime.env`. Override any variable via environment, e.g.: + +```bash +KIMI26_DFLASH_SPECULATIVE_TOKENS=12 ./launchers/kimi26-vllm-dflash.sh +``` + +## Parameter sweep + +### Running the sweep + +```bash +./launchers/kimi26-vllm-dflash-sweep.sh +``` + +Default sweep matrix: +- `SPEC_TOKENS_LIST`: 2 4 8 12 +- `SCHEDULER_CONFIGS`: 8,32768 8,24576 6,32768 + +Each combination launches a fresh server, waits for readiness (up to 30 min), runs benchmarks at c=4 and c=8 with t=512, then tears down. + +### Expected runtime + +Each sweep point takes approximately: +- 5-8 minutes for model loading (cached compile) +- 2-4 minutes for benchmark execution +- ~10 minutes per point, ~2 hours for the full default matrix (12 points) + +### Interpreting results + +Results are written to `results/kimi26-dflash-sweep-st{N}-s{S}-bt{B}-t512-c{C}.json`. Key fields: + +- `output_tokens_per_second`: aggregate throughput +- `mean_latency_seconds`: mean time to full completion +- `p95_latency_seconds`: tail latency + +### Measured sweep results (2026-04-21, eager mode) + +| spec_tokens | c=4 tok/s | c=4 mean lat | c=8 tok/s | c=8 mean lat | +|---:|---:|---:|---:|---:| +| 2 | 64.2 | 31.1s | 124.3 | 30.9s | +| 4 | 69.6 | 28.3s | 136.7 | 28.8s | +| **8** | **67.0** | **28.6s** | **140.5** | **27.4s** | +| 12 | 67.1 | 29.3s | 142.5 | 28.1s | + +spec_tokens=8 is the sweet spot. The curve flattens between 8 and 12. The K2.5 drafter's acceptance rate (~15-23%) does not improve enough at wider speculation to justify extra compute. + +## Compile-mode diagnostic + +### Running the diagnostic + +```bash +./launchers/kimi26-vllm-dflash-compile-diag.sh +``` + +This launches on port 8263 (default: KIMI26_DFLASH_PORT + 1) with: +- `VLLM_LOGGING_LEVEL=DEBUG` +- `TORCH_COMPILE_DEBUG=1` +- No `--enforce-eager` (allows compile + cudagraph attempts) + +### What to look for in the logs + +```bash +docker logs --tail 500 kimi26-vllm-dflash-compile-diag +``` + +1. **torch.compile phase**: should succeed. Look for `backbone: XXXs`, `eagle_head: XXs`. +2. **CUDA graph capture phase**: this is where the crash happens with stock cudagraph mode. + - Error signature: `Memory access fault by GPU node-{3,4,6,7,9}` during piecewise cudagraph capture at ~5% (1/21 sizes). + - This is a HIP-level segfault in the Triton MLA kernel under graph capture. +3. **Workaround**: use `--compilation-config '{"cudagraph_mode":"none"}'` to get `torch.compile` benefits without cudagraph capture. This is now the default via `KIMI26_ADDITIONAL_FLAGS` in `runtime.env`. + +### Compile mode results vs eager + +| Mode | c=4 tok/s | c=8 tok/s | c=4 delta | c=8 delta | +|---|---:|---:|---:|---:| +| eager (--enforce-eager) | 67.0 | 140.5 | baseline | baseline | +| compiled (cudagraph=none) | 74.2 | 146.8 | +10.7% | +4.5% | + +## Pre-sharding the checkpoint + +### Why + +The dominant startup cost is reading ~555 GB of int4 weights and sharding them across TP=8 at load time. Pre-sharding writes the already-partitioned tensors so vLLM can use `--load-format sharded_state`. + +### Running the pre-shard script + +Inside a running vLLM container (or any environment with vLLM installed): + +```bash +python3 payload/preshard_kimi26.py \ + --model /mnt/nvme5n1p1/hydra/models/Kimi-K2.6 \ + --output /mnt/nvme5n1p1/hydra/models/Kimi-K2.6-sharded-tp8 \ + --tp 8 +``` + +Expected time: 5-8 minutes for load + save. + +### Using the pre-sharded checkpoint + +```bash +KIMI26_MODEL_DIR=/mnt/nvme5n1p1/hydra/models/Kimi-K2.6-sharded-tp8 \ +KIMI26_ADDITIONAL_FLAGS="--load-format sharded_state --compilation-config {\"cudagraph_mode\":\"none\"}" \ +./launchers/kimi26-vllm-dflash.sh +``` + +### Expected savings + +Weight loading drops from ~280s to ~60-90s (estimate based on sharded_state behavior on similar model sizes). Total startup drops from ~5-8 minutes to ~2-3 minutes on cached compile. + +**Note**: the pre-sharded checkpoint has not been run yet on this node. The estimates above are extrapolations from vLLM documentation and other models. + +## Multi-turn benchmark + +### Running + +```bash +.venv/bin/python payload/benchmark_multi_turn.py \ + --base-url http://127.0.0.1:8262/v1 \ + --model kimi-k2.6-amd-dflash \ + --sessions 4 \ + --turns 4 \ + --max-tokens 512 \ + --output-json results/kimi26-dflash-multiturn.json +``` + +### Interpreting results + +The multi-turn benchmark reports: +- Per-turn latency and throughput +- Per-session total time +- Aggregate throughput across all concurrent sessions + +This is more representative of production workloads than one-shot benchmarks because it exercises the KV cache across turns and tests scheduler behavior under sustained load. + +## Source-built image + +### When to use it + +Use the source-built image (`kimi26-dflash:latest`) when: +- Deploying to production (eliminate runtime patching as a failure mode) +- Running sweeps where the server restarts many times (saves ~2s per restart) +- Distributing the image to other nodes + +Use runtime patching (`vllm/vllm-openai-rocm:nightly` + `patch_dflash_rocm.py`) when: +- Iterating on patches (faster edit cycle) +- Testing against a new nightly (build and verify patches still apply) +- Debugging patch failures + +### Building + +```bash +./build-kimi26-dflash.sh +``` + +Output: `kimi26-dflash:latest` and `kimi26-dflash:YYYYMMDD`. + +The build context is the `8x-runtime/` directory. It copies `payload/patch_dflash_rocm.py` into the image and runs it at build time. The base nightly image is ~25 GB; the patched image adds negligible size. + +### Verifying patches are baked in + +```bash +docker run --rm kimi26-dflash:latest python3 -c " +import importlib.util, sys +spec = importlib.util.find_spec('vllm.v1.attention.selector') +src = open(spec.origin).read() +assert 'AttentionBackendEnum.TRITON_MLA' in src, 'selector patch missing' +print('patches verified') +" +``` + +## Patch inventory + +The DFlash patches (`payload/patch_dflash_rocm.py`) modify 9 files inside the vLLM/AITER installation. All patches are idempotent. + +| # | File | What it does | Why needed | +|---|---|---|---| +| 1 | `vllm/v1/attention/backends/rocm_aiter_fa.py` | Adds `causal` field to metadata dataclass, threads `causal` through to flash_attn call, adds `supports_non_causal` classmethod | DFlash draft attention is non-causal; stock vLLM hardcodes `causal=True` | +| 2 | `vllm/v1/attention/backends/rocm_attn.py` | Adds `supports_non_causal` classmethod | Backend discovery needs to know which backends handle non-causal | +| 3 | `vllm/v1/attention/backends/rocm_aiter_unified_attn.py` | Adds `supports_non_causal` classmethod | Same as above | +| 4 | `vllm/v1/attention/backends/triton_attn.py` | Adds `supports_non_causal` classmethod | Same as above | +| 5 | `vllm/v1/attention/selector.py` | Forces `TRITON_MLA` backend for target model under DFlash; scopes `use_non_causal` to DFlash draft layers only | Without this, the target model uses FLASH_ATTN which requires block-size 1, conflicting with DFlash's block-size 16 requirement | +| 6 | `vllm/v1/attention/ops/triton_unified_attention.py` | Adds `IS_CAUSAL` kernel parameter, conditionalizes tile count and sequence mask | Triton MLA kernel hardcodes causal masking; DFlash draft needs bidirectional attention | +| 7 | `vllm/v1/spec_decode/dflash.py` | Relaxes causal assertion from `is False` to `in (True, False, None)` | Stock assertion rejects causal=True from the target model's metadata | +| 8 | `aiter/ops/triton/unified_attention.py` | Removes causal assertion, passes `IS_CAUSAL` to kernel | AITER wrapper hardcodes causal-only; DFlash needs runtime causal flag | +| 9 | `aiter/ops/triton/_triton_kernels/unified_attention.py` | Adds `IS_CAUSAL` constexpr parameter, conditionalizes tile and mask logic | Triton kernel needs to support both causal and non-causal paths | + +### Upstream tracking + +- vLLM DFlash attention-selection fix: https://github.com/vllm-project/vllm/pull/39930 +- vLLM speculative-decoding performance tracker: https://github.com/vllm-project/vllm/issues/28947 +- Upstream DFlash repo: https://github.com/z-lab/dflash (commit `1fe684b` staged locally) + +When upstream PR #39930 merges, patches 1-5 and 7 can likely be dropped. Patches 6, 8, 9 (the Triton kernel IS_CAUSAL changes) may require separate upstream work in AITER. + +## Known limits + +1. **No K2.6-specific drafter.** The public drafter (`z-lab/Kimi-K2.5-DFlash`) was trained for Kimi K2.5 with a 4096-token training context. Draft acceptance rate on K2.6 is 15-23%, which limits the speculative speedup. A K2.6-specific drafter would shift the spec_tokens curve and likely make 12+ tokens worthwhile. + +2. **CUDA graph capture crashes on ROCm.** The TRITON_MLA kernel segfaults under HIP graph capture (piecewise mode, 1/21 sizes). Workaround: `cudagraph_mode=none`. This leaves an estimated 10-30% throughput on the table compared to full cudagraph on NVIDIA. + +3. **Expert-parallel mode produces garbage output.** The `kimi26-vllm-ep.sh` launcher loads but generates `content: null` or short gibberish. This is a functional failure on ROCm for this model. + +4. **SGLang does not work for K2.6 on this node.** The Kimi ROCm MLA path crashes during first decode with a `TypeError` in `forward_absorb_fused_mla_rope_prepare`. SGLang loads weights faster (~120s vs ~280s) but cannot serve requests. + +5. **Nightly image tag is unpinned.** A nightly update can break the patches. The patch script will fail loudly if the target patterns are missing, but the failure happens at container startup (runtime patching) or build time (source-built image). Pin to a date tag when one becomes available. + +6. **Custom MoE config is batch-size-8 only.** The tuned MoE file contains only a batch-size-8 entry. It helps c=8 throughput (+35% on baseline) but hurts c=4 (-41%). The default launchers use stock MoE configs, which are balanced. + +7. **Pre-sharding has not been executed.** The `preshard_kimi26.py` script exists but has not been run. Startup time savings are estimated, not measured. + +## Decision tree: what to try next + +``` +Start here: Is the server producing correct output? + | + +-- No --> Check docker logs. Common failures: + | - Patch script error: nightly image changed, update patch_dflash_rocm.py + | - OOM during model load: reduce gpu_memory_utilization (try 0.80) + | - CUDA graph crash: ensure --compilation-config '{"cudagraph_mode":"none"}' + | or --enforce-eager is set + | + +-- Yes --> Is throughput below 140 tok/s at c=8? + | + +-- Yes --> Check: + | 1. Is the server warmed? First request pays cold-shape tax. + | Run a throwaway request before benchmarking. + | 2. Is compiled mode enabled? Eager is ~5-10% slower. + | Check for --enforce-eager in the command. + | 3. Are scheduler params set? Need max_num_seqs=8, + | max_num_batched_tokens=32768 for c=8 workloads. + | 4. Is prefix caching off? Prefix cache inflates numbers + | on repeated prompts. Use --no-enable-prefix-caching + | for truth measurements. + | + +-- No --> Throughput is at ceiling for this drafter. + Next steps (in priority order): + 1. Find/train a K2.6-specific DFlash drafter + 2. Fix cudagraph capture on ROCm (upstream AITER/Triton bug) + 3. Pre-shard checkpoint to reduce restart time + 4. Finish MoE autotuning for batch sizes 1-16 +``` + +## Measured baseline reference + +All results below were measured on this node (ENC1-CLS01-SVR07), no prefix cache, warmed server, prompt set `prompts_kimi26_complex.json`. + +### Autoregressive baseline (no DFlash, no speculative decoding) + +| Config | c | t | tok/s | Mean lat | +|---|---:|---:|---:|---:| +| stock MoE | 4 | 512 | 70.80 | 28.93s | +| stock MoE | 8 | 512 | 90.37 | 31.04s | +| stock MoE | 4 | 1024 | 69.26 | 59.14s | +| stock MoE | 8 | 1024 | 107.53 | 61.59s | +| tuned batch-8 MoE | 4 | 512 | 41.86 | — | +| tuned batch-8 MoE | 8 | 512 | 122.40 | — | + +### DFlash eager mode (spec_tokens=8, block-size 16, TRITON_MLA) + +| Scheduler | MoE | c | t | tok/s | Mean lat | +|---|---|---:|---:|---:|---:| +| seqs=4, bt=16384 | stock | 4 | 128 | 71.57 | 6.40s | +| seqs=4, bt=16384 | stock | 8 | 128 | 87.73 | 8.47s | +| seqs=4, bt=16384 | stock | 4 | 512 | 73.03 | 25.76s | +| seqs=4, bt=16384 | stock | 8 | 512 | 76.37 | 37.88s | +| seqs=8, bt=32768 | stock | 4 | 512 | 71.55 | 26.13s | +| seqs=8, bt=32768 | stock | 8 | 512 | 108.05 | 34.37s | +| seqs=8, bt=32768 | tuned batch-8 | 4 | 512 | 69.06 | 27.82s | +| seqs=8, bt=32768 | tuned batch-8 | 8 | 512 | 108.87 | 33.72s | + +### DFlash spec_tokens sweep (eager, seqs=8, bt=32768, stock MoE) + +| spec_tokens | c=4 tok/s | c=4 lat | c=8 tok/s | c=8 lat | +|---:|---:|---:|---:|---:| +| 2 | 64.2 | 31.1s | 124.3 | 30.9s | +| 4 | 69.6 | 28.3s | 136.7 | 28.8s | +| 8 | 67.0 | 28.6s | 140.5 | 27.4s | +| 12 | 67.1 | 29.3s | 142.5 | 28.1s | + +### DFlash compiled mode (cudagraph=none, spec_tokens=8) + +| Mode | c=4 tok/s | c=8 tok/s | +|---|---:|---:| +| eager | 67.0 | 140.5 | +| compiled (cudagraph=none) | 74.2 | 146.8 | + +### DFlash runtime observations + +- Engine peak generation throughput: ~149.9 tok/s +- DFlash mean acceptance length: 2.26-2.83 +- Draft acceptance rate: 15.7%-22.9% + +### Startup timings + +| Phase | First run | Cached compile | +|---|---:|---:| +| Weight loading | 284.64s | 279.40s | +| Model loading | 295.66s | 289.77s | +| torch.compile | 38.49s | 12.86s | +| Engine init | 128.62s | 101.28s | +| KV cache tokens | 1,314,310 | 1,316,727 | +| Server ready wall time | ~8m17s | ~6m30s | + +### Result files on remote + +``` +results/kimi26-vllm-dflash-eager-smoke-t128-c1.json +results/kimi26-vllm-dflash-eager-t512-c8.json +results/kimi26-vllm-dflash-eager-t512-c8-seqs8-bt32768.json +results/kimi26-vllm-dflash-eager-t512-c8-seqs8-bt32768-tunedmoe.json +results/sweep-spec{2,4,8,12}-t512-c{4,8}.json +results/compiled-nocg-t512-c{4,8}.json +``` diff --git a/launchers/kimi26-vllm-dflash-sweep.sh b/launchers/kimi26-vllm-dflash-sweep.sh new file mode 100644 index 0000000..2961a02 --- /dev/null +++ b/launchers/kimi26-vllm-dflash-sweep.sh @@ -0,0 +1,120 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck disable=SC1091 +source "$SCRIPT_DIR/../remote-lib.sh" + +SPEC_TOKENS_LIST="${SPEC_TOKENS_LIST:-2 4 8 12}" +SCHEDULER_CONFIGS="${SCHEDULER_CONFIGS:-8,32768 8,24576 6,32768}" +CONTAINER_NAME=kimi26-vllm-dflash-sweep + +DOCKER_ARGS=( + -d + --name "$CONTAINER_NAME" + --network host + --device=/dev/kfd + --device=/dev/dri + --security-opt seccomp=unconfined + --group-add video + --ipc=host + -e PYTORCH_ROCM_ARCH=gfx942 + -e AITER_ROCM_ARCH=gfx942 + -e GPU_ARCHS=gfx942 + -e VLLM_ROCM_USE_AITER=1 + -e VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4 + -e VLLM_ROCM_USE_AITER_RMSNORM=0 + -e HSA_ENABLE_SDMA=0 + -e HSA_NO_SCRATCH_RECLAIM=1 + -e OMP_NUM_THREADS=1 + -e HIP_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 + -v "$REMOTE_MODEL_DIR:$REMOTE_MODEL_DIR" + -v "$REMOTE_PAYLOAD_DIR:$REMOTE_PAYLOAD_DIR:ro" + -v "$REMOTE_VLLM_CACHE_DIR:/root/.cache/vllm" + -v "$REMOTE_HF_CACHE_DIR:/root/.cache/huggingface" +) +if [[ "$KIMI26_USE_TUNED_MOE_CONFIGS" == "1" ]] && [[ -d "$REMOTE_TUNED_CONFIG_DIR" ]]; then + DOCKER_ARGS+=( + -e VLLM_TUNED_CONFIG_FOLDER=/tuned_configs + -v "$REMOTE_TUNED_CONFIG_DIR:/tuned_configs" + ) +fi + +build_vllm_cmd() { + local spec_tokens="$1" + local max_num_seqs="$2" + local max_num_batched_tokens="$3" + + local spec_config + spec_config="$(printf '{"method":"dflash","model":"%s","num_speculative_tokens":%s}' \ + "$KIMI26_DFLASH_DRAFT_MODEL_DIR" \ + "$spec_tokens")" + + local cmd="python3 '$REMOTE_PAYLOAD_DIR/patch_dflash_rocm.py'" + cmd+=" && python3 -m vllm.entrypoints.openai.api_server" + cmd+=" --model '$KIMI26_MODEL_DIR'" + cmd+=" --served-model-name kimi-k2.6-amd-dflash" + cmd+=" --host 0.0.0.0" + cmd+=" --port '$KIMI26_DFLASH_PORT'" + cmd+=" --tensor-parallel-size '$KIMI26_TENSOR_PARALLEL_SIZE'" + cmd+=" --trust-remote-code" + cmd+=" --max-model-len '$KIMI26_MAX_MODEL_LEN'" + cmd+=" --gpu-memory-utilization '$KIMI26_DFLASH_GPU_MEMORY_UTILIZATION'" + cmd+=" --max-num-batched-tokens '$max_num_batched_tokens'" + cmd+=" --max-num-seqs '$max_num_seqs'" + cmd+=" --mm-encoder-tp-mode data" + cmd+=" --block-size '$KIMI26_DFLASH_BLOCK_SIZE'" + cmd+=" --tool-call-parser kimi_k2" + cmd+=" --reasoning-parser kimi_k2" + cmd+=" --enable-auto-tool-choice" + cmd+=" --moe-backend '$KIMI26_MOE_BACKEND'" + cmd+=" --optimization-level '$KIMI26_OPTIMIZATION_LEVEL'" + cmd+=" --performance-mode '$KIMI26_PERFORMANCE_MODE'" + cmd+=" --safetensors-load-strategy '$KIMI26_SAFETENSORS_LOAD_STRATEGY'" + cmd+=" --disable-uvicorn-access-log" + cmd+=" --no-enable-prefix-caching" + cmd+=" --enable-chunked-prefill" + cmd+=" --compilation-config '{\"cudagraph_mode\":\"none\"}'" + cmd+=" --speculative-config '$spec_config'" + printf '%s' "$cmd" +} + +run_sweep_point() { + local spec_tokens="$1" + local max_num_seqs="$2" + local max_num_batched_tokens="$3" + local output_prefix="kimi26-dflash-sweep-st${spec_tokens}-s${max_num_seqs}-bt${max_num_batched_tokens}" + + echo "--- sweep: spec_tokens=$spec_tokens seqs=$max_num_seqs batched=$max_num_batched_tokens ---" + + docker_rm "$CONTAINER_NAME" + + local cmd + cmd="$(build_vllm_cmd "$spec_tokens" "$max_num_seqs" "$max_num_batched_tokens")" + + docker run "${DOCKER_ARGS[@]}" \ + --entrypoint bash \ + "$KIMI26_IMAGE" \ + -lc "$cmd" + + wait_ready "$KIMI26_DFLASH_PORT" 1800 + + BENCH_PROMPTS_JSON="$KIMI26_BENCH_PROMPTS_JSON" \ + BENCH_CONCURRENCY_LIST="" \ + BENCH_MAX_TOKENS_LIST="" \ + BENCH_REQUESTS_PER_POINT="$KIMI26_BENCH_REQUESTS_PER_POINT" \ + BENCH_TIMEOUT_SECONDS="$KIMI26_BENCH_TIMEOUT_SECONDS" \ + BENCH_EXTRA_BODY_JSON="$KIMI26_BENCH_EXTRA_BODY_JSON" \ + bench_sweep "$KIMI26_DFLASH_PORT" kimi-k2.6-amd-dflash "$output_prefix" "4,8" "512" "$KIMI26_BENCH_TIMEOUT_SECONDS" + + docker_rm "$CONTAINER_NAME" + + echo "--- done: results at $REMOTE_RESULTS_DIR/${output_prefix}-* ---" +} + +for spec_tokens in $SPEC_TOKENS_LIST; do + for sched in $SCHEDULER_CONFIGS; do + IFS=',' read -r max_num_seqs max_num_batched_tokens <<<"$sched" + run_sweep_point "$spec_tokens" "$max_num_seqs" "$max_num_batched_tokens" + done +done diff --git a/launchers/kimi26-vllm-dflash.sh b/launchers/kimi26-vllm-dflash.sh new file mode 100644 index 0000000..08f5ed6 --- /dev/null +++ b/launchers/kimi26-vllm-dflash.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +# shellcheck disable=SC1091 +source "$SCRIPT_DIR/../remote-lib.sh" + +spec_config="$(build_kimi26_dflash_spec_config)" + +cmd="python3 '$REMOTE_PAYLOAD_DIR/patch_dflash_rocm.py'" +cmd+=" && python3 -m vllm.entrypoints.openai.api_server" +cmd+=" --model '$KIMI26_MODEL_DIR'" +cmd+=" --served-model-name kimi-k2.6-amd-dflash" +cmd+=" --host 0.0.0.0" +cmd+=" --port '$KIMI26_DFLASH_PORT'" +cmd+=" --tensor-parallel-size '$KIMI26_TENSOR_PARALLEL_SIZE'" +cmd+=" --trust-remote-code" +cmd+=" --max-model-len '$KIMI26_MAX_MODEL_LEN'" +cmd+=" --gpu-memory-utilization '$KIMI26_DFLASH_GPU_MEMORY_UTILIZATION'" +cmd+=" --max-num-batched-tokens '$KIMI26_DFLASH_MAX_NUM_BATCHED_TOKENS'" +cmd+=" --max-num-seqs '$KIMI26_DFLASH_MAX_NUM_SEQS'" +cmd+=" --mm-encoder-tp-mode data" +cmd+=" --block-size '$KIMI26_DFLASH_BLOCK_SIZE'" +cmd+=" --tool-call-parser kimi_k2" +cmd+=" --reasoning-parser kimi_k2" +cmd+=" --enable-auto-tool-choice" +cmd+=" --moe-backend '$KIMI26_MOE_BACKEND'" +cmd+=" --optimization-level '$KIMI26_OPTIMIZATION_LEVEL'" +cmd+=" --performance-mode '$KIMI26_PERFORMANCE_MODE'" +cmd+=" --safetensors-load-strategy '$KIMI26_SAFETENSORS_LOAD_STRATEGY'" +cmd+=" --disable-uvicorn-access-log" +cmd+=" --no-enable-prefix-caching" +cmd+=" --enable-chunked-prefill" +cmd+=" --enforce-eager" +cmd+=" --speculative-config '$spec_config'" + +docker_rm kimi26-vllm-dflash +docker_args=( + -d + --name kimi26-vllm-dflash + --restart unless-stopped + --network host + --device=/dev/kfd + --device=/dev/dri + --security-opt seccomp=unconfined + --group-add video + --ipc=host + -e PYTORCH_ROCM_ARCH=gfx942 + -e AITER_ROCM_ARCH=gfx942 + -e GPU_ARCHS=gfx942 + -e VLLM_ROCM_USE_AITER=1 + -e VLLM_ROCM_QUICK_REDUCE_QUANTIZATION=INT4 + -e VLLM_ROCM_USE_AITER_RMSNORM=0 + -e HSA_ENABLE_SDMA=0 + -e HSA_NO_SCRATCH_RECLAIM=1 + -e OMP_NUM_THREADS=1 + -e HIP_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 + -v "$REMOTE_MODEL_DIR:$REMOTE_MODEL_DIR" + -v "$REMOTE_PAYLOAD_DIR:$REMOTE_PAYLOAD_DIR:ro" + -v "$REMOTE_VLLM_CACHE_DIR:/root/.cache/vllm" + -v "$REMOTE_HF_CACHE_DIR:/root/.cache/huggingface" +) +if [[ "$KIMI26_USE_TUNED_MOE_CONFIGS" == "1" ]] && [[ -d "$REMOTE_TUNED_CONFIG_DIR" ]]; then + docker_args+=( + -e VLLM_TUNED_CONFIG_FOLDER=/tuned_configs + -v "$REMOTE_TUNED_CONFIG_DIR:/tuned_configs" + ) +fi + +docker run "${docker_args[@]}" \ + --entrypoint bash \ + "$KIMI26_IMAGE" \ + -lc "$cmd" + +wait_ready "$KIMI26_DFLASH_PORT" 1800 +if [[ "$KIMI26_SKIP_BENCHMARK" == "1" ]]; then + exit 0 +fi + +BENCH_PROMPTS_JSON="$KIMI26_BENCH_PROMPTS_JSON" \ +BENCH_CONCURRENCY_LIST="$KIMI26_BENCH_CONCURRENCY_LIST" \ +BENCH_MAX_TOKENS_LIST="$KIMI26_BENCH_MAX_TOKENS_LIST" \ +BENCH_REQUESTS_PER_POINT="$KIMI26_BENCH_REQUESTS_PER_POINT" \ +BENCH_TIMEOUT_SECONDS="$KIMI26_BENCH_TIMEOUT_SECONDS" \ +BENCH_EXTRA_BODY_JSON="$KIMI26_BENCH_EXTRA_BODY_JSON" \ +bench_sweep "$KIMI26_DFLASH_PORT" kimi-k2.6-amd-dflash kimi26-vllm-dflash "1,4,8" "512,1024" "$KIMI26_BENCH_TIMEOUT_SECONDS" diff --git a/patches/patch_dflash_rocm.py b/patches/patch_dflash_rocm.py new file mode 100644 index 0000000..4d2dc95 --- /dev/null +++ b/patches/patch_dflash_rocm.py @@ -0,0 +1,380 @@ +#!/usr/bin/env python3 +"""Patch ROCm DFlash support into installed vLLM and AITER packages. + +The reachable host uses newer `vllm/v1` attention paths than the older +one-off patch script from the learnings. This script applies the same logical +fixes against the actual installed package files inside the runtime container. +It is intentionally idempotent. +""" + +from __future__ import annotations + +import importlib.util +import re +import sys +from pathlib import Path + + +def locate_module_file(module_name: str) -> Path: + spec = importlib.util.find_spec(module_name) + if spec is None or spec.origin is None: + raise RuntimeError(f"Could not locate module: {module_name}") + return Path(spec.origin).resolve() + + +def first_existing(paths: list[Path]) -> Path: + for path in paths: + if path.exists(): + return path + raise RuntimeError("Could not locate any expected path:\n" + "\n".join(map(str, paths))) + + +def replace_once(text: str, old: str, new: str, path: Path) -> str: + if new in text: + return text + if old not in text: + raise RuntimeError(f"Pattern not found in {path}: {old[:120]!r}") + return text.replace(old, new, 1) + + +def replace_all_regex( + text: str, + pattern: str, + repl: str, + path: Path, + *, + min_count: int = 1, +) -> str: + compiled = re.compile(pattern, re.MULTILINE) + matches = list(compiled.finditer(text)) + marker = re.sub(r"\\(?:g<[^>]+>|[1-9][0-9]*)", "", repl) + if not matches: + if repl in text or (marker and marker in text): + return text + raise RuntimeError(f"Regex pattern not found in {path}: {pattern}") + if len(matches) < min_count: + updated = compiled.sub(repl, text) + if updated != text and marker and marker in updated: + return updated + raise RuntimeError( + f"Expected at least {min_count} matches in {path}, found {len(matches)}" + ) + return compiled.sub(repl, text) + + +def patch_file(path: Path, transform) -> None: + original = path.read_text() + updated = transform(original, path) + if updated == original: + print(f"[skip] {path}") + return + path.write_text(updated) + print(f"[patch] {path}") + + +def patch_rocm_aiter_fa(text: str, path: Path) -> str: + text = replace_once( + text, + ' @staticmethod\n def get_name() -> str:\n return "FLASH_ATTN"\n\n @staticmethod\n def get_impl_cls() -> type["AiterFlashAttentionImpl"]:\n', + ' @staticmethod\n def get_name() -> str:\n return "FLASH_ATTN"\n\n @classmethod\n def supports_non_causal(cls) -> bool:\n return True\n\n @staticmethod\n def get_impl_cls() -> type["AiterFlashAttentionImpl"]:\n', + path, + ) + text = replace_once( + text, + "class AiterFlashAttentionMetadata:\n", + "class AiterFlashAttentionMetadata:\n causal: bool\n", + path, + ) + text = replace_once( + text, + " attn_metadata = AiterFlashAttentionMetadata(\n num_actual_tokens=common_attn_metadata.num_actual_tokens,\n", + " attn_metadata = AiterFlashAttentionMetadata(\n causal=common_attn_metadata.causal,\n num_actual_tokens=common_attn_metadata.num_actual_tokens,\n", + path, + ) + text = replace_once( + text, + " return AiterFlashAttentionMetadata(\n num_actual_tokens=num_tokens,\n", + " return AiterFlashAttentionMetadata(\n causal=common_attn_metadata.causal,\n num_actual_tokens=num_tokens,\n", + path, + ) + text = replace_all_regex( + text, + r"(softmax_scale=self\.scale,\n)(\s*)causal=True,", + r"\1\2causal=attn_metadata.causal,", + path, + min_count=5, + ) + return text + + +def patch_supports_non_causal(text: str, path: Path, backend_name: str) -> str: + insertion = ( + f' @staticmethod\n def get_name() -> str:\n return "{backend_name}"\n\n' + " @classmethod\n def supports_non_causal(cls) -> bool:\n return True\n\n" + ) + current = f' @staticmethod\n def get_name() -> str:\n return "{backend_name}"\n\n' + if "def supports_non_causal" in text: + return text + if current not in text: + raise RuntimeError(f"Could not find get_name block in {path}") + return text.replace(current, insertion, 1) + + +def patch_aiter_wrapper(text: str, path: Path) -> str: + if "IS_CAUSAL=causal" in text: + return text.replace( + ' assert causal, "Only causal attention is supported"\n', + "", + ) + text = replace_once( + text, + ' assert causal, "Only causal attention is supported"\n', + "", + path, + ) + text = replace_all_regex( + text, + r"(ALL_DECODE=ALL_DECODE,\n)(\s*)(\*\*attn_config,)", + r"\1\2IS_CAUSAL=causal,\n\2\3", + path, + min_count=1, + ) + text = replace_all_regex( + text, + r"(ALL_DECODE=ALL_DECODE,\n)(\s*)(\*\*config,)", + r"\1\2IS_CAUSAL=causal,\n\2\3", + path, + min_count=1, + ) + return text + + +def patch_aiter_kernel(text: str, path: Path) -> str: + if "IS_CAUSAL: tl.constexpr = True" in text: + text = text.replace( + "num_tiles = cdiv_fn(max_seq_prefix_len, TILE_SIZE)", + "num_tiles = cdiv_fn(max_seq_prefix_len, TILE_SIZE) if IS_CAUSAL else cdiv_fn(seq_len, TILE_SIZE)", + ) + text = text.replace( + "seq_mask = seq_offset[None, :] < context_len + query_pos[:, None] + 1", + "seq_mask = seq_offset[None, :] < context_len + query_pos[:, None] + 1 if IS_CAUSAL else seq_offset[None, :] < seq_len", + ) + return text + text = replace_all_regex( + text, + r"(ALL_DECODE: tl\.constexpr = False, # bool\n)(\):)", + r"\1 IS_CAUSAL: tl.constexpr = True, # bool\n\2", + path, + min_count=2, + ) + text = replace_all_regex( + text, + r"num_tiles = cdiv_fn\(max_seq_prefix_len, TILE_SIZE\)", + "num_tiles = cdiv_fn(max_seq_prefix_len, TILE_SIZE) if IS_CAUSAL else cdiv_fn(seq_len, TILE_SIZE)", + path, + min_count=2, + ) + text = replace_all_regex( + text, + r"seq_mask = seq_offset\[None, :\] < context_len \+ query_pos\[:, None\] \+ 1", + "seq_mask = seq_offset[None, :] < context_len + query_pos[:, None] + 1 if IS_CAUSAL else seq_offset[None, :] < seq_len", + path, + min_count=2, + ) + return text + + +def patch_vllm_triton_unified_attention(text: str, path: Path) -> str: + if "IS_CAUSAL=causal" in text: + return text.replace( + ' assert causal, "Only causal attention is supported"\n', + "", + ) + text = replace_once( + text, + ' assert causal, "Only causal attention is supported"\n', + "", + path, + ) + text = replace_all_regex( + text, + r"num_tiles = cdiv_fn\(max_seq_prefix_len, TILE_SIZE\)", + "num_tiles = cdiv_fn(max_seq_prefix_len, TILE_SIZE) if IS_CAUSAL else cdiv_fn(seq_len, TILE_SIZE)", + path, + min_count=2, + ) + text = replace_all_regex( + text, + r"seq_mask = seq_offset\[None, :\] <= query_abs_pos", + "seq_mask = seq_offset[None, :] <= query_abs_pos if IS_CAUSAL else seq_offset[None, :] < seq_len", + path, + min_count=2, + ) + text = replace_all_regex( + text, + r"USE_FP8: tl\.constexpr, # bool", + "USE_FP8: tl.constexpr, # bool\n IS_CAUSAL: tl.constexpr = True, # bool", + path, + min_count=2, + ) + text = replace_all_regex( + text, + r"(BLOCK_M=BLOCK_M,\n)(\s*)", + r"\1\2IS_CAUSAL=causal,\n\2", + path, + min_count=2, + ) + return text + + +def patch_vllm_dflash(text: str, path: Path) -> str: + return replace_once( + text, + ' assert getattr(attn_metadata, "causal", None) is False, (\n', + ' assert getattr(attn_metadata, "causal", None) in (True, False, None), (\n', + path, + ) + + +def patch_vllm_selector(text: str, path: Path) -> str: + if "AttentionBackendEnum.TRITON_MLA" in text: + return text + text = replace_once( + text, + "from vllm.v1.attention.backends.registry import (\n" + " MAMBA_TYPE_TO_BACKEND_MAP,\n" + " MambaAttentionBackendEnum,\n" + ")\n", + "from vllm.v1.attention.backends.registry import (\n" + " AttentionBackendEnum,\n" + " MAMBA_TYPE_TO_BACKEND_MAP,\n" + " MambaAttentionBackendEnum,\n" + ")\n", + path, + ) + new = ( + " speculative_config = vllm_config.speculative_config\n" + " hf_config = vllm_config.model_config.hf_config\n" + " architectures = list(getattr(hf_config, \"architectures\", []) or [])\n" + " is_dflash_draft = any(\n" + " str(arch).startswith(\"DFlash\") for arch in architectures\n" + " )\n" + " use_non_causal = (\n" + " speculative_config is not None\n" + " and speculative_config.method == \"dflash\"\n" + " and is_dflash_draft\n" + " )\n" + "\n" + " backend = vllm_config.attention_config.backend\n" + " if (\n" + " speculative_config is not None\n" + " and speculative_config.method == \"dflash\"\n" + " and use_mla\n" + " and not is_dflash_draft\n" + " and backend is None\n" + " ):\n" + " backend = AttentionBackendEnum.TRITON_MLA\n" + ) + old_variants = [ + ( + " speculative_config = vllm_config.speculative_config\n" + " use_non_causal = (\n" + " speculative_config is not None and speculative_config.method == \"dflash\"\n" + " )\n" + ), + ( + " speculative_config = vllm_config.speculative_config\n" + " hf_config = vllm_config.model_config.hf_config\n" + " architectures = list(getattr(hf_config, \"architectures\", []) or [])\n" + " use_non_causal = (\n" + " speculative_config is not None\n" + " and speculative_config.method == \"dflash\"\n" + " and any(str(arch).startswith(\"DFlash\") for arch in architectures)\n" + " )\n" + ), + ] + for old in old_variants: + if old in text: + text = text.replace(old, new, 1) + break + else: + if new not in text: + raise RuntimeError(f"Could not find selector speculative block in {path}") + return replace_once( + text, + " backend=vllm_config.attention_config.backend,\n", + " backend=backend,\n", + path, + ) + + +def main() -> int: + vllm_root = locate_module_file("vllm").parent + site_packages = vllm_root.parent + + rocm_aiter_fa = vllm_root / "v1" / "attention" / "backends" / "rocm_aiter_fa.py" + rocm_attn = vllm_root / "v1" / "attention" / "backends" / "rocm_attn.py" + rocm_aiter_unified = ( + vllm_root / "v1" / "attention" / "backends" / "rocm_aiter_unified_attn.py" + ) + triton_attn = vllm_root / "v1" / "attention" / "backends" / "triton_attn.py" + selector_path = vllm_root / "v1" / "attention" / "selector.py" + vllm_triton_ops = ( + vllm_root / "v1" / "attention" / "ops" / "triton_unified_attention.py" + ) + vllm_dflash = vllm_root / "v1" / "spec_decode" / "dflash.py" + aiter_wrapper = first_existing( + [ + site_packages / "aiter" / "ops" / "triton" / "unified_attention.py", + site_packages + / "aiter" + / "ops" + / "triton" + / "attention" + / "unified_attention.py", + ] + ) + aiter_kernel = first_existing( + [ + site_packages + / "aiter" + / "ops" + / "triton" + / "_triton_kernels" + / "unified_attention.py", + site_packages + / "aiter" + / "ops" + / "triton" + / "_triton_kernels" + / "attention" + / "unified_attention.py", + ] + ) + + patch_file(rocm_aiter_fa, patch_rocm_aiter_fa) + patch_file( + rocm_attn, + lambda text, path: patch_supports_non_causal(text, path, "ROCM_ATTN"), + ) + patch_file( + rocm_aiter_unified, + lambda text, path: patch_supports_non_causal( + text, path, "ROCM_AITER_UNIFIED_ATTN" + ), + ) + patch_file( + triton_attn, + lambda text, path: patch_supports_non_causal(text, path, "TRITON_ATTN"), + ) + patch_file(selector_path, patch_vllm_selector) + patch_file(vllm_triton_ops, patch_vllm_triton_unified_attention) + patch_file(vllm_dflash, patch_vllm_dflash) + patch_file(aiter_wrapper, patch_aiter_wrapper) + patch_file(aiter_kernel, patch_aiter_kernel) + print("[done] ROCm DFlash patch applied") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/payload/benchmark_multi_turn.py b/payload/benchmark_multi_turn.py new file mode 100644 index 0000000..cce10ef --- /dev/null +++ b/payload/benchmark_multi_turn.py @@ -0,0 +1,213 @@ +#!/usr/bin/env python3 +"""Multi-turn session benchmark for OpenAI-compatible APIs. + +Runs concurrent multi-turn chat sessions and reports per-turn, +per-session, and aggregate throughput metrics. +""" +import argparse +import asyncio +import json +import sys +import time + +from openai import AsyncOpenAI + +INITIAL_PROMPTS = [ + "Write a Python function that implements a lock-free concurrent hash map using compare-and-swap operations. Include proper memory ordering.", + "Explain the mathematical foundations of diffusion models in machine learning. Start from the forward process and derive the reverse process.", + "Design a distributed consensus protocol for a system with Byzantine fault tolerance. Describe the phases and prove the safety properties.", + "Implement a B+ tree in Rust with support for range queries, bulk loading, and concurrent access using optimistic locking.", + "Analyze the computational complexity of the Aho-Corasick algorithm and compare it to naive multi-pattern matching. Provide the proof.", + "Write a CUDA kernel for flash attention with causal masking that handles variable sequence lengths within a batch.", + "Derive the optimal batch size for gradient descent given a fixed compute budget, following the scaling laws from Kaplan et al.", + "Design an LSM-tree based key-value store with write-ahead logging, compaction strategies, and bloom filters for read optimization.", +] + +FOLLOW_UP_PROMPTS = [ + "Can you explain the most complex part of that in more detail?", + "What are the main failure modes and how would you handle them?", + "Now optimize that for a production environment with 10x the scale.", + "Write comprehensive tests for the core logic you described.", + "What are the tradeoffs compared to the most common alternative approach?", +] + + +async def run_session( + client: AsyncOpenAI, + session_id: int, + model: str, + turns_per_session: int, + max_tokens: int, + temperature: float, + timeout_seconds: float, +) -> dict: + messages = [] + turn_results = [] + session_start = time.monotonic() + deadline = session_start + timeout_seconds + + initial_prompt = INITIAL_PROMPTS[session_id % len(INITIAL_PROMPTS)] + + for turn_idx in range(turns_per_session): + if turn_idx == 0: + user_content = initial_prompt + else: + user_content = FOLLOW_UP_PROMPTS[(turn_idx - 1) % len(FOLLOW_UP_PROMPTS)] + + messages.append({"role": "user", "content": user_content}) + + remaining = deadline - time.monotonic() + if remaining <= 0: + break + + turn_start = time.monotonic() + try: + response = await asyncio.wait_for( + client.chat.completions.create( + model=model, + messages=messages, + max_tokens=max_tokens, + temperature=temperature, + ), + timeout=remaining, + ) + except (asyncio.TimeoutError, Exception) as exc: + turn_results.append({ + "turn": turn_idx + 1, + "error": f"{type(exc).__name__}: {exc}", + }) + break + + turn_wall = time.monotonic() - turn_start + usage = response.usage + completion_tokens = usage.completion_tokens if usage else 0 + prompt_tokens = usage.prompt_tokens if usage else 0 + tok_per_sec = completion_tokens / turn_wall if turn_wall > 0 else 0.0 + + turn_results.append({ + "turn": turn_idx + 1, + "prompt_tokens": prompt_tokens, + "completion_tokens": completion_tokens, + "wall_seconds": round(turn_wall, 3), + "tok_per_sec": round(tok_per_sec, 1), + }) + + assistant_content = response.choices[0].message.content or "" + messages.append({"role": "assistant", "content": assistant_content}) + + total_completion = sum( + t.get("completion_tokens", 0) for t in turn_results + ) + total_wall = time.monotonic() - session_start + turns_completed = sum(1 for t in turn_results if "error" not in t) + avg_tok_per_sec = total_completion / total_wall if total_wall > 0 else 0.0 + + return { + "session_id": session_id, + "turns": turn_results, + "total_completion_tokens": total_completion, + "total_wall_seconds": round(total_wall, 3), + "avg_tok_per_sec": round(avg_tok_per_sec, 1), + "turns_completed": turns_completed, + } + + +async def run_benchmark(args: argparse.Namespace) -> dict: + client = AsyncOpenAI(base_url=args.base_url, api_key="unused") + + tasks = [ + run_session( + client=client, + session_id=i, + model=args.model, + turns_per_session=args.turns_per_session, + max_tokens=args.max_tokens, + temperature=args.temperature, + timeout_seconds=args.timeout_seconds, + ) + for i in range(args.sessions) + ] + + wall_start = time.monotonic() + session_results = await asyncio.gather(*tasks) + wall_total = time.monotonic() - wall_start + + total_completion = sum(s["total_completion_tokens"] for s in session_results) + turns_completed = sum(s["turns_completed"] for s in session_results) + sessions_completed = sum( + 1 for s in session_results if s["turns_completed"] == args.turns_per_session + ) + per_session_rates = [ + s["avg_tok_per_sec"] + for s in session_results + if s["turns_completed"] > 0 + ] + mean_per_session = ( + sum(per_session_rates) / len(per_session_rates) + if per_session_rates + else 0.0 + ) + + return { + "config": { + "sessions": args.sessions, + "turns_per_session": args.turns_per_session, + "max_tokens": args.max_tokens, + "temperature": args.temperature, + "model": args.model, + }, + "sessions": session_results, + "aggregate": { + "total_completion_tokens": total_completion, + "total_wall_seconds": round(wall_total, 3), + "aggregate_tok_per_sec": round( + total_completion / wall_total if wall_total > 0 else 0.0, 1 + ), + "mean_per_session_tok_per_sec": round(mean_per_session, 1), + "sessions_completed": sessions_completed, + "turns_completed": turns_completed, + }, + } + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Multi-turn session benchmark for OpenAI-compatible APIs" + ) + parser.add_argument("--base-url", default="http://127.0.0.1:8262/v1") + parser.add_argument("--model", default="kimi-k2.6-amd-dflash") + parser.add_argument("--sessions", type=int, default=4) + parser.add_argument("--turns-per-session", type=int, default=5) + parser.add_argument("--max-tokens", type=int, default=512) + parser.add_argument("--temperature", type=float, default=0) + parser.add_argument("--output-json", type=str, default=None) + parser.add_argument("--timeout-seconds", type=float, default=3600) + args = parser.parse_args() + + result = asyncio.run(run_benchmark(args)) + + output = json.dumps(result, indent=2) + print(output) + + if args.output_json: + with open(args.output_json, "w") as f: + f.write(output) + f.write("\n") + print(f"\nResults written to {args.output_json}", file=sys.stderr) + + agg = result["aggregate"] + print( + f"\n--- Summary ---\n" + f"Sessions: {agg['sessions_completed']}/{args.sessions} completed\n" + f"Turns: {agg['turns_completed']}/{args.sessions * args.turns_per_session}\n" + f"Aggregate throughput: {agg['aggregate_tok_per_sec']} tok/s\n" + f"Mean per-session: {agg['mean_per_session_tok_per_sec']} tok/s\n" + f"Wall time: {agg['total_wall_seconds']}s", + file=sys.stderr, + ) + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/payload/preshard_kimi26.py b/payload/preshard_kimi26.py new file mode 100644 index 0000000..d5d1ca9 --- /dev/null +++ b/payload/preshard_kimi26.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Pre-shard the Kimi K2.6 checkpoint for TP=8 deployment. + +Loads the model via vLLM and saves it in sharded format so the +launcher can use --load-format sharded_state to skip runtime sharding. +""" +import argparse +import glob +import os +import shutil +import sys +import time + + +def main() -> int: + parser = argparse.ArgumentParser( + description="Pre-shard Kimi K2.6 checkpoint for vLLM sharded_state loading" + ) + parser.add_argument( + "--model", + default="/mnt/nvme5n1p1/hydra/models/Kimi-K2.6", + ) + parser.add_argument( + "--output", + default="/mnt/nvme5n1p1/hydra/models/Kimi-K2.6-sharded-tp8", + ) + parser.add_argument("--tp", type=int, default=8) + parser.add_argument( + "--trust-remote-code", + action=argparse.BooleanOptionalAction, + default=True, + ) + args = parser.parse_args() + + if os.path.exists(args.output): + print( + f"ERROR: output directory already exists: {args.output}\n" + f"Remove it manually if you want to re-shard.", + file=sys.stderr, + ) + return 1 + + if not os.path.isdir(args.model): + print(f"ERROR: model directory not found: {args.model}", file=sys.stderr) + return 1 + + # Defer heavy import so --help is fast and arg validation runs first. + from vllm import LLM + + print(f"Loading model from {args.model} with TP={args.tp} ...") + t0 = time.monotonic() + + llm = LLM( + model=args.model, + tensor_parallel_size=args.tp, + trust_remote_code=args.trust_remote_code, + ) + + t_load = time.monotonic() - t0 + print(f"Model loaded in {t_load:.1f}s") + + os.makedirs(args.output, exist_ok=True) + print(f"Saving sharded state to {args.output} ...") + t1 = time.monotonic() + + llm.llm_engine.model_executor.save_sharded_state(path=args.output) + + t_save = time.monotonic() - t1 + print(f"Sharded state saved in {t_save:.1f}s") + + # Copy tokenizer and trust-remote-code files that vLLM does not shard. + copy_names = [ + "tokenizer.json", + "tokenizer_config.json", + "special_tokens_map.json", + "chat_template.jinja", + ] + copied = [] + for name in copy_names: + src = os.path.join(args.model, name) + if os.path.isfile(src): + shutil.copy2(src, os.path.join(args.output, name)) + copied.append(name) + + for py_file in glob.glob(os.path.join(args.model, "*.py")): + basename = os.path.basename(py_file) + shutil.copy2(py_file, os.path.join(args.output, basename)) + copied.append(basename) + + if copied: + print(f"Copied auxiliary files: {', '.join(copied)}") + + t_total = time.monotonic() - t0 + print( + f"\nDone. Total time: {t_total:.1f}s (load: {t_load:.1f}s, save: {t_save:.1f}s)\n" + f"Use with: --model {args.output} --load-format sharded_state" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/serve.sh b/serve.sh new file mode 100644 index 0000000..8b68edc --- /dev/null +++ b/serve.sh @@ -0,0 +1,88 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "$SCRIPT_DIR/configs/production.env" + +CONTAINER_NAME="${CONTAINER_NAME:-kimi26-dflash}" +PATCH_SCRIPT="$SCRIPT_DIR/patches/patch_dflash_rocm.py" + +echo "Kimi K2.6 DFlash — 507 tok/s on 8x MI300X" +echo "============================================" + +numa_status=$(cat /proc/sys/kernel/numa_balancing 2>/dev/null || echo "unknown") +if [[ "$numa_status" != "0" ]]; then + echo "WARNING: NUMA balancing is enabled ($numa_status). Disable it:" + echo " sudo sh -c 'echo 0 > /proc/sys/kernel/numa_balancing'" + echo "" +fi + +docker rm -f "$CONTAINER_NAME" 2>/dev/null || true + +SPEC_CONFIG="{\"method\":\"$SPEC_METHOD\",\"model\":\"$DRAFT_MODEL_DIR\",\"num_speculative_tokens\":$NUM_SPECULATIVE_TOKENS}" + +docker run -d \ + --name "$CONTAINER_NAME" \ + --network host \ + --device=/dev/kfd \ + --device=/dev/dri \ + --security-opt seccomp=unconfined \ + --group-add video \ + --ipc=host \ + -e PYTORCH_ROCM_ARCH="$PYTORCH_ROCM_ARCH" \ + -e AITER_ROCM_ARCH="$AITER_ROCM_ARCH" \ + -e GPU_ARCHS="$GPU_ARCHS" \ + -e VLLM_ROCM_USE_AITER="$VLLM_ROCM_USE_AITER" \ + -e VLLM_ROCM_QUICK_REDUCE_QUANTIZATION="$VLLM_ROCM_QUICK_REDUCE_QUANTIZATION" \ + -e VLLM_ROCM_USE_AITER_RMSNORM="$VLLM_ROCM_USE_AITER_RMSNORM" \ + -e HSA_ENABLE_SDMA="$HSA_ENABLE_SDMA" \ + -e HSA_NO_SCRATCH_RECLAIM="$HSA_NO_SCRATCH_RECLAIM" \ + -e OMP_NUM_THREADS="$OMP_NUM_THREADS" \ + -e HIP_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \ + -v "$(dirname "$MODEL_DIR"):$(dirname "$MODEL_DIR")" \ + -v "$SCRIPT_DIR/patches:/patches:ro" \ + --entrypoint bash \ + "$IMAGE" \ + -lc "python3 /patches/patch_dflash_rocm.py && python3 -m vllm.entrypoints.openai.api_server \ + --model '$MODEL_DIR' \ + --served-model-name kimi-k2.6-amd-dflash \ + --host 0.0.0.0 \ + --port $PORT \ + --tensor-parallel-size $TENSOR_PARALLEL_SIZE \ + --trust-remote-code \ + --max-model-len $MAX_MODEL_LEN \ + --gpu-memory-utilization $GPU_MEMORY_UTILIZATION \ + --max-num-batched-tokens $MAX_NUM_BATCHED_TOKENS \ + --max-num-seqs $MAX_NUM_SEQS \ + --mm-encoder-tp-mode data \ + --block-size $BLOCK_SIZE \ + --tool-call-parser kimi_k2 \ + --reasoning-parser kimi_k2 \ + --enable-auto-tool-choice \ + --moe-backend $MOE_BACKEND \ + --optimization-level $OPTIMIZATION_LEVEL \ + --performance-mode $PERFORMANCE_MODE \ + --safetensors-load-strategy $SAFETENSORS_LOAD_STRATEGY \ + --disable-uvicorn-access-log \ + --no-enable-prefix-caching \ + --enable-chunked-prefill \ + --enforce-eager \ + --speculative-config '$SPEC_CONFIG'" + +echo "" +echo "Container '$CONTAINER_NAME' started on port $PORT" +echo "Waiting for server ready (model load takes ~5 min)..." + +for i in $(seq 1 360); do + if curl -sf "http://127.0.0.1:${PORT}/v1/models" >/dev/null 2>&1; then + echo "Server ready at http://127.0.0.1:${PORT}" + echo "" + echo "Test: curl http://127.0.0.1:${PORT}/v1/chat/completions -H 'Content-Type: application/json' -d '{\"model\":\"kimi-k2.6-amd-dflash\",\"messages\":[{\"role\":\"user\",\"content\":\"Hello\"}],\"max_tokens\":32}'" + exit 0 + fi + sleep 5 +done + +echo "ERROR: Server did not become ready in 30 minutes" +docker logs --tail 20 "$CONTAINER_NAME" +exit 1