benchmark Kimi-K3 DP2 TP32 and PP8 without speculation

This commit is contained in:
Zhiyi Hong 2026-09-02 13:40:58 +08:00
parent c9305fb830
commit 411802e4b1
40 changed files with 539 additions and 0 deletions

View File

@ -0,0 +1,85 @@
# Kimi-K3 DP2 无投机TP32 与 PP8 对比
## 测试目的
在 8 台 RTX 6000D 上部署两个独立四节点 SGLang 副本,通过 SGLang Router `round_robin` 组成 DP2比较两种单副本并行策略
- TP32`TP32/PP1/EP4`
- PP8`TP4/PP8/EP4`
本轮不启用投机解码,重点观察长输入场景下 TTFT 与长 Decode 的取舍。
## 固定口径
| 项目 | 配置 |
|---|---|
| 数据集 | SPEED-Bench `/data/speedbench16k_complete.jsonl` |
| 请求 | 40 条16K 输入512 输出 |
| 客户端并发 | C=8 |
| Chunked Prefill | 8K |
| MoE | EP4FlashInfer MXFP4A2A=none |
| KV Cache | BF16 |
| Prefix Cache | 关闭 |
| Router | 两副本 `round_robin` |
| GPU | 601-608共 64 卡 |
两种配置均在正式计时前分别预热两个副本,并由 benchmark 再执行一条标准 warmup。`Peak concurrent requests=12` 是 SGLang 报告的服务端峰值,可因排队高于客户端 `max_concurrency=8`,不表示客户端发出了 12 路并发。
## 结果
| 指标 | DP2 TP32/PP1/EP4 | DP2 TP4/PP8/EP4 | PP8 相对 TP32 |
|---|---:|---:|---:|
| 成功请求 | 40/40 | 40/40 | 相同 |
| Benchmark duration | 238.18s | 370.30s | +55.47% |
| Input TPS | 2797.64 | 1799.46 | -35.68% |
| Output TPS | 85.99 | 55.31 | -35.68% |
| Total TPS | 2883.63 | 1854.76 | -35.68% |
| TTFT mean | 8.35s | 7.84s | -6.15% |
| TTFT median | 5.30s | 7.03s | +32.62% |
| TTFT p95 | 20.79s | 11.68s | -43.82% |
| TPOT mean | 75.93ms | 126.86ms | +67.07% |
| TPOT median | 79.95ms | 136.09ms | +70.22% |
| TPOT p95 | 88.06ms | 145.13ms | +64.80% |
| E2E mean | 47.15s | 72.66s | +54.10% |
| E2E p95 | 59.24s | 82.83s | +39.82% |
## 初步结论
PP8 继续体现了 Prefill 优势:平均 TTFT 小幅下降 6.15%TTFT p95 降低 43.82%,长尾更稳定。这来自 TP 通信域从 32 缩到 4并由流水线分摊模型层。
但 512-token Decode 暴露了 PP8 的代价。每个 token 都要依次通过 8 个 Pipeline StageTPOT 增加 67.07%,最终使 Output TPS 降低 35.68%、E2E 平均时延增加 54.10%。因此:
- 以 P 节点 TTFT 为目标时PP8 有价值,尤其能改善 TTFT 长尾。
- 作为不做 PD 分离的完整 16K→512 服务TP32 综合表现更好。
- PP8 更适合作为 PD 分离中的 P 侧配置,由独立 D 侧承担长 Decode不能用本轮 PP8 的 E2E/TPOT 直接否定其 P 侧价值。
TP32 的 TTFT median 更低但 p95 明显更高,说明该配置在 DP2 排队与长 Prefill 交错时波动更大。后续如继续优化单实例,应分别报告 median 与 p95不能只看 mean。
## 数据质量与日志说明
两轮 Router 初始命令没有挂载模型目录,因此 worker tokenizer 注册出现错误。Router 使用固定 `round_robin`,不依赖 tokenizer 做 cache-aware 路由40/40 请求成功,两副本 Prefill 数量接近均分,未发现请求级失败或重试,所以不影响本轮 A/B 结论。脚本已补上 Router 模型只读挂载,后续运行不会再产生该注册错误。
满负载期间 Router 偶有 `/health` 超时,这是模型服务忙于长 Prefill/Decode 时健康响应延迟;两轮均未出现 OOM、NCCL collective failure、Traceback 或 EngineDeadError。
## 原始结果
TP32
```text
/data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-tp32-final-20260902-123051/
```
PP8
```text
/data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-pp8-final-20260902-130711/
```
核心 benchmark 日志分别位于:
```text
bench/tp32_speedbench16k_c8_o512.log
bench/pp8_speedbench16k_c8_o512.log
```
每个结果目录同时保存完整启动命令、环境 manifest、输入校验值、Router 日志和八节点服务日志。

View File

@ -0,0 +1,36 @@
# Kimi-K3 DP2 无投机 A/B
两个独立四节点 SGLang 副本通过 SGLang Router 做 round-robin 负载均衡。固定 `EP4`,比较:
- `tp32`:每副本 `TP32/PP1/EP4`
- `pp8`:每副本 `TP4/PP8/EP4`
测试口径固定为 SPEED-Bench、`16K -> 512``C=8`、40 请求、chunk 8K、BF16 KV、FlashInfer MXFP4不启用投机解码和 Prefix Cache。
```bash
cd /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab
# 只展开命令
bash run_dp2_nospec_ab.sh dry-run tp32
bash run_dp2_nospec_ab.sh dry-run pp8
# 完整实验
RUN_ID=dp2-tp32-$(date +%Y%m%d-%H%M%S) bash run_dp2_nospec_ab.sh all tp32
RUN_ID=dp2-pp8-$(date +%Y%m%d-%H%M%S) bash run_dp2_nospec_ab.sh all pp8
```
每轮结果保存在 `results/<RUN_ID>/`。正式计时前,脚本分别给两个副本发送一个 `16K -> 1` 请求,避免 Router 只预热到一个副本。
## 2026-09-02 正式结果
| 模式 | Input TPS | Output TPS | TTFT mean / p95 | TPOT mean / p95 | E2E mean |
|---|---:|---:|---:|---:|---:|
| `2 x TP32/PP1/EP4` | 2797.64 | 85.99 | 8.35s / 20.79s | 75.93ms / 88.06ms | 47.15s |
| `2 x TP4/PP8/EP4` | 1799.46 | 55.31 | 7.84s / 11.68s | 126.86ms / 145.13ms | 72.66s |
证据目录:
- `results/dp2-tp32-final-20260902-123051/`
- `results/dp2-pp8-final-20260902-130711/`
两轮均为 40/40 请求成功。Router 使用固定 `round_robin`,两副本负载接近均分。正式运行后补充了 Router 的模型目录挂载,避免后续 tokenizer 注册产生与本轮 round-robin 转发无关的错误日志。

View File

@ -0,0 +1,27 @@
EXPERIMENT_BASE=kimi3_pro6000_dp2_nospec_ab
IMAGE=local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1
MODEL_PATH=/data/hf_models/Kimi-K3
REPLICA_A_NODES=(174.1.60.1 174.1.60.2 174.1.60.3 174.1.60.4)
REPLICA_B_NODES=(174.1.60.5 174.1.60.6 174.1.60.7 174.1.60.8)
SSH_USER=user
SSH_OPTIONS=(-o BatchMode=yes -o ConnectTimeout=10)
SERVER_PORT=30000
DIST_PORT=20000
ROUTER_PORT=32000
EP_SIZE=4
CHUNK_SIZE=8192
PAGE_SIZE=64
KV_DTYPE=bfloat16
MAX_RUNNING_REQUESTS=8
CUDA_GRAPH_MAX_BS=8
IB_DEVICES=mlx5_0,mlx5_1,mlx5_2,mlx5_3
NCCL_DEBUG_LEVEL=${NCCL_DEBUG_LEVEL:-WARN}
JIT_CACHE=/data/hzy/cache/kimi-dflash-fi0618-situ4460
HEALTH_WAIT_S=2400
SPEED_BENCH_DATASET=/data/speedbench16k_complete.jsonl
NUM_PROMPTS=40
OUTPUT_LEN=512
CONCURRENCY=8

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_a_0 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.1 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 0 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_a_1 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.2 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 1 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_a_2 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.3 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 2 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_a_3 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.4 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 3 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_b_0 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.5 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 0 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_b_1 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.6 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 1 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_b_2 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.7 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 2 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_b_3 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.8 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 4 --pp-size 8 --ep-size 4 --nnodes 4 --node-rank 3 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.84 --mamba-full-memory-ratio 0.36 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run --rm --network host -v /data:/data -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.benchmark.serving --backend sglang --host 174.1.60.1 --port 32000 --model /data/hf_models/Kimi-K3 --tokenizer /data/hf_models/Kimi-K3 --dataset-name speed-bench --dataset-path /data/speedbench16k_complete.jsonl --num-prompts 40 --max-concurrency 8 --request-rate 10000 --speed-bench-output-len 512 --temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests 1 --output-details --output-file /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-pp8-final-20260902-130711/bench/pp8_speedbench16k_c8_o512.jsonl

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_pp8_router_0 --network host --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang_router.launch_router --policy round_robin --worker-urls http://174.1.60.1:30000 http://174.1.60.5:30000 --host 0.0.0.0 --port 32000

View File

@ -0,0 +1 @@
docker run --rm --network host -v /data:/data -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.benchmark.serving --backend sglang --host 174.1.60.1 --port 30000 --model /data/hf_models/Kimi-K3 --tokenizer /data/hf_models/Kimi-K3 --dataset-name speed-bench --dataset-path /data/speedbench16k_complete.jsonl --num-prompts 1 --max-concurrency 8 --request-rate 10000 --speed-bench-output-len 1 --temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests 0 --output-details --output-file /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-pp8-final-20260902-130711/bench/warm_a.jsonl

View File

@ -0,0 +1 @@
docker run --rm --network host -v /data:/data -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.benchmark.serving --backend sglang --host 174.1.60.5 --port 30000 --model /data/hf_models/Kimi-K3 --tokenizer /data/hf_models/Kimi-K3 --dataset-name speed-bench --dataset-path /data/speedbench16k_complete.jsonl --num-prompts 1 --max-concurrency 8 --request-rate 10000 --speed-bench-output-len 1 --temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests 0 --output-details --output-file /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-pp8-final-20260902-130711/bench/warm_b.jsonl

View File

@ -0,0 +1,3 @@
2af605e738d3a9b3f17310d54a81e81f1342b76eeeb12da7cd3f65abf6e0764f /data/speedbench16k_complete.jsonl
976aca142cb6183e0ed8f0fdd9395643233ce6ab9837e152f086b97c9bcfdf40 /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/run_dp2_nospec_ab.sh
28f994273a0f8b9d7ad0a3393400547c7f25cd369babc391d4a1f9553e7bcb9b /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/config.env

View File

@ -0,0 +1,11 @@
RUN_ID=dp2-pp8-final-20260902-130711
MODE=pp8
TP_SIZE=4
PP_SIZE=8
EP_SIZE=4
IMAGE=local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1
CHUNK_SIZE=8192
KV_DTYPE=bfloat16
NUM_PROMPTS=40
OUTPUT_LEN=512
CONCURRENCY=8

View File

@ -0,0 +1,8 @@
174.1.60.1 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.2 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.3 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.4 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.5 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.6 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.7 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.8 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_a_0 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.1 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 0 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_a_1 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.2 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 1 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_a_2 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.3 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 2 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_a_3 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.4 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 3 --dist-init-addr 174.1.60.1:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_b_0 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.5 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 0 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_b_1 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.6 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 1 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_b_2 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.7 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 2 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_b_3 --gpus all --network host --ipc=host --shm-size 32g --ulimit memlock=-1 --device /dev/infiniband -v /data/hf_models/Kimi-K3:/data/hf_models/Kimi-K3:ro -v /data/hzy/cache/kimi-dflash-fi0618-situ4460:/cache -e SGLANG_HOST_IP=174.1.60.8 -e PYTHONUNBUFFERED=1 -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 -e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1 -e NCCL_IB_HCA=mlx5_0\,mlx5_1\,mlx5_2\,mlx5_3 -e NCCL_IB_GID_INDEX=3 -e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1 -e NCCL_DEBUG=WARN -e NCCL_DEBUG_SUBSYS=INIT\,ENV -e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True -e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0 -e SGLANG_MOE_FUSED_GATE_RADIX=1 -e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f -e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache -e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions -e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.launch_server --model-path /data/hf_models/Kimi-K3 --served-model-name kimi-k3 --trust-remote-code --tp-size 32 --pp-size 1 --ep-size 4 --nnodes 4 --node-rank 3 --dist-init-addr 174.1.60.5:20000 --moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none --kv-cache-dtype bfloat16 --chunked-prefill-size 8192 --page-size 64 --mem-fraction-static 0.86 --mamba-full-memory-ratio 0.21 --mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache --max-running-requests 8 --cuda-graph-max-bs-decode 8 --dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging --host 0.0.0.0 --port 30000

View File

@ -0,0 +1 @@
docker run --rm --network host -v /data:/data -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.benchmark.serving --backend sglang --host 174.1.60.1 --port 32000 --model /data/hf_models/Kimi-K3 --tokenizer /data/hf_models/Kimi-K3 --dataset-name speed-bench --dataset-path /data/speedbench16k_complete.jsonl --num-prompts 40 --max-concurrency 8 --request-rate 10000 --speed-bench-output-len 512 --temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests 1 --output-details --output-file /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-tp32-final-20260902-123051/bench/tp32_speedbench16k_c8_o512.jsonl

View File

@ -0,0 +1 @@
docker run -d --name kimi3_pro6000_dp2_nospec_ab_tp32_router_0 --network host --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang_router.launch_router --policy round_robin --worker-urls http://174.1.60.1:30000 http://174.1.60.5:30000 --host 0.0.0.0 --port 32000

View File

@ -0,0 +1 @@
docker run --rm --network host -v /data:/data -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.benchmark.serving --backend sglang --host 174.1.60.1 --port 30000 --model /data/hf_models/Kimi-K3 --tokenizer /data/hf_models/Kimi-K3 --dataset-name speed-bench --dataset-path /data/speedbench16k_complete.jsonl --num-prompts 1 --max-concurrency 8 --request-rate 10000 --speed-bench-output-len 1 --temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests 0 --output-details --output-file /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-tp32-final-20260902-123051/bench/warm_a.jsonl

View File

@ -0,0 +1 @@
docker run --rm --network host -v /data:/data -e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 --entrypoint python3 local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1 -m sglang.benchmark.serving --backend sglang --host 174.1.60.5 --port 30000 --model /data/hf_models/Kimi-K3 --tokenizer /data/hf_models/Kimi-K3 --dataset-name speed-bench --dataset-path /data/speedbench16k_complete.jsonl --num-prompts 1 --max-concurrency 8 --request-rate 10000 --speed-bench-output-len 1 --temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests 0 --output-details --output-file /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/results/dp2-tp32-final-20260902-123051/bench/warm_b.jsonl

View File

@ -0,0 +1,3 @@
2af605e738d3a9b3f17310d54a81e81f1342b76eeeb12da7cd3f65abf6e0764f /data/speedbench16k_complete.jsonl
976aca142cb6183e0ed8f0fdd9395643233ce6ab9837e152f086b97c9bcfdf40 /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/run_dp2_nospec_ab.sh
28f994273a0f8b9d7ad0a3393400547c7f25cd369babc391d4a1f9553e7bcb9b /data/hzy/sskj/experiments/pro6000/kimi3_pro6000_dp2_nospec_ab/config.env

View File

@ -0,0 +1,11 @@
RUN_ID=dp2-tp32-final-20260902-123051
MODE=tp32
TP_SIZE=32
PP_SIZE=1
EP_SIZE=4
IMAGE=local/sglang:kimi-k3-pp-dflash-33863-fi0618-situ4460-kvbounds1
CHUNK_SIZE=8192
KV_DTYPE=bfloat16
NUM_PROMPTS=40
OUTPUT_LEN=512
CONCURRENCY=8

View File

@ -0,0 +1,8 @@
174.1.60.1 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.2 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.3 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.4 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.5 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.6 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.7 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f
174.1.60.8 sha256:7aa2be2d7af6cb11fea6d0c00d9bcd323ec986095dc9c4d3c997cff15ccb3b3f

View File

@ -0,0 +1,317 @@
#!/usr/bin/env bash
set -Eeuo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/config.env"
ACTION="${1:-status}"
MODE="${2:-tp32}"
DRY_RUN="${DRY_RUN:-0}"
[[ "$MODE" == tp32 || "$MODE" == pp8 ]] || {
echo "MODE must be tp32 or pp8" >&2
exit 2
}
if [[ "$MODE" == tp32 ]]; then
TP_SIZE=32
PP_SIZE=1
MEM_FRACTION=0.86
MAMBA_RATIO=0.21
else
TP_SIZE=4
PP_SIZE=8
MEM_FRACTION=0.84
MAMBA_RATIO=0.36
fi
RUN_ID="${RUN_ID:-${EXPERIMENT_BASE}-${MODE}-$(date +%Y%m%d-%H%M%S)}"
[[ "$RUN_ID" =~ ^[a-zA-Z0-9_.-]+$ ]] || exit 2
RESULT_ROOT="${SCRIPT_DIR}/results/${RUN_ID}"
SUDO_PASSWORD_FILE="${SUDO_PASSWORD_FILE:-/data/hzy/.sudo_password}"
ALL_NODES=("${REPLICA_A_NODES[@]}" "${REPLICA_B_NODES[@]}")
mkdir -p "${RESULT_ROOT}"/{bench,commands,logs,metadata}
remote() {
local host="$1" command
shift
if [[ "$host" == "${REPLICA_A_NODES[0]}" ]]; then
"$@"
else
printf -v command '%q ' "$@"
ssh "${SSH_OPTIONS[@]}" "${SSH_USER}@${host}" "$command"
fi
}
root() {
local host="$1" password command
shift
IFS= read -r password <"$SUDO_PASSWORD_FILE"
if [[ "$host" == "${REPLICA_A_NODES[0]}" ]]; then
printf '%s\n' "$password" | sudo -S -p '' -- "$@"
else
printf -v command '%q ' "$@"
printf '%s\n' "$password" | ssh "${SSH_OPTIONS[@]}" \
"${SSH_USER}@${host}" "sudo -S -p '' -- ${command}"
fi
}
container_name() {
printf '%s_%s_%s_%s' "$EXPERIMENT_BASE" "$MODE" "$1" "$2"
}
record_command() {
local key="$1"
shift
{
printf '%q' "$1"
shift
printf ' %q' "$@"
printf '\n'
} >"${RESULT_ROOT}/commands/${key}.cmd.txt"
}
emit() {
local key="$1" host="$2"
shift 2
record_command "$key" "$@"
printf '%s %s: ' "$key" "$host"
cat "${RESULT_ROOT}/commands/${key}.cmd.txt"
[[ "$DRY_RUN" == 1 ]] || root "$host" "$@"
}
build_server_command() {
local replica="$1" rank="$2" host head
if [[ "$replica" == a ]]; then
host="${REPLICA_A_NODES[$rank]}"
head="${REPLICA_A_NODES[0]}"
else
host="${REPLICA_B_NODES[$rank]}"
head="${REPLICA_B_NODES[0]}"
fi
HOST="$host"
CMD=(docker run -d --name "$(container_name "$replica" "$rank")"
--gpus all --network host --ipc=host --shm-size 32g
--ulimit memlock=-1 --device /dev/infiniband
-v "${MODEL_PATH}:${MODEL_PATH}:ro"
-v "${JIT_CACHE}:/cache"
-e "SGLANG_HOST_IP=${host}" -e PYTHONUNBUFFERED=1
-e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1
-e GLOO_SOCKET_IFNAME=bond0 -e NCCL_SOCKET_IFNAME=bond1
-e "NCCL_IB_HCA=${IB_DEVICES}" -e NCCL_IB_GID_INDEX=3
-e NCCL_IB_TIMEOUT=22 -e NCCL_IB_RETRY_CNT=7 -e NCCL_CUMEM_ENABLE=1
-e "NCCL_DEBUG=${NCCL_DEBUG_LEVEL}" -e NCCL_DEBUG_SUBSYS=INIT,ENV
-e PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
-e SGLANG_ENABLE_TP_MEMORY_INBALANCE_CHECK=0
-e SGLANG_MOE_FUSED_GATE_RADIX=1
-e FLASHINFER_WORKSPACE_BASE=/cache -e FLASHINFER_CUDA_ARCH_LIST=12.0f
-e SGLANG_CACHE_DIR=/cache -e XDG_CACHE_HOME=/cache
-e TRITON_CACHE_DIR=/cache/triton -e TORCH_EXTENSIONS_DIR=/cache/torch_extensions
-e CUDA_CACHE_PATH=/cache/cuda -e TMPDIR=/cache/tmp -e MAX_JOBS=4
--entrypoint python3 "$IMAGE" -m sglang.launch_server
--model-path "$MODEL_PATH" --served-model-name kimi-k3 --trust-remote-code
--tp-size "$TP_SIZE" --pp-size "$PP_SIZE" --ep-size "$EP_SIZE"
--nnodes 4 --node-rank "$rank" --dist-init-addr "${head}:${DIST_PORT}"
--moe-runner-backend flashinfer_mxfp4 --moe-a2a-backend none
--kv-cache-dtype "$KV_DTYPE"
--chunked-prefill-size "$CHUNK_SIZE" --page-size "$PAGE_SIZE"
--mem-fraction-static "$MEM_FRACTION"
--mamba-full-memory-ratio "$MAMBA_RATIO"
--mamba-radix-cache-strategy extra_buffer_lazy --disable-radix-cache
--max-running-requests "$MAX_RUNNING_REQUESTS"
--cuda-graph-max-bs-decode "$CUDA_GRAPH_MAX_BS"
--dist-timeout 3600 --enable-metrics --enable-request-time-stats-logging
--host 0.0.0.0 --port "$SERVER_PORT")
}
preflight() {
local host image reference="" gpu ports
for host in "${ALL_NODES[@]}"; do
image="$(root "$host" docker image inspect --format '{{.Id}}' "$IMAGE")"
[[ -z "$reference" ]] && reference="$image"
[[ "$image" == "$reference" ]] || {
echo "image mismatch: $host" >&2
return 1
}
remote "$host" test -r "${MODEL_PATH}/config.json"
remote "$host" test -e /dev/infiniband/uverbs0
root "$host" mkdir -p "${JIT_CACHE}/tmp"
gpu="$(remote "$host" nvidia-smi --query-compute-apps=pid --format=csv,noheader)"
[[ -z "$gpu" ]] || {
echo "GPU occupied: $host $gpu" >&2
return 1
}
ports=("$SERVER_PORT" "$DIST_PORT")
[[ "$host" == "${REPLICA_A_NODES[0]}" ]] && ports+=("$ROUTER_PORT")
remote "$host" python3 -c 'import socket,sys
for p in map(int,sys.argv[1:]):
with socket.socket() as s:
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
try:
s.bind(("0.0.0.0",p)); s.listen(1)
except OSError as exc:
raise SystemExit(f"TCP port {p} unavailable: {exc}")' "${ports[@]}"
printf '%s %s\n' "$host" "$image"
done >"${RESULT_ROOT}/metadata/preflight.txt"
test -r "$SPEED_BENCH_DATASET"
sha256sum "$SPEED_BENCH_DATASET" "${SCRIPT_DIR}"/*.sh \
"${SCRIPT_DIR}/config.env" >"${RESULT_ROOT}/metadata/input_sha256.txt"
{
printf 'RUN_ID=%s\nMODE=%s\n' "$RUN_ID" "$MODE"
printf 'TP_SIZE=%s\nPP_SIZE=%s\nEP_SIZE=%s\n' "$TP_SIZE" "$PP_SIZE" "$EP_SIZE"
printf 'IMAGE=%s\nCHUNK_SIZE=%s\nKV_DTYPE=%s\n' "$IMAGE" "$CHUNK_SIZE" "$KV_DTYPE"
printf 'NUM_PROMPTS=%s\nOUTPUT_LEN=%s\nCONCURRENCY=%s\n' \
"$NUM_PROMPTS" "$OUTPUT_LEN" "$CONCURRENCY"
} >"${RESULT_ROOT}/metadata/manifest.env"
}
wait_health() {
local host="$1" deadline=$((SECONDS + HEALTH_WAIT_S)) replica rank running
[[ "$DRY_RUN" == 1 ]] && return 0
while (( SECONDS < deadline )); do
curl -fsS --max-time 3 "http://${host}:${SERVER_PORT}/health" >/dev/null 2>&1 && return 0
sleep 5
done
echo "health timeout: $host:$SERVER_PORT" >&2
for replica in a b; do
for rank in 0 1 2 3; do
build_server_command "$replica" "$rank"
running="$(root "$HOST" docker inspect --format '{{.State.Running}}' \
"$(container_name "$replica" "$rank")" 2>/dev/null || true)"
printf '%s %s running=%s\n' "$replica" "$rank" "$running" >&2
done
done
return 1
}
start() {
local replica rank
[[ "$DRY_RUN" == 1 ]] || preflight
for replica in a b; do
for rank in 1 2 3 0; do
build_server_command "$replica" "$rank"
emit "${replica}_${rank}" "$HOST" "${CMD[@]}"
done
if [[ "$replica" == a ]]; then
wait_health "${REPLICA_A_NODES[0]}"
else
wait_health "${REPLICA_B_NODES[0]}"
fi
done
emit router "${REPLICA_A_NODES[0]}" docker run -d \
--name "$(container_name router 0)" --network host \
-v "${MODEL_PATH}:${MODEL_PATH}:ro" \
-e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1 \
--entrypoint python3 "$IMAGE" \
-m sglang_router.launch_router --policy round_robin \
--worker-urls "http://${REPLICA_A_NODES[0]}:${SERVER_PORT}" \
"http://${REPLICA_B_NODES[0]}:${SERVER_PORT}" \
--host 0.0.0.0 --port "$ROUTER_PORT"
[[ "$DRY_RUN" == 1 ]] || {
local deadline=$((SECONDS + 120))
until curl -fsS --max-time 3 "http://${REPLICA_A_NODES[0]}:${ROUTER_PORT}/health" >/dev/null 2>&1; do
(( SECONDS < deadline )) || return 1
sleep 2
done
}
}
bench_command() {
local host="$1" port="$2" prompts="$3" output_len="$4" warmups="$5" output="$6"
BENCH_CMD=(docker run --rm --network host -v /data:/data
-e HF_HUB_OFFLINE=1 -e TRANSFORMERS_OFFLINE=1
--entrypoint python3 "$IMAGE" -m sglang.benchmark.serving
--backend sglang --host "$host" --port "$port"
--model "$MODEL_PATH" --tokenizer "$MODEL_PATH"
--dataset-name speed-bench --dataset-path "$SPEED_BENCH_DATASET"
--num-prompts "$prompts" --max-concurrency "$CONCURRENCY" --request-rate 10000
--speed-bench-output-len "$output_len"
--temperature 0.0 --top-p 1.0 --seed 42 --warmup-requests "$warmups"
--output-details --output-file "$output")
}
warm_each_replica() {
local replica host output log
for replica in a b; do
[[ "$replica" == a ]] && host="${REPLICA_A_NODES[0]}" || host="${REPLICA_B_NODES[0]}"
output="${RESULT_ROOT}/bench/warm_${replica}.jsonl"
log="${RESULT_ROOT}/bench/warm_${replica}.log"
bench_command "$host" "$SERVER_PORT" 1 1 0 "$output"
record_command "warm_${replica}" "${BENCH_CMD[@]}"
root "${REPLICA_A_NODES[0]}" "${BENCH_CMD[@]}" >"$log" 2>&1
done
}
benchmark() {
local output="${RESULT_ROOT}/bench/${MODE}_speedbench16k_c${CONCURRENCY}_o${OUTPUT_LEN}.jsonl"
local log="${RESULT_ROOT}/bench/${MODE}_speedbench16k_c${CONCURRENCY}_o${OUTPUT_LEN}.log"
warm_each_replica
bench_command "${REPLICA_A_NODES[0]}" "$ROUTER_PORT" \
"$NUM_PROMPTS" "$OUTPUT_LEN" 1 "$output"
record_command benchmark "${BENCH_CMD[@]}"
root "${REPLICA_A_NODES[0]}" "${BENCH_CMD[@]}" >"$log" 2>&1
}
logs() {
local replica rank
for replica in a b; do
for rank in 0 1 2 3; do
build_server_command "$replica" "$rank"
root "$HOST" docker logs "$(container_name "$replica" "$rank")" \
>"${RESULT_ROOT}/logs/${replica}_${rank}.log" 2>&1 || true
done
done
root "${REPLICA_A_NODES[0]}" docker logs "$(container_name router 0)" \
>"${RESULT_ROOT}/logs/router.log" 2>&1 || true
}
stop() {
local replica rank
root "${REPLICA_A_NODES[0]}" docker rm -f "$(container_name router 0)" >/dev/null 2>&1 || true
for replica in b a; do
for rank in 0 1 2 3; do
build_server_command "$replica" "$rank"
root "$HOST" docker rm -f "$(container_name "$replica" "$rank")" >/dev/null 2>&1 || true
done
done
}
on_error() {
local rc=$?
trap - ERR
logs || true
echo "FAILED rc=$rc; containers retained; evidence: $RESULT_ROOT" >&2
exit "$rc"
}
if [[ "$DRY_RUN" != 1 ]]; then
ip -o -4 addr show | grep -q " ${REPLICA_A_NODES[0]}/" || {
echo 'Run this entry on 601 only' >&2
exit 2
}
trap on_error ERR
fi
case "$ACTION" in
dry-run) DRY_RUN=1; start ;;
preflight) preflight ;;
start) start ;;
bench) benchmark; logs ;;
logs) logs ;;
stop) stop ;;
status)
for host in "${ALL_NODES[@]}"; do
printf '%s\n' "$host"
root "$host" docker ps --filter "name=${EXPERIMENT_BASE}" --format '{{.Names}} {{.Status}}'
done
;;
all)
start
benchmark
logs
stop
;;
*)
echo 'Usage: run_dp2_nospec_ab.sh {dry-run|preflight|start|bench|logs|stop|status|all} {tp32|pp8}' >&2
exit 2
;;
esac