Conversation
|
Independent reproduction on a 3× RTX 5080 (16 GB) host — the target hardware class this PR matters for. Base: Before (stock 8db1d1d): the model loads and serves short turns, and every ≥10 k prompt dies: The boundary is tight and reproducible: 93 experts (0.61 GiB) stages; 107 (0.72 GiB) does not. Reading After (this PR, built for sm_120): the same 12,422-token prompt completes at 113.45 t/s, and a Two things that may be worth a line in the PR text rather than the code:
Also on this build, for what it is worth: the explicit expert cache works at every size we tried |
Fixes CUDA SSD streaming for routed MoE models.
--ssd-streaming-cache-expertsis a bounded CUDA LRU, released on model/lifecycle changes.--expert-profile/DS4_EXPERT_HOTLISTto collect routed-expert locality data.AProjQ4 matched prefill (GB10, e9528de, ctx 1024, forced batch prefill):
AProjQ8 cache-size tuning smoke (GB10, ctx 1024, deterministic prompt):
The two locally available Flash variants show the same capacity curve: 256 is below the routed working set, 1024 is the measured throughput/memory compromise, and 2048 favors generation throughput where the extra memory is available. Flash hit/miss at 256/512/1024/2048: 755/18,056; 5,027/13,784; 11,066/7,745; 13,809/5,002. Vision: 721/18,048; 8,707/10,062; 11,546/7,223; 13,922/4,847. These are single-run GB10/model-specific tuning observations, not a general performance claim.
A follow-up can expose a non-binding runtime hint based on
4 × (local routed layers × top-k)when the memory planner permits it; this PR intentionally does not alter the user-selected cache budget.Validation:
make -j4 cuda-spark: PASSmake test-cuda-q8-scratch: PASS