Skip to content

Commit 9ecc56d

Browse files
ApostaCclaudecquil11
authored
[LMCache] Add LMCache arm on tuned DSV4 FP4 B300 vLLM AgentX recipe / 在调优后的 DSV4 FP4 B300 vLLM AgentX 配方上新增 LMCache 分支 (#2232)
* feat(agentic): add LMCache arm to tuned DSV4 FP4 B300 vLLM AgentX recipe Combine the tuned B300 recipe from PR #2225 (nightly image, sparse DSV4 FlashInfer attention, FULL_DECODE_ONLY CUDA graphs, AMXF4 mega-MoE) with the LMCache 0.5.1 KV-offload backend from PR #2153, mirroring the B200 arm in PR #2231. The lmcache arm keeps the stock PyTorch caching allocator instead of PYTORCH_ALLOC_CONF=expandable_segments:True (expandable-segment cuMem/VMM allocations cannot be CUDA-IPC-exported to the LMCache MP server, the same failure mode as --enable-cumem-allocator on B200) and runs otherwise identical serving flags, so backends are directly comparable. Adds a standalone dsv4-fp4-b300-vllm-agentic-lmcache config section mirroring the vllm-simple DEP4/DEP8 concurrency ladders and a perf-changelog entry triggering it. 中文:将 PR #2225 的 B300 调优配方(nightly 镜像、稀疏 DSV4 FlashInfer 注意力、FULL_DECODE_ONLY CUDA graph、AMXF4 mega-MoE)与 PR #2153 的 LMCache 0.5.1 KV 卸载后端合并,对应 B200 的 PR #2231。lmcache 分支仅以 默认 PyTorch 缓存分配器替代 PYTORCH_ALLOC_CONF=expandable_segments:True (expandable segments 的 cuMem/VMM 分配无法通过 CUDA IPC 导出给 LMCache MP server,与 B200 上 --enable-cumem-allocator 的失败模式相同),其余 serving 参数与其他分支保持一致,便于卸载后端间直接对比。新增独立的 dsv4-fp4-b300-vllm-agentic-lmcache 配置(测试点与 vllm-simple 的 DEP4/DEP8 阶梯对齐)及触发它的 perf-changelog 条目。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: fill in perf-changelog pr-link with PR #2232 中文:将 perf-changelog 条目的 pr-link 填写为 PR #2232。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(agentic): tier lmcache GPU mem util and add pure-TP lmcache arms Bring-up sweep on PR #2232 (run 29463061871) showed the lmcache arm has <1 GiB GPU headroom at the recipe's gpu-memory-utilization 0.96 (LMCache MP server GPU worker + DeepGEMM/TileLang JIT driver allocations + no expandable segments): every DEP8 point OOMed deterministically growing the torch pool, and 2/9 DEP4 points failed at the margin (JIT module load driver OOM at startup; cuBLAS workspace failure mid-run). Derate DEP8 to the B200-proven 0.92 and DEP4/pure-TP to 0.94. Also add pure-TP LMCache arms (TP8 and TP4, conc [8, 12, 16]) mirroring the upper end of the parent's GPU-resident TP ladders and the B200 lmcache TP8 ladder, for a direct GPU-cache vs LMCache-offload comparison. 中文:PR #2232 的调试扫描(run 29463061871)显示 lmcache 分支在配方的 gpu-memory-utilization 0.96 下 GPU 余量不足 1 GiB(LMCache MP server 的 GPU worker + DeepGEMM/TileLang JIT 驱动层分配 + 无 expandable segments):所有 DEP8 测试点在扩展 torch 内存池时必然 OOM,DEP4 有 2/9 测试点在边缘失败(启动时 JIT 模块加载驱动 OOM;运行中 cuBLAS workspace 失败)。将 DEP8 降额至 B200 验证过的 0.92,DEP4 与纯 TP 降额至 0.94。 另新增纯 TP 的 LMCache 分支(TP8 与 TP4,并发 [8, 12, 16]),与父配置 GPU 驻留 TP 阶梯的高段及 B200 lmcache TP8 阶梯对齐,便于 GPU 缓存与 LMCache 卸载的直接对比。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(matrix): accept agentic SWE-bench eval rows in the changelog matrix schema PR #1947 made process_changelog's eval pass select single-node agentic (SWE-bench) eval rows via mark_eval_entries --evals-only, but ChangelogMatrixEntry.evals still only accepted SingleNodeMatrixEntry, so any changelog entry touching an agentic-coding config now fails validation (missing isl/osl, extra kv-offloading/scenario-type/duration). Accept Union[SingleNodeMatrixEntry, SingleNodeAgenticMatrixEntry] in evals and add run-eval/eval-only (default false) to the agentic entry model, with a regression test. 中文:PR #1947 使 process_changelog 的评估生成步骤通过 mark_eval_entries --evals-only 选择单节点 agentic(SWE-bench)评估行,但 ChangelogMatrixEntry.evals 仍只接受 SingleNodeMatrixEntry,导致任何涉及 agentic-coding 配置的变更日志条目都无法通过校验(缺少 isl/osl,多出 kv-offloading/scenario-type/duration 字段)。将 evals 改为接受 Union[SingleNodeMatrixEntry, SingleNodeAgenticMatrixEntry],并为 agentic 条目模型添加 run-eval/eval-only(默认 false)字段,附回归测试。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Revert "fix(matrix): accept agentic SWE-bench eval rows in the changelog matrix schema" This reverts commit bdc33bab6a72a0847c26be0dbe4e10bd8fe4a2eb to keep this PR scoped to the B300 LMCache recipe. The PR #1947 schema regression (agentic changelog entries fail matrix validation) needs a standalone fix PR; until that merges, check-changelog on this PR is expected to fail. 中文:回退 bdc33ba,使本 PR 仅保留 B300 LMCache 配方相关改动。PR #1947 造成的 schema 回归(agentic 变更日志条目无法通过矩阵校验)需通过独立 PR 修复;在该修复合并前,本 PR 的 check-changelog 预期会失败。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * refactor(agentic): fold B300 lmcache arms into the official agentic config Per review: run the LMCache sweep together with the official dsv4-fp4-b300-vllm-agentic config instead of a separate section. The standalone dsv4-fp4-b300-vllm-agentic-lmcache config is removed; the parent now carries one lmcache arm per official arm at a +4 conc offset (TP4 [32, 36, 40, 44]; DEP4 [36, 44, 52, 60, 68, 76]; DEP8 [68, 100, 116, 132, 148, 164, 180, 196, 228]), all inside the ranges validated in the PR #2232 bring-up sweeps. The changelog entry now triggers only the parent config. 中文:按评审意见,LMCache 与官方 dsv4-fp4-b300-vllm-agentic 配置在同一 扫描中运行,不再单列配置段。移除独立的 dsv4-fp4-b300-vllm-agentic-lmcache 配置;父配置为每个官方分支各增加一个 +4 并发偏移的 lmcache 分支(TP4 [32, 36, 40, 44];DEP4 [36, 44, 52, 60, 68, 76];DEP8 [68, 100, 116, 132, 148, 164, 180, 196, 228]),全部处于 PR #2232 调试扫描验证过的范围内。变更日志条目现仅触发 父配置。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore(agentic): DEP8 lmcache ladder at +16 conc offset capped at 208 Per review: offset the DEP8 lmcache arm by +16 conc from the official GPU-resident DEP8 ladder and cap the maximum at 208, giving [80, 112, 128, 144, 160, 176, 192, 208]. TP4/DEP4 keep the +4 offset. 中文:按评审意见,DEP8 lmcache 分支相对官方 GPU 驻留 DEP8 阶梯偏移 +16 并发,最大并发限制为 208,即 [80, 112, 128, 144, 160, 176, 192, 208]。 TP4/DEP4 保持 +4 偏移。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore(agentic): DEP8 lmcache ladder at +8 conc offset capped at 208 Correct the DEP8 lmcache offset from +16 to +8 (still capped at 208), giving [72, 104, 120, 136, 152, 168, 184, 200]. 中文:将 DEP8 lmcache 分支的并发偏移从 +16 更正为 +8(最大并发仍限制为 208),即 [72, 104, 120, 136, 152, 168, 184, 200]。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Update perf-changelog.yaml --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Cameron Quilici <cjquilici@gmail.com>
1 parent 75d7e55 commit 9ecc56d

3 files changed

Lines changed: 135 additions & 8 deletions

File tree

benchmarks/single_node/agentic/dsv4_fp4_b300_vllm.sh

Lines changed: 113 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ set -eo pipefail
33
set -x
44

55
# Agentic trace replay benchmark for DeepSeek-V4-Pro FP4 on B300 using vLLM.
6-
# v4pro-b300.yaml TP4, DEP4, and DEP8 recipe. SimpleCPUOffload / MooncakeStore
6+
# v4pro-b300.yaml TP4, DEP4, and DEP8 recipe. SimpleCPUOffload /
7+
# MooncakeStore / LMCache
78
#
89
# Image is configured in nvidia-master.yaml. The recipe uses FP8 KV cache,
910
# sparse DeepSeek-V4 FlashInfer attention with an FP4 indexer cache, mega-MoE,
@@ -12,8 +13,9 @@ set -x
1213
# Required env vars:
1314
# MODEL, TP, CONC, KV_OFFLOADING, TOTAL_CPU_DRAM_GB, RESULT_DIR
1415
#
15-
# TP4, TP8, and DEP8 (TP8 + DP-attention) are GPU-resident (KV_OFFLOADING=none).
16-
# DEP4 uses KV_OFFLOADING=dram with KV_OFFLOAD_BACKEND=vllm-simple or mooncake.
16+
# GPU-resident arms (TP4 and DEP8) use KV_OFFLOADING=none. DRAM offload
17+
# arms (TP and DEP) use KV_OFFLOADING=dram with
18+
# KV_OFFLOAD_BACKEND=vllm-simple, mooncake, or lmcache.
1719

1820
source "$(dirname "$0")/../../benchmark_lib.sh"
1921

@@ -33,8 +35,8 @@ if [ "$DP_ATTENTION" = "true" ] && [ $((2 * CONC % TP)) -ne 0 ]; then
3335
exit 1
3436
fi
3537

36-
# DEP8 (TP8 + DP-attention) is a GPU-resident, high-concurrency arm that is
37-
# tuned separately from the smaller DEP4 arm (larger prefill token budget,
38+
# DEP8 (TP8 + DP-attention) is a high-concurrency arm that is tuned
39+
# separately from the smaller DEP4 arm (larger prefill token budget,
3840
# long-prefill chunking, and a lower GPU-memory-utilization headroom).
3941
IS_DEP8=false
4042
if [ "$DP_ATTENTION" = "true" ] && [ "$TP" -eq 8 ]; then
@@ -89,11 +91,13 @@ export VLLM_USE_RUST_FRONTEND=1
8991
SERVER_LOG="$RESULT_DIR/server.log"
9092
ROUTER_LOG="$RESULT_DIR/router.log"
9193
MOONCAKE_MASTER_LOG="$RESULT_DIR/mooncake_master.log"
94+
LMCACHE_SERVER_LOG="$RESULT_DIR/lmcache_server.log"
9295
mkdir -p "$RESULT_DIR"
9396

9497
SERVER_PID=""
9598
ROUTER_PID=""
9699
MOONCAKE_MASTER_PID=""
100+
LMCACHE_SERVER_PID=""
97101

98102
# The generated TOTAL_CPU_DRAM_GB budget is proportional to allocated GPUs.
99103
# On cluster:b300-nv, dram-utilization=0.80 and DEP4 resolve to roughly the
@@ -186,6 +190,89 @@ EOF
186190
OFFLOAD_CONFIG='{"kv_connector":"MooncakeStoreConnector","kv_role":"kv_both","kv_connector_extra_config":{"load_async":true}}'
187191
OFFLOAD_ARGS=(--kv-transfer-config "$OFFLOAD_CONFIG")
188192
;;
193+
lmcache)
194+
require_agentic_kv_offload_backend lmcache
195+
# The LMCache MP server owns the host-DRAM KV pool as one shared
196+
# tier; vLLM ranks attach via LMCacheMPConnector, so the aggregate
197+
# host budget is passed through undivided (unlike Mooncake's
198+
# per-rank segments). Follows the LMCache DeepSeek-V4 recipe
199+
# (docs.lmcache.ai/recipes/deepseek_v4_flash.html); LMCache handles
200+
# DSV4's Sparse-MLA hybrid KV geometries automatically.
201+
LMCACHE_VERSION=0.5.1
202+
agentic_pip_install --quiet --no-cache-dir "lmcache==$LMCACHE_VERSION"
203+
python3 -c "import lmcache.integration.vllm.lmcache_mp_connector" >/dev/null
204+
205+
LMCACHE_HOST=127.0.0.1
206+
LMCACHE_PORT=$((PORT + 12000))
207+
LMCACHE_HTTP_PORT=$((PORT + 13000))
208+
# LMCacheMPConnector concatenates lmcache.mp.host and port into the
209+
# ZMQ endpoint. Bind the server to a raw host, but pass the connector
210+
# a ZMQ-style host string.
211+
LMCACHE_CONNECT_HOST="tcp://$LMCACHE_HOST"
212+
# Pool target derated to 75% of the aggregate budget: pinned host
213+
# memory is unswappable and also consumes GPU-side mapping
214+
# resources, so leave headroom for vLLM host buffers and the OS.
215+
# Full-budget targets OOM-killed the node (host OOM-killer or
216+
# cudaErrorMemoryAllocation) as the cache filled past ~2 TB during
217+
# PR #2153 bring-up.
218+
LMCACHE_L1_SIZE_GB=$((TOTAL_CPU_DRAM_GB * 3 / 4))
219+
# The pool grows lazily from the initial allocation, so the full
220+
# --l1-size-gb target is not pinned at startup.
221+
LMCACHE_L1_INIT_SIZE_GB=20
222+
LMCACHE_MQ_TIMEOUT=300
223+
# Identical prefixes must hash to identical cache keys across DP ranks.
224+
export PYTHONHASHSEED=0
225+
# Per-engine scheduler stats every 5s, to diagnose per-DP-rank KV
226+
# cache imbalance under the session-sticky router.
227+
export VLLM_LOG_STATS_INTERVAL=5
228+
229+
echo "Starting LMCache MP server on port $LMCACHE_PORT..."
230+
# One GPU-side transfer worker avoids concurrent-GPU-transfer stalls
231+
# under heavy async-load pressure; CPU-side workers stay at 8.
232+
lmcache server \
233+
--host "$LMCACHE_HOST" \
234+
--port "$LMCACHE_PORT" \
235+
--http-host "$LMCACHE_HOST" \
236+
--http-port "$LMCACHE_HTTP_PORT" \
237+
--l1-size-gb "$LMCACHE_L1_SIZE_GB" \
238+
--l1-init-size-gb "$LMCACHE_L1_INIT_SIZE_GB" \
239+
--max-gpu-workers 1 \
240+
--max-cpu-workers 8 \
241+
--chunk-size 1024 \
242+
--l1-align-bytes 16384 \
243+
--eviction-trigger-watermark 0.85 \
244+
--eviction-ratio 0.10 \
245+
--eviction-policy LRU \
246+
--supported-transfer-mode lmcache_driven \
247+
--no-separate-object-groups \
248+
> "$LMCACHE_SERVER_LOG" 2>&1 &
249+
LMCACHE_SERVER_PID=$!
250+
LMCACHE_READY=0
251+
for _ in $(seq 1 60); do
252+
if ! kill -0 "$LMCACHE_SERVER_PID" 2>/dev/null; then
253+
echo "LMCache server died during startup." >&2
254+
cat "$LMCACHE_SERVER_LOG" >&2
255+
exit 1
256+
fi
257+
if curl --output /dev/null --silent --fail \
258+
"http://127.0.0.1:$LMCACHE_HTTP_PORT/healthcheck"; then
259+
LMCACHE_READY=1
260+
break
261+
fi
262+
sleep 2
263+
done
264+
if [ "$LMCACHE_READY" -ne 1 ]; then
265+
echo "LMCache server did not become healthy in time." >&2
266+
cat "$LMCACHE_SERVER_LOG" >&2
267+
exit 1
268+
fi
269+
270+
unset VLLM_USE_SIMPLE_KV_OFFLOAD
271+
OFFLOAD_ARGS=(
272+
--kv-transfer-config
273+
"{\"kv_connector\":\"LMCacheMPConnector\",\"kv_role\":\"kv_both\",\"kv_connector_extra_config\":{\"lmcache.mp.host\":\"$LMCACHE_CONNECT_HOST\",\"lmcache.mp.port\":$LMCACHE_PORT,\"lmcache.mp.mq_timeout\":$LMCACHE_MQ_TIMEOUT}}"
274+
)
275+
;;
189276
*)
190277
echo "Error: unsupported B300 KV_OFFLOAD_BACKEND='$KV_OFFLOAD_BACKEND'" >&2
191278
exit 1
@@ -199,7 +286,15 @@ fi
199286

200287
TP_ARGS=()
201288
if [ "$DP_ATTENTION" = "true" ]; then
202-
export PYTORCH_ALLOC_CONF=expandable_segments:True
289+
# LMCacheMPConnector exports the KV cache to the LMCache server through
290+
# legacy CUDA IPC handles, and expandable-segment (cuMem/VMM) allocations
291+
# cannot be exported that way (register_kv_caches fails with
292+
# cudaErrorInvalidValue, same failure mode as --enable-cumem-allocator on
293+
# the B200 lmcache arm in PR #2231), so the lmcache arm keeps the stock
294+
# caching allocator.
295+
if [ "$KV_OFFLOAD_BACKEND" != "lmcache" ]; then
296+
export PYTORCH_ALLOC_CONF=expandable_segments:True
297+
fi
203298
else
204299
export VLLM_ALLREDUCE_USE_FLASHINFER=1
205300
export VLLM_FLASHINFER_ALLREDUCE_BACKEND=auto
@@ -217,8 +312,8 @@ fi
217312
if [ "$DP_ATTENTION" = "true" ]; then
218313
MODE_ARGS+=(--prefill-schedule-interval 8)
219314
if [ "$IS_DEP8" = "true" ]; then
220-
# GPU-resident DEP8 gets a larger prefill token budget and chunks long
221-
# prefills so decode latency stays bounded at high concurrency.
315+
# DEP8 gets a larger prefill token budget and chunks long prefills
316+
# so decode latency stays bounded at high concurrency.
222317
MODE_ARGS+=(
223318
--max-num-batched-tokens 16384
224319
--long-prefill-token-threshold 4096
@@ -254,6 +349,16 @@ GPU_MEM_UTIL=0.96
254349
if [ "$IS_DEP8" = "true" ]; then
255350
GPU_MEM_UTIL=0.92
256351
fi
352+
# The lmcache arm needs extra headroom on the other topologies too: the
353+
# LMCache MP server keeps a GPU worker (~0.8 GiB CUDA context + staging
354+
# buffers) on every GPU and the arm cannot run expandable segments (the KV
355+
# cache must stay legacy-CUDA-IPC-exportable), so at 0.96 the PR #2232
356+
# bring-up sweep hit DeepGEMM workspace/JIT-loader OOMs. 0.94 was validated
357+
# for lmcache TP and DEP4 in the same sweep; lmcache DEP8 keeps the 0.92
358+
# above (also validated).
359+
if [ "$KV_OFFLOAD_BACKEND" = "lmcache" ] && [ "$IS_DEP8" != "true" ]; then
360+
GPU_MEM_UTIL=0.94
361+
fi
257362

258363
{ set +x; } 2>/dev/null
259364
VLLM_CMD=(

configs/nvidia-master.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1753,6 +1753,17 @@ dsv4-fp4-b300-vllm-agentic:
17531753
- { tp: 4, ep: 4, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: vllm-simple, version: "904e4ec" }, conc-list: [32, 40, 48, 56, 64, 72], router: { name: vllm-router, version: "0.1.14" } }
17541754
# DEP8 SimpleCPU
17551755
- { tp: 8, ep: 8, dp-attn: true, kv-offloading: none, conc-list: [64, 96, 112, 128, 144, 160, 176, 192, 224], router: { name: vllm-router, version: "0.1.14" } }
1756+
# LMCache arms: offset each official ladder above so the backends
1757+
# sample distinct points on the same recipe — TP4/DEP4 at +4 conc,
1758+
# DEP8 at +8 conc capped at 208. Bring-up validated in the PR #2232
1759+
# sweeps (runs 29463061871 and 29535333851): TP/DEP4 at
1760+
# gpu-memory-utilization 0.94, DEP8 at 0.92.
1761+
# TP4 LMCache (vs TP4 SimpleCPU)
1762+
- { tp: 4, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.1" }, conc-list: [32, 36, 40, 44] }
1763+
# DEP4 LMCache (vs DEP4 SimpleCPU)
1764+
- { tp: 4, ep: 4, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.1" }, conc-list: [36, 44, 52, 60, 68, 76], router: { name: vllm-router, version: "0.1.14" } }
1765+
# DEP8 LMCache (vs GPU-resident DEP8)
1766+
- { tp: 8, ep: 8, dp-attn: true, kv-offloading: dram, kv-offload-backend: { name: lmcache, version: "0.5.1" }, conc-list: [72, 104, 120, 136, 152, 168, 184, 200], router: { name: vllm-router, version: "0.1.14" } }
17561767

17571768
dsv4-fp4-b300-trt:
17581769
image: ghcr.io#semianalysisai/trtllm-deepseek-v4:feat-deepseek_v4-c185066

perf-changelog.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4982,3 +4982,14 @@
49824982
- "DEP arm runs conc-list [48] only (was [48, 64, 96, 128, 192, 256, 512]): conc 48 is the frontier peak (163 tok/s/gpu out, ttft 2.8s); conc >=64 overflows the HBM+host radix cache (GPU hit 0.93->0.57 at 48->64) and thrashes on re-prefill, so it is strictly dominated"
49834983
- "Low-latency TP8 arm (conc [1, 2, 4, 8, 16, 32], fp8 KV + cutedsl bf16 GEMM) unchanged; DEP mirrors the proven dsv4-fp4-b300-sglang tp8/ep8/dp-attn DEP arm"
49844984
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2281
4985+
4986+
- config-keys:
4987+
- dsv4-fp4-b300-vllm-agentic
4988+
scenario-type:
4989+
- agentic-coding
4990+
description:
4991+
- "Add LMCache 0.5.1 DRAM KV-offload arms to the official B300 AgentX config from PR #2241 (sparse DSV4 FlashInfer attention, AMXF4 mega-MoE, FULL_DECODE_ONLY CUDA graphs, image vllm/vllm-openai:nightly-dev-x86_64-cu13.0.1-904e4ec), so LMCache is benchmarked in the same sweep as the SimpleCPU and GPU-resident arms"
4992+
- "LMCache MP server (lmcache_driven transfer mode) + LMCacheMPConnector per PR #2153/#2231; L1 pool derated to 75% of TOTAL_CPU_DRAM_GB; PYTORCH_ALLOC_CONF=expandable_segments:True dropped on the lmcache arms only (VMM allocations cannot be CUDA-IPC-exported to the LMCache server, same failure mode as cuMem on B200); gpu-memory-utilization 0.92 on lmcache DEP8 (matches the official DEP8 derate) and 0.94 on lmcache TP4/DEP4 (at 0.96 the PR #2232 bring-up sweeps hit torch-pool, DeepGEMM-JIT, and cuBLAS-workspace OOMs; 23 lmcache points validated green in runs 29463061871/29535333851 after the derate)"
4993+
- "LMCache ladders offset the official arms: TP4 +4 conc [32, 36, 40, 44] vs SimpleCPU [28, 32, 36, 40]; DEP4 +4 conc [36, 44, 52, 60, 68, 76] vs SimpleCPU [32, 40, 48, 56, 64, 72]; DEP8 +8 conc capped at 208 [72, 104, 120, 136, 152, 168, 184, 200] vs GPU-resident [64, 96, 112, 128, 144, 160, 176, 192, 224]"
4994+
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/2232
4995+

0 commit comments

Comments
 (0)