interp-engine 1.5.0__tar.gz → 1.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {interp_engine-1.5.0 → interp_engine-1.6.0}/PKG-INFO +15 -14
- {interp_engine-1.5.0 → interp_engine-1.6.0}/README.md +14 -13
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/report_bench.py +16 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/deepseek-v4-flash-0731__eager.json +47 -32
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/deepseek-v4-flash-0731__vllm-cudagraph.json +41 -27
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/deepseek-v4-flash-0731__vllm-static.json +32 -34
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/deepseek-v4-flash-0731__vllm.json +49 -35
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/gemma-2-2b__eager.json +30 -28
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/gemma-2-2b__vllm-cudagraph.json +27 -25
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/gemma-2-2b__vllm-static.json +32 -30
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/gemma-2-2b__vllm.json +33 -31
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/llama-3.1-8b__eager.json +30 -28
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/llama-3.1-8b__vllm-cudagraph.json +26 -24
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/llama-3.1-8b__vllm-static.json +31 -29
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/llama-3.1-8b__vllm.json +33 -31
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3-4b__eager.json +31 -29
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3-4b__vllm-cudagraph.json +27 -25
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3-4b__vllm-static.json +33 -31
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3-4b__vllm.json +35 -33
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3.8-27b__eager.json +30 -28
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3.8-27b__vllm-cudagraph.json +25 -23
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3.8-27b__vllm-static.json +31 -29
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/qwen3.8-27b__vllm.json +33 -31
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results-latest.md +56 -56
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/run_bench.py +14 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/workloads.py +22 -9
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/PERFORMANCE.md +6 -5
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/__init__.py +3 -1
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/capture.py +19 -11
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/facts.py +22 -5
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/memory.py +163 -29
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/model.py +135 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_backend.py +5 -1
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/_hooks.py +14 -4
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/_tree.py +50 -4
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/requests.py +8 -2
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/static.py +123 -26
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/steering.py +9 -2
- {interp_engine-1.5.0 → interp_engine-1.6.0}/pyproject.toml +1 -1
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_bench_workloads.py +24 -1
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_facts.py +34 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_family_points.py +81 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_load.py +160 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_memory.py +98 -6
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_qkv_layout.py +18 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_static_set.py +200 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_hyper_connections.py +5 -1
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_new_points.py +28 -0
- interp_engine-1.5.0/benchmarks/results/deepseek-v4-flash-0731__vllm-dspark-cudagraph.json +0 -104
- interp_engine-1.5.0/benchmarks/results/deepseek-v4-flash-0731__vllm-dspark.json +0 -179
- {interp_engine-1.5.0 → interp_engine-1.6.0}/.gitignore +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/LICENSE +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/README.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/__init__.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/bench_spec.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/cells.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/probe.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/probe_lens_stream.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/publish.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/run_all.sh +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/AGENT_INTEGRATION.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/ARCHITECTURE_QUIRKS.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/COMPATIBILITY.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/ENGINE_HOOK_MAPPINGS.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/GRADIENTS.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/INTERNALS.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/PORTING.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/README.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/SUPPORTED_POINTS.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/docs/USAGE.md +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/_loop.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/address.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/arch.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/attn_config.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/attn_scores.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/autograd_support.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/chat_compose.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/chat_conventions.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/chat_formatters.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/cuda_preflight.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/dispatch.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/hooks.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/lens.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/load.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/mappers.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/moe_routing.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/notebook_stdout.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/points.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/protocol.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/residual_basis.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/select.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/steer.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/steer_specs.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/sync.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/tokenize.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/__init__.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/_demux.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/_payload.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/attn.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/capture.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/graphs.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/lens/__init__.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/lens/intervene.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/lens/readout.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/lens/unembed.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/mhc.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_capture/native.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/interp_engine/vllm_plugin.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/conftest.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/harness.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/model_expectations.yaml +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/synthetic_families.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_address.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_attn_config_tripwire.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_attn_probs_indexing.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_attn_scores.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_attn_z_gqa.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_autograd_support.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_capability_refusals.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_capture_addressing.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_chat_compose.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_chat_formatters.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_chat_templates.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_core.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_cuda_preflight.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_doc_code_fences.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_eager_autograd.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_gated_attn_out.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_gpu_sizer.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_head_contributions.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_hook_call_conventions.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_layer_kinds.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_logit_transform.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_mappers.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_mlp_internals.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_model_expectations.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_moe.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_multimodal_arch.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_new_models_gpu.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_no_chat_template.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_normalized_hook.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_notebook_stdout.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_packaging.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_parity_gpt2.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_per_layer_attn_dims.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_points_registry.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_protocol.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_published_benchmarks.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_qk_norm.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_reasoning_spans.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_release.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_resid_mid.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_residual_basis.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_sandwich_norms.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_select.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_sliding_window_attn.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_small_models_gpu.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_static_dsv4_gpu.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_static_parity_gpu.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_static_warmup.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_steer_context.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_steer_math_parity.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_sync_loop.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_sync_parity.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_unified_free_functions.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_unresolved_families.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_capture_gpu.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_capture_scales.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_engine_loop.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_graph_path.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_graphs_on_gpu.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_hook_availability.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_kv_isolation.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_only_families.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_plugin.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vllm_wire_grammar.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_vocabulary_boundary.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_worker_lens_capture_readout.py +0 -0
- {interp_engine-1.5.0 → interp_engine-1.6.0}/tests/test_worker_lens_readout.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: interp-engine
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
4
4
|
Summary: A fast, standardized, and easy to use interpretability engine.
|
|
5
5
|
Project-URL: Homepage, https://github.com/decoderesearch/interp-engine
|
|
6
6
|
Project-URL: Repository, https://github.com/decoderesearch/interp-engine
|
|
@@ -113,21 +113,21 @@ One stream (tok/s):
|
|
|
113
113
|
|
|
114
114
|
| model | eager | vLLM | vLLM + static taps |
|
|
115
115
|
| ------------------------ | ----- | ---------- | ------------------ |
|
|
116
|
-
| `gemma-2-2b` |
|
|
117
|
-
| `qwen3-4b` |
|
|
118
|
-
| `llama-3.1-8b` |
|
|
119
|
-
| `qwen3.8-27b` |
|
|
120
|
-
| `deepseek-v4-flash-0731` |
|
|
116
|
+
| `gemma-2-2b` | 75 | 88 (1.2x) | **220 (2.9x)** |
|
|
117
|
+
| `qwen3-4b` | 60 | 136 (2.3x) | **313 (5.2x)** |
|
|
118
|
+
| `llama-3.1-8b` | 84 | 163 (1.9x) | **258 (3.1x)** |
|
|
119
|
+
| `qwen3.8-27b` | 25 | 35 (1.4x) | **63 (2.5x)** |
|
|
120
|
+
| `deepseek-v4-flash-0731` | 5.3 | 15 (2.9x) | **132 (25x)** |
|
|
121
121
|
|
|
122
122
|
8 concurrent requests (aggregate tok/s):
|
|
123
123
|
|
|
124
|
-
| model | eager | vLLM
|
|
125
|
-
| ------------------------ | ----- |
|
|
126
|
-
| `gemma-2-2b` |
|
|
127
|
-
| `qwen3-4b` |
|
|
128
|
-
| `llama-3.1-8b` |
|
|
129
|
-
| `qwen3.8-27b` |
|
|
130
|
-
| `deepseek-v4-flash-0731` |
|
|
124
|
+
| model | eager | vLLM | vLLM + static taps |
|
|
125
|
+
| ------------------------ | ----- | ------------- | ------------------ |
|
|
126
|
+
| `gemma-2-2b` | 75 | 675 (9.0x) | **1,436 (19.2x)** |
|
|
127
|
+
| `qwen3-4b` | 61 | 973 (15.9x) | **2,219 (36x)** |
|
|
128
|
+
| `llama-3.1-8b` | 81 | 1,187 (14.6x) | **1,755 (22x)** |
|
|
129
|
+
| `qwen3.8-27b` | 24 | 246 (10.3x) | **408 (17.0x)** |
|
|
130
|
+
| `deepseek-v4-flash-0731` | 5.4 | 117 (22x) | **631 (116x)** |
|
|
131
131
|
|
|
132
132
|
<!-- THROUGHPUT:END -->
|
|
133
133
|
|
|
@@ -148,7 +148,7 @@ We verify correctness in two main ways:
|
|
|
148
148
|
|
|
149
149
|
[docs](https://interp-engine.org/docs/gpu-sizer) | [API](https://interp-engine.org/docs/gpu-sizer-api)
|
|
150
150
|
|
|
151
|
-
Never OOM again - `interp-engine` includes gpu-sizer, an intuitive UI which tells you what GPU(s) and configs you need to get the best performance out of your selected model. For example, [interp-engine.org/sizer/Qwen/Qwen3.6-27B](https://interp-engine.org/sizer/Qwen/Qwen3.6-27B) shows that you can run `Qwen3.6-27B` with interp-engine's vllm-static backend for max speed while keeping it in a single 80GB A100, and have ~
|
|
151
|
+
Never OOM again - `interp-engine` includes gpu-sizer, an intuitive UI which tells you what GPU(s) and configs you need to get the best performance out of your selected model. For example, [interp-engine.org/sizer/Qwen/Qwen3.6-27B](https://interp-engine.org/sizer/Qwen/Qwen3.6-27B) shows that you can run `Qwen3.6-27B` with interp-engine's vllm-static backend for max speed while keeping it in a single 80GB A100, and have ~160k tokens for the KV Cache.
|
|
152
152
|
|
|
153
153
|
## Why use an Interpretability Engine instead of building from scratch?
|
|
154
154
|
|
|
@@ -160,6 +160,7 @@ Never OOM again - `interp-engine` includes gpu-sizer, an intuitive UI which tell
|
|
|
160
160
|
|
|
161
161
|
- **Gemma 4 requires transformers 5.14.1** because 5.15 moved `head_dim` into `per_layer_config` and vLLM's config read dies before a weight loads ([vllm#51744](https://github.com/vllm-project/vllm/issues/51744)).
|
|
162
162
|
- **DeepSeek-V2 on transformers older than 5.15.0** captures a wrong attention temperature — the engine warns at load, and upgrading is the fix ([COMPATIBILITY.md](docs/COMPATIBILITY.md)).
|
|
163
|
+
- **DeepSeek-V4 on the eager backend needs two flags outside Hopper.** Its FP8 paths reach for `kernels-community/deep-gemm`, which declares a `9.0a` build, and with `kernels` >= 0.16.1 the arch refusal escapes transformers' Triton fallback and kills the first forward. Load with `TRANSFORMERS_DISABLE_DEEPGEMM_LINEAR=1` and `experts_implementation="grouped_mm"`, which transformers [already recommends on B200](https://github.com/huggingface/transformers/blob/93c8b7b485963a10800c91f55304db6be211c2bd/src/transformers/integrations/finegrained_fp8.py#L252-L254) for an unrelated DeepGEMM accuracy problem. The engine raises `HubKernelUnsupported` naming both; vLLM is unaffected.
|
|
163
164
|
- **MXFP4 checkpoints (gpt-oss) need `interp-engine[quant]`**, which the `[vllm]` extra does not include; without it transformers dequantizes them to bf16 at roughly 3x the weights, which can turn a model that fits into one that does not.
|
|
164
165
|
|
|
165
166
|
Per-architecture structural quirks — which points a family serves and why — are not caveats but facts about the architecture, and live in [ARCHITECTURE_QUIRKS.md](docs/ARCHITECTURE_QUIRKS.md).
|
|
@@ -82,21 +82,21 @@ One stream (tok/s):
|
|
|
82
82
|
|
|
83
83
|
| model | eager | vLLM | vLLM + static taps |
|
|
84
84
|
| ------------------------ | ----- | ---------- | ------------------ |
|
|
85
|
-
| `gemma-2-2b` |
|
|
86
|
-
| `qwen3-4b` |
|
|
87
|
-
| `llama-3.1-8b` |
|
|
88
|
-
| `qwen3.8-27b` |
|
|
89
|
-
| `deepseek-v4-flash-0731` |
|
|
85
|
+
| `gemma-2-2b` | 75 | 88 (1.2x) | **220 (2.9x)** |
|
|
86
|
+
| `qwen3-4b` | 60 | 136 (2.3x) | **313 (5.2x)** |
|
|
87
|
+
| `llama-3.1-8b` | 84 | 163 (1.9x) | **258 (3.1x)** |
|
|
88
|
+
| `qwen3.8-27b` | 25 | 35 (1.4x) | **63 (2.5x)** |
|
|
89
|
+
| `deepseek-v4-flash-0731` | 5.3 | 15 (2.9x) | **132 (25x)** |
|
|
90
90
|
|
|
91
91
|
8 concurrent requests (aggregate tok/s):
|
|
92
92
|
|
|
93
|
-
| model | eager | vLLM
|
|
94
|
-
| ------------------------ | ----- |
|
|
95
|
-
| `gemma-2-2b` |
|
|
96
|
-
| `qwen3-4b` |
|
|
97
|
-
| `llama-3.1-8b` |
|
|
98
|
-
| `qwen3.8-27b` |
|
|
99
|
-
| `deepseek-v4-flash-0731` |
|
|
93
|
+
| model | eager | vLLM | vLLM + static taps |
|
|
94
|
+
| ------------------------ | ----- | ------------- | ------------------ |
|
|
95
|
+
| `gemma-2-2b` | 75 | 675 (9.0x) | **1,436 (19.2x)** |
|
|
96
|
+
| `qwen3-4b` | 61 | 973 (15.9x) | **2,219 (36x)** |
|
|
97
|
+
| `llama-3.1-8b` | 81 | 1,187 (14.6x) | **1,755 (22x)** |
|
|
98
|
+
| `qwen3.8-27b` | 24 | 246 (10.3x) | **408 (17.0x)** |
|
|
99
|
+
| `deepseek-v4-flash-0731` | 5.4 | 117 (22x) | **631 (116x)** |
|
|
100
100
|
|
|
101
101
|
<!-- THROUGHPUT:END -->
|
|
102
102
|
|
|
@@ -117,7 +117,7 @@ We verify correctness in two main ways:
|
|
|
117
117
|
|
|
118
118
|
[docs](https://interp-engine.org/docs/gpu-sizer) | [API](https://interp-engine.org/docs/gpu-sizer-api)
|
|
119
119
|
|
|
120
|
-
Never OOM again - `interp-engine` includes gpu-sizer, an intuitive UI which tells you what GPU(s) and configs you need to get the best performance out of your selected model. For example, [interp-engine.org/sizer/Qwen/Qwen3.6-27B](https://interp-engine.org/sizer/Qwen/Qwen3.6-27B) shows that you can run `Qwen3.6-27B` with interp-engine's vllm-static backend for max speed while keeping it in a single 80GB A100, and have ~
|
|
120
|
+
Never OOM again - `interp-engine` includes gpu-sizer, an intuitive UI which tells you what GPU(s) and configs you need to get the best performance out of your selected model. For example, [interp-engine.org/sizer/Qwen/Qwen3.6-27B](https://interp-engine.org/sizer/Qwen/Qwen3.6-27B) shows that you can run `Qwen3.6-27B` with interp-engine's vllm-static backend for max speed while keeping it in a single 80GB A100, and have ~160k tokens for the KV Cache.
|
|
121
121
|
|
|
122
122
|
## Why use an Interpretability Engine instead of building from scratch?
|
|
123
123
|
|
|
@@ -129,6 +129,7 @@ Never OOM again - `interp-engine` includes gpu-sizer, an intuitive UI which tell
|
|
|
129
129
|
|
|
130
130
|
- **Gemma 4 requires transformers 5.14.1** because 5.15 moved `head_dim` into `per_layer_config` and vLLM's config read dies before a weight loads ([vllm#51744](https://github.com/vllm-project/vllm/issues/51744)).
|
|
131
131
|
- **DeepSeek-V2 on transformers older than 5.15.0** captures a wrong attention temperature — the engine warns at load, and upgrading is the fix ([COMPATIBILITY.md](docs/COMPATIBILITY.md)).
|
|
132
|
+
- **DeepSeek-V4 on the eager backend needs two flags outside Hopper.** Its FP8 paths reach for `kernels-community/deep-gemm`, which declares a `9.0a` build, and with `kernels` >= 0.16.1 the arch refusal escapes transformers' Triton fallback and kills the first forward. Load with `TRANSFORMERS_DISABLE_DEEPGEMM_LINEAR=1` and `experts_implementation="grouped_mm"`, which transformers [already recommends on B200](https://github.com/huggingface/transformers/blob/93c8b7b485963a10800c91f55304db6be211c2bd/src/transformers/integrations/finegrained_fp8.py#L252-L254) for an unrelated DeepGEMM accuracy problem. The engine raises `HubKernelUnsupported` naming both; vLLM is unaffected.
|
|
132
133
|
- **MXFP4 checkpoints (gpt-oss) need `interp-engine[quant]`**, which the `[vllm]` extra does not include; without it transformers dequantizes them to bf16 at roughly 3x the weights, which can turn a model that fits into one that does not.
|
|
133
134
|
|
|
134
135
|
Per-architecture structural quirks — which points a family serves and why — are not caveats but facts about the architecture, and live in [ARCHITECTURE_QUIRKS.md](docs/ARCHITECTURE_QUIRKS.md).
|
|
@@ -123,6 +123,19 @@ def _columns(cells: list[dict[str, Any]]) -> list[str]:
|
|
|
123
123
|
return [k for k in COLUMNS if k in present] + [k for k in present if k not in COLUMNS]
|
|
124
124
|
|
|
125
125
|
|
|
126
|
+
def _rendered(cells: list[dict[str, Any]]) -> list[dict[str, Any]]:
|
|
127
|
+
"""The cells this report actually shows, which is what its header has to be about.
|
|
128
|
+
|
|
129
|
+
Dropping :data:`EXCLUDED` from the columns was not enough: the cell count, the run's date range
|
|
130
|
+
and the environment table were all still computed over everything on disk, so a dspark cell left
|
|
131
|
+
over from an older stack described the whole report. It really happened -- a table whose figures
|
|
132
|
+
were all measured on vLLM 0.28 carried an environment block reading 0.26, because the stalest
|
|
133
|
+
cell in the directory sorted first and the block takes the first one it is given.
|
|
134
|
+
"""
|
|
135
|
+
shown = set(_columns(cells))
|
|
136
|
+
return [c for c in cells if c["variant"]["key"] in shown]
|
|
137
|
+
|
|
138
|
+
|
|
126
139
|
def _variant_specs(cells: list[dict[str, Any]]) -> list[Any]:
|
|
127
140
|
"""The specs behind :func:`_columns`, in the same order, for the report's variant table."""
|
|
128
141
|
by_key = {v.key: v for v in VARIANTS}
|
|
@@ -350,6 +363,9 @@ def _steering_overhead(cells: list[dict[str, Any]]) -> list[str]:
|
|
|
350
363
|
|
|
351
364
|
|
|
352
365
|
def build_report(cells: list[dict[str, Any]], sweep_command: str) -> str:
|
|
366
|
+
if not cells:
|
|
367
|
+
return "# interp-engine speed benchmarks\n\nNo results found.\n"
|
|
368
|
+
cells = _rendered(cells)
|
|
353
369
|
if not cells:
|
|
354
370
|
return "# interp-engine speed benchmarks\n\nNo results found.\n"
|
|
355
371
|
|
{interp_engine-1.5.0 → interp_engine-1.6.0}/benchmarks/results/deepseek-v4-flash-0731__eager.json
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 2,
|
|
3
|
-
"started_at": "2026-
|
|
3
|
+
"started_at": "2026-09-04T08:04:10+00:00",
|
|
4
4
|
"command": "python -m benchmarks.run_bench --model deepseek-v4-flash-0731 --variant eager",
|
|
5
5
|
"python": "python",
|
|
6
6
|
"model": {
|
|
@@ -11,12 +11,26 @@
|
|
|
11
11
|
"dtype": "bfloat16",
|
|
12
12
|
"min_gpu_gib": 170.0,
|
|
13
13
|
"capture_point": "mlp_out",
|
|
14
|
+
"per_variant_vllm_kwargs": {
|
|
15
|
+
"vllm-static": {
|
|
16
|
+
"max_num_batched_tokens": 1024,
|
|
17
|
+
"compilation_config": {
|
|
18
|
+
"cudagraph_capture_sizes": [
|
|
19
|
+
1,
|
|
20
|
+
2,
|
|
21
|
+
4,
|
|
22
|
+
8,
|
|
23
|
+
16,
|
|
24
|
+
32
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"static_capture_point": "resid_streams",
|
|
14
30
|
"extra_eager_kwargs": {
|
|
15
31
|
"device_map": "cuda"
|
|
16
32
|
},
|
|
17
|
-
"extra_vllm_kwargs": {
|
|
18
|
-
"kv_cache_dtype": "fp8"
|
|
19
|
-
},
|
|
33
|
+
"extra_vllm_kwargs": {},
|
|
20
34
|
"gpu_memory_utilization": 0.95,
|
|
21
35
|
"native_dtype": "bfloat16"
|
|
22
36
|
},
|
|
@@ -25,20 +39,21 @@
|
|
|
25
39
|
"backend": "eager",
|
|
26
40
|
"note": "raw HF forward; attn_implementation=eager, the engine's default",
|
|
27
41
|
"kwargs": {
|
|
28
|
-
"device_map": "cuda"
|
|
42
|
+
"device_map": "cuda",
|
|
43
|
+
"model_kwargs": "{'experts_implementation': 'grouped_mm'}"
|
|
29
44
|
}
|
|
30
45
|
},
|
|
31
46
|
"env": {
|
|
32
47
|
"gpu_name": "NVIDIA B200",
|
|
33
|
-
"gpu_total_gib": 178.
|
|
34
|
-
"driver_version": "580.
|
|
48
|
+
"gpu_total_gib": 178.35107421875,
|
|
49
|
+
"driver_version": "580.126.20",
|
|
35
50
|
"cuda_version": "13.0",
|
|
36
|
-
"torch_version": "2.
|
|
37
|
-
"vllm_version": "0.
|
|
38
|
-
"transformers_version": "5.
|
|
39
|
-
"interp_engine_version": "1.
|
|
40
|
-
"python_version": "3.
|
|
41
|
-
"platform": "linux 6.8.0-
|
|
51
|
+
"torch_version": "2.13.0+cu130",
|
|
52
|
+
"vllm_version": "0.28.0",
|
|
53
|
+
"transformers_version": "5.16.1",
|
|
54
|
+
"interp_engine_version": "1.6.0",
|
|
55
|
+
"python_version": "3.13.8",
|
|
56
|
+
"platform": "linux 6.8.0-100-generic",
|
|
42
57
|
"extra": {
|
|
43
58
|
"VLLM_DEEP_GEMM_WARMUP": "skip"
|
|
44
59
|
}
|
|
@@ -48,10 +63,10 @@
|
|
|
48
63
|
"status": "ok",
|
|
49
64
|
"reason": "",
|
|
50
65
|
"metrics": {
|
|
51
|
-
"ttft_ms":
|
|
52
|
-
"prefill_tok_s":
|
|
53
|
-
"decode_tok_s":
|
|
54
|
-
"total_s":
|
|
66
|
+
"ttft_ms": 348.0888856574893,
|
|
67
|
+
"prefill_tok_s": 1470.8886755545395,
|
|
68
|
+
"decode_tok_s": 5.334557839162081,
|
|
69
|
+
"total_s": 24.1551229134202
|
|
55
70
|
},
|
|
56
71
|
"detail": {
|
|
57
72
|
"prompt_tokens": 512,
|
|
@@ -63,9 +78,9 @@
|
|
|
63
78
|
"status": "ok",
|
|
64
79
|
"reason": "",
|
|
65
80
|
"metrics": {
|
|
66
|
-
"total_s":
|
|
67
|
-
"aggregate_tok_s":
|
|
68
|
-
"per_request_s":
|
|
81
|
+
"total_s": 188.6664756303653,
|
|
82
|
+
"aggregate_tok_s": 5.427567333192873,
|
|
83
|
+
"per_request_s": 23.583309453795664
|
|
69
84
|
},
|
|
70
85
|
"detail": {
|
|
71
86
|
"concurrency": 8,
|
|
@@ -78,8 +93,8 @@
|
|
|
78
93
|
"status": "ok",
|
|
79
94
|
"reason": "",
|
|
80
95
|
"metrics": {
|
|
81
|
-
"latency_ms":
|
|
82
|
-
"prompt_tok_s":
|
|
96
|
+
"latency_ms": 322.7837970480323,
|
|
97
|
+
"prompt_tok_s": 1586.2010568139242,
|
|
83
98
|
"transported_mib": 4.0
|
|
84
99
|
},
|
|
85
100
|
"detail": {
|
|
@@ -95,8 +110,8 @@
|
|
|
95
110
|
"status": "ok",
|
|
96
111
|
"reason": "",
|
|
97
112
|
"metrics": {
|
|
98
|
-
"latency_ms":
|
|
99
|
-
"prompt_tok_s":
|
|
113
|
+
"latency_ms": 371.26773688942194,
|
|
114
|
+
"prompt_tok_s": 1379.0586930328764,
|
|
100
115
|
"transported_mib": 172.0
|
|
101
116
|
},
|
|
102
117
|
"detail": {
|
|
@@ -112,7 +127,7 @@
|
|
|
112
127
|
"status": "ok",
|
|
113
128
|
"reason": "",
|
|
114
129
|
"metrics": {
|
|
115
|
-
"latency_ms":
|
|
130
|
+
"latency_ms": 6102.334971539676,
|
|
116
131
|
"transported_mib": 1.2421875
|
|
117
132
|
},
|
|
118
133
|
"detail": {
|
|
@@ -130,7 +145,7 @@
|
|
|
130
145
|
"status": "ok",
|
|
131
146
|
"reason": "",
|
|
132
147
|
"metrics": {
|
|
133
|
-
"latency_ms":
|
|
148
|
+
"latency_ms": 6089.949840679765,
|
|
134
149
|
"transported_mib": 1.2421875
|
|
135
150
|
},
|
|
136
151
|
"detail": {
|
|
@@ -148,8 +163,8 @@
|
|
|
148
163
|
"status": "ok",
|
|
149
164
|
"reason": "",
|
|
150
165
|
"metrics": {
|
|
151
|
-
"latency_ms":
|
|
152
|
-
"rows_per_s":
|
|
166
|
+
"latency_ms": 1.2944107875227928,
|
|
167
|
+
"rows_per_s": 395546.76532003516,
|
|
153
168
|
"result_mib": 0.048828125
|
|
154
169
|
},
|
|
155
170
|
"detail": {
|
|
@@ -161,9 +176,9 @@
|
|
|
161
176
|
}
|
|
162
177
|
},
|
|
163
178
|
"load": {
|
|
164
|
-
"construct_s":
|
|
165
|
-
"warmup_s":
|
|
166
|
-
"ready_s":
|
|
179
|
+
"construct_s": 19.825129061937332,
|
|
180
|
+
"warmup_s": 6.800517439842224e-06,
|
|
181
|
+
"ready_s": 19.825135862454772,
|
|
167
182
|
"n_layers": 43,
|
|
168
183
|
"d_model": 4096,
|
|
169
184
|
"device": "cuda:0",
|
|
@@ -171,5 +186,5 @@
|
|
|
171
186
|
"resolved_dtype": "bfloat16",
|
|
172
187
|
"grad_through_forward": false
|
|
173
188
|
},
|
|
174
|
-
"finished_at": "2026-
|
|
189
|
+
"finished_at": "2026-09-04T08:15:23+00:00"
|
|
175
190
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 2,
|
|
3
|
-
"started_at": "2026-
|
|
3
|
+
"started_at": "2026-09-04T08:24:40+00:00",
|
|
4
4
|
"command": "python -m benchmarks.run_bench --model deepseek-v4-flash-0731 --variant vllm-cudagraph",
|
|
5
5
|
"python": "python",
|
|
6
6
|
"model": {
|
|
@@ -11,12 +11,26 @@
|
|
|
11
11
|
"dtype": "bfloat16",
|
|
12
12
|
"min_gpu_gib": 170.0,
|
|
13
13
|
"capture_point": "mlp_out",
|
|
14
|
+
"per_variant_vllm_kwargs": {
|
|
15
|
+
"vllm-static": {
|
|
16
|
+
"max_num_batched_tokens": 1024,
|
|
17
|
+
"compilation_config": {
|
|
18
|
+
"cudagraph_capture_sizes": [
|
|
19
|
+
1,
|
|
20
|
+
2,
|
|
21
|
+
4,
|
|
22
|
+
8,
|
|
23
|
+
16,
|
|
24
|
+
32
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"static_capture_point": "resid_streams",
|
|
14
30
|
"extra_eager_kwargs": {
|
|
15
31
|
"device_map": "cuda"
|
|
16
32
|
},
|
|
17
|
-
"extra_vllm_kwargs": {
|
|
18
|
-
"kv_cache_dtype": "fp8"
|
|
19
|
-
},
|
|
33
|
+
"extra_vllm_kwargs": {},
|
|
20
34
|
"gpu_memory_utilization": 0.95,
|
|
21
35
|
"native_dtype": "bfloat16"
|
|
22
36
|
},
|
|
@@ -27,20 +41,20 @@
|
|
|
27
41
|
"kwargs": {
|
|
28
42
|
"max_model_len": "2048",
|
|
29
43
|
"gpu_memory_utilization": "0.95",
|
|
30
|
-
"extra_vllm_kwargs": "{'
|
|
44
|
+
"extra_vllm_kwargs": "{'enable_prefix_caching': False}"
|
|
31
45
|
}
|
|
32
46
|
},
|
|
33
47
|
"env": {
|
|
34
48
|
"gpu_name": "NVIDIA B200",
|
|
35
|
-
"gpu_total_gib": 178.
|
|
36
|
-
"driver_version": "580.
|
|
49
|
+
"gpu_total_gib": 178.35107421875,
|
|
50
|
+
"driver_version": "580.126.20",
|
|
37
51
|
"cuda_version": "13.0",
|
|
38
|
-
"torch_version": "2.
|
|
39
|
-
"vllm_version": "0.
|
|
40
|
-
"transformers_version": "5.
|
|
41
|
-
"interp_engine_version": "1.
|
|
42
|
-
"python_version": "3.
|
|
43
|
-
"platform": "linux 6.8.0-
|
|
52
|
+
"torch_version": "2.13.0+cu130",
|
|
53
|
+
"vllm_version": "0.28.0",
|
|
54
|
+
"transformers_version": "5.16.1",
|
|
55
|
+
"interp_engine_version": "1.6.0",
|
|
56
|
+
"python_version": "3.13.8",
|
|
57
|
+
"platform": "linux 6.8.0-100-generic",
|
|
44
58
|
"extra": {
|
|
45
59
|
"VLLM_DEEP_GEMM_WARMUP": "skip"
|
|
46
60
|
}
|
|
@@ -50,10 +64,10 @@
|
|
|
50
64
|
"status": "ok",
|
|
51
65
|
"reason": "",
|
|
52
66
|
"metrics": {
|
|
53
|
-
"ttft_ms":
|
|
54
|
-
"prefill_tok_s":
|
|
55
|
-
"decode_tok_s":
|
|
56
|
-
"total_s":
|
|
67
|
+
"ttft_ms": 76.75724849104881,
|
|
68
|
+
"prefill_tok_s": 6670.379802107,
|
|
69
|
+
"decode_tok_s": 152.09943506242846,
|
|
70
|
+
"total_s": 0.9117373386397958
|
|
57
71
|
},
|
|
58
72
|
"detail": {
|
|
59
73
|
"prompt_tokens": 512,
|
|
@@ -65,9 +79,9 @@
|
|
|
65
79
|
"status": "ok",
|
|
66
80
|
"reason": "",
|
|
67
81
|
"metrics": {
|
|
68
|
-
"total_s":
|
|
69
|
-
"aggregate_tok_s":
|
|
70
|
-
"per_request_s": 0.
|
|
82
|
+
"total_s": 1.3893375098705292,
|
|
83
|
+
"aggregate_tok_s": 737.0419302185438,
|
|
84
|
+
"per_request_s": 0.17366718873381615
|
|
71
85
|
},
|
|
72
86
|
"detail": {
|
|
73
87
|
"concurrency": 8,
|
|
@@ -104,8 +118,8 @@
|
|
|
104
118
|
"status": "ok",
|
|
105
119
|
"reason": "",
|
|
106
120
|
"metrics": {
|
|
107
|
-
"latency_ms":
|
|
108
|
-
"rows_per_s":
|
|
121
|
+
"latency_ms": 26.252491399645805,
|
|
122
|
+
"rows_per_s": 19502.910874466863,
|
|
109
123
|
"result_mib": 0.05859375
|
|
110
124
|
},
|
|
111
125
|
"detail": {
|
|
@@ -113,15 +127,15 @@
|
|
|
113
127
|
"top_n": 10,
|
|
114
128
|
"path": "worker-side top-k (decode_residuals_topk)",
|
|
115
129
|
"repeats": 3,
|
|
116
|
-
"topk_id_overlap_vs_full": 0.
|
|
130
|
+
"topk_id_overlap_vs_full": 0.9816,
|
|
117
131
|
"topk_worst_shortfall_frac_of_range": 0.0
|
|
118
132
|
}
|
|
119
133
|
}
|
|
120
134
|
},
|
|
121
135
|
"load": {
|
|
122
|
-
"construct_s": 1.
|
|
123
|
-
"warmup_s":
|
|
124
|
-
"ready_s":
|
|
136
|
+
"construct_s": 1.4092194680124521,
|
|
137
|
+
"warmup_s": 215.26768506783992,
|
|
138
|
+
"ready_s": 216.67690453585237,
|
|
125
139
|
"n_layers": 43,
|
|
126
140
|
"d_model": 4096,
|
|
127
141
|
"device": "cuda (vllm worker)",
|
|
@@ -129,5 +143,5 @@
|
|
|
129
143
|
"resolved_dtype": "bfloat16",
|
|
130
144
|
"grad_through_forward": false
|
|
131
145
|
},
|
|
132
|
-
"finished_at": "2026-
|
|
146
|
+
"finished_at": "2026-09-04T08:28:27+00:00"
|
|
133
147
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 2,
|
|
3
|
-
"started_at": "2026-
|
|
3
|
+
"started_at": "2026-09-04T07:18:04+00:00",
|
|
4
4
|
"command": "python -m benchmarks.run_bench --model deepseek-v4-flash-0731 --variant vllm-static",
|
|
5
5
|
"python": "python",
|
|
6
6
|
"model": {
|
|
@@ -30,9 +30,7 @@
|
|
|
30
30
|
"extra_eager_kwargs": {
|
|
31
31
|
"device_map": "cuda"
|
|
32
32
|
},
|
|
33
|
-
"extra_vllm_kwargs": {
|
|
34
|
-
"kv_cache_dtype": "fp8"
|
|
35
|
-
},
|
|
33
|
+
"extra_vllm_kwargs": {},
|
|
36
34
|
"gpu_memory_utilization": 0.95,
|
|
37
35
|
"native_dtype": "bfloat16"
|
|
38
36
|
},
|
|
@@ -45,20 +43,20 @@
|
|
|
45
43
|
"static_writes": "[('resid_streams', 21)]",
|
|
46
44
|
"max_model_len": "2048",
|
|
47
45
|
"gpu_memory_utilization": "0.95",
|
|
48
|
-
"extra_vllm_kwargs": "{'
|
|
46
|
+
"extra_vllm_kwargs": "{'max_num_batched_tokens': 1024, 'compilation_config': {'cudagraph_capture_sizes': [1, 2, 4, 8, 16, 32]}, 'enable_prefix_caching': False}"
|
|
49
47
|
}
|
|
50
48
|
},
|
|
51
49
|
"env": {
|
|
52
50
|
"gpu_name": "NVIDIA B200",
|
|
53
|
-
"gpu_total_gib": 178.
|
|
54
|
-
"driver_version": "580.
|
|
51
|
+
"gpu_total_gib": 178.35107421875,
|
|
52
|
+
"driver_version": "580.126.20",
|
|
55
53
|
"cuda_version": "13.0",
|
|
56
|
-
"torch_version": "2.
|
|
57
|
-
"vllm_version": "0.
|
|
58
|
-
"transformers_version": "5.
|
|
59
|
-
"interp_engine_version": "1.
|
|
60
|
-
"python_version": "3.
|
|
61
|
-
"platform": "linux 6.8.0-
|
|
54
|
+
"torch_version": "2.13.0+cu130",
|
|
55
|
+
"vllm_version": "0.28.0",
|
|
56
|
+
"transformers_version": "5.16.1",
|
|
57
|
+
"interp_engine_version": "1.6.0",
|
|
58
|
+
"python_version": "3.13.8",
|
|
59
|
+
"platform": "linux 6.8.0-100-generic",
|
|
62
60
|
"extra": {
|
|
63
61
|
"VLLM_DEEP_GEMM_WARMUP": "skip"
|
|
64
62
|
}
|
|
@@ -68,10 +66,10 @@
|
|
|
68
66
|
"status": "ok",
|
|
69
67
|
"reason": "",
|
|
70
68
|
"metrics": {
|
|
71
|
-
"ttft_ms":
|
|
72
|
-
"prefill_tok_s":
|
|
73
|
-
"decode_tok_s":
|
|
74
|
-
"total_s": 1.
|
|
69
|
+
"ttft_ms": 75.92793833464384,
|
|
70
|
+
"prefill_tok_s": 6743.235905384625,
|
|
71
|
+
"decode_tok_s": 131.86411564042513,
|
|
72
|
+
"total_s": 1.0390406046062708
|
|
75
73
|
},
|
|
76
74
|
"detail": {
|
|
77
75
|
"prompt_tokens": 512,
|
|
@@ -83,14 +81,14 @@
|
|
|
83
81
|
"status": "ok",
|
|
84
82
|
"reason": "",
|
|
85
83
|
"metrics": {
|
|
86
|
-
"total_s":
|
|
87
|
-
"aggregate_tok_s":
|
|
88
|
-
"per_request_s": 0.
|
|
84
|
+
"total_s": 1.6222849520854652,
|
|
85
|
+
"aggregate_tok_s": 631.2084684528675,
|
|
86
|
+
"per_request_s": 0.20278561901068315
|
|
89
87
|
},
|
|
90
88
|
"detail": {
|
|
91
89
|
"concurrency": 8,
|
|
92
90
|
"prompt_tokens": 512,
|
|
93
|
-
"generated_tokens_total":
|
|
91
|
+
"generated_tokens_total": 1024,
|
|
94
92
|
"repeats": 2
|
|
95
93
|
}
|
|
96
94
|
},
|
|
@@ -98,8 +96,8 @@
|
|
|
98
96
|
"status": "ok",
|
|
99
97
|
"reason": "",
|
|
100
98
|
"metrics": {
|
|
101
|
-
"latency_ms":
|
|
102
|
-
"prompt_tok_s":
|
|
99
|
+
"latency_ms": 131.99533242732286,
|
|
100
|
+
"prompt_tok_s": 3878.9250391252217,
|
|
103
101
|
"transported_mib": 32.0
|
|
104
102
|
},
|
|
105
103
|
"detail": {
|
|
@@ -115,8 +113,8 @@
|
|
|
115
113
|
"status": "ok",
|
|
116
114
|
"reason": "",
|
|
117
115
|
"metrics": {
|
|
118
|
-
"latency_ms":
|
|
119
|
-
"prompt_tok_s":
|
|
116
|
+
"latency_ms": 2049.1460720077157,
|
|
117
|
+
"prompt_tok_s": 249.86017687765508,
|
|
120
118
|
"transported_mib": 1376.0
|
|
121
119
|
},
|
|
122
120
|
"detail": {
|
|
@@ -132,7 +130,7 @@
|
|
|
132
130
|
"status": "ok",
|
|
133
131
|
"reason": "",
|
|
134
132
|
"metrics": {
|
|
135
|
-
"latency_ms":
|
|
133
|
+
"latency_ms": 336.8926215916872,
|
|
136
134
|
"transported_mib": 9.9375
|
|
137
135
|
},
|
|
138
136
|
"detail": {
|
|
@@ -150,7 +148,7 @@
|
|
|
150
148
|
"status": "ok",
|
|
151
149
|
"reason": "",
|
|
152
150
|
"metrics": {
|
|
153
|
-
"latency_ms":
|
|
151
|
+
"latency_ms": 324.6788289397955,
|
|
154
152
|
"transported_mib": 9.9375
|
|
155
153
|
},
|
|
156
154
|
"detail": {
|
|
@@ -168,8 +166,8 @@
|
|
|
168
166
|
"status": "ok",
|
|
169
167
|
"reason": "",
|
|
170
168
|
"metrics": {
|
|
171
|
-
"latency_ms":
|
|
172
|
-
"rows_per_s":
|
|
169
|
+
"latency_ms": 24.669302627444267,
|
|
170
|
+
"rows_per_s": 20754.538858768017,
|
|
173
171
|
"result_mib": 0.05859375
|
|
174
172
|
},
|
|
175
173
|
"detail": {
|
|
@@ -177,15 +175,15 @@
|
|
|
177
175
|
"top_n": 10,
|
|
178
176
|
"path": "worker-side top-k (decode_residuals_topk)",
|
|
179
177
|
"repeats": 3,
|
|
180
|
-
"topk_id_overlap_vs_full": 0.
|
|
178
|
+
"topk_id_overlap_vs_full": 0.9846,
|
|
181
179
|
"topk_worst_shortfall_frac_of_range": 0.0
|
|
182
180
|
}
|
|
183
181
|
}
|
|
184
182
|
},
|
|
185
183
|
"load": {
|
|
186
|
-
"construct_s": 1.
|
|
187
|
-
"warmup_s":
|
|
188
|
-
"ready_s":
|
|
184
|
+
"construct_s": 1.3641586303710938,
|
|
185
|
+
"warmup_s": 126.34760607592762,
|
|
186
|
+
"ready_s": 127.71176470629871,
|
|
189
187
|
"n_layers": 43,
|
|
190
188
|
"d_model": 4096,
|
|
191
189
|
"device": "cuda (vllm worker)",
|
|
@@ -193,5 +191,5 @@
|
|
|
193
191
|
"resolved_dtype": "bfloat16",
|
|
194
192
|
"grad_through_forward": false
|
|
195
193
|
},
|
|
196
|
-
"finished_at": "2026-
|
|
194
|
+
"finished_at": "2026-09-04T07:20:35+00:00"
|
|
197
195
|
}
|