feat(connector): support tensor-parallel KV cache#91
Merged
Conversation
- isolate each TP rank in a contiguous storage lane and validate runtime geometry - publish chunks only after all distinct TP rank stores complete - bind background CUDA work and registered staging buffers to the owning worker - propagate TP and remote-code options through the benchmark and server startup paths - cover TP layout, commit quorum, IPC mapping, and benchmark command contracts
- wait for pending store commits during backend drain - retain async prefix request tokens until suffix allocation completes - wait for a real staging lease when store buffers are exhausted - cover TP commit drain, suffix population, and staging backpressure regressions
- size benchmark caches from model, block, and tensor-parallel geometry - propagate TP and remote-code options to benchmark load generators - reject unsupported FP8 and incompatible TP KV-head layouts - cover GLM sizing and model-aware benchmark command contracts
- share the 128-token default across benchmark entry points - preserve 16-token decoding for legacy benchmark manifests - provide the TP-rank API in CPU-only vLLM test stubs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Model geometry
For
glm-4-9b-chat-1mwith TP=2 and block size 128:multi_query_group_num)kv_channels)skip_l2=trueThe model-aware sizing keeps total KV capacity comparable across block sizes and avoids the earlier fixed-geometry rejection.
Benchmark
All rows processed 200 requests / 1,999,600 input tokens with 0 errors.
At block size 128, DaseR warm mean TTFT is 2.92% lower than LMCache and warm prompt throughput is 2.76% higher. Relative to baseline, LMCache and DaseR reduce mean TTFT by 18.19x and 18.74x respectively.
Block-size comparison
Increasing the chunk/block size from 16 to 128 improves LMCache warm throughput by 3.22x and reduces mean TTFT by 69.14%. DaseR remains within 0.5%, showing that the earlier LMCache gap was dominated by its 16-token MP chunk granularity rather than cache misses or connector-version selection.
Correctness
The matching cross-backend outputs and identical repeat-run drift show no DaseR-specific correctness regression.
Validation
345 passed116 passed