Name and Version
$ llama-cli --version
version: 9924 (90e0f5c)
built with GNU 13.3.0 for Linux x86_64
Operating systems
Linux
GGML backends
CUDA
Hardware
GPU: 5x NVIDIA CUDA (2x RTX 3090, RTX 5060 Ti, 2x RTX 4060 Ti), 96 GiB total VRAM
CPU: Intel Core i5-13600K (14 cores / 20 threads)
RAM: 128 GB DDR4-3200
OS: Linux x86_64 (Ubuntu 24.04)
Models
DeepSeek-V4-Flash (DSV4-Flash), GGUF, MXFP4 quant, 5 shards.
Problem description & steps to reproduce
Edit (root cause found): (see comment below) The driver is not the KV cache and not a host-side allocation as such, it is the DSV4 lightning-indexer compute buffer. The scores lid_kq = ggml_mul_mat(indexer_k, indexer_q) in build_lid_top_k() are materialised full-width per CSA layer (4 GiB/layer at ctx 131072, 512 MiB at 16384 -- exactly ctx-proportional, x21 layers) just to pick a top-512, and are not covered by flash-attention. The host-RAM growth is a second-order effect of MoE expert-offload under memory pressure. Full analysis + GGML_SCHED_DEBUG=2 evidence in the followup comment below.
With my setup, loading DeepSeek V4 Flash with --ctx-size 131072 uses about 110.5 GiB of system RAM on current master (90e0f5c, v9924) vs 71 GiB on the older fairydreaming be00e7771 build with identical flags. That's about 38-40 GiB more and it grows with context, roughly 0.33 MiB per token. GPU VRAM is comparable across builds at matched splits (~82 GiB old vs ~85 GiB new), so the increase is host side, and it reproduces on unmodified master.
Binary: Commit: RSS @ ctx 131072:
fairydreaming be00e7771 (v9854) 71 GiB
master with #25402 15f7321 (v9907) 110 GiB
clean master 90e0f5c (v9924) 110.5 GiB
local stall-fix branch ec1c342da (v9910) 107 GiB
Regression ~+38 GiB at ctx 131072, ~0.33 MiB per token of ctx.
GPU VRAM comparable across builds (~82-86 GiB total; run-to-run --fit variation).
Reproduction:
llama-server --ctx-size 131072 --ubatch-size 512 --fit on --fit-ctx 131072
--fit-target 1024,1024,2048,2048,2048 --no-mmap --flash-attn on --parallel 1
--fit-target is my 5-device split, adjust for your setup
env: GGML_CUDA_NO_PINNED=1 ; model: DeepSeek-V4-Flash MXFP4
poll /health until {"status":"ok"}, then read VmRSS from /proc//status
repeat per commit, GPUs drained between runs
Both my local build ec1c342da (107 vs 110 GiB) and #25402 (a checkpointing PR, now closed) are exonerated. I think the problem is somewhere between be00e7771 and 90e0f5c. I'll likely dig deeper when I have the cycles but wanted to get this out there.
I searched open and closed issues and found no existing report, the closest ones (#25408, #24265, #21690) are distinct.
The measurements and tracker search were aided by Claude.
First Bad Commit
Not bisected. Last known good: be00e7771 (v9854, 71 GiB). Known bad: 90e0f5c (v9924, 110.5 GiB). First bad commit is somewhere in that range.
Relevant log output
Logs
# Load-time host RSS at /health OK, ctx 131072, identical llama-server flags.
# RSS = VmRSS from /proc/<pid>/status. VRAM = per-device used at load (MiB, 5 GPUs).
# GPUs drained between runs.
be00e7771 v9854 old fairydreaming base
RSS = 71 GiB
VRAM = 22079 22686 13163 13265 13160 MiB (total ~82 GiB)
15f732183 v9907 new base
RSS = 110 GiB
VRAM = 22859 22824 13407 13823 1904 MiB (total ~73 GiB; the 5th device took a
degenerate --fit split from VRAM residue, so ~11 GiB spilled to host here)
ec1c342da v9910 stall-fix branch on the new base
RSS = 107 GiB
VRAM = 22857 22826 13045 13989 13908 MiB (total ~85 GiB)
90e0f5cfc v9924 clean current master (separately drained run)
RSS = 110.5 GiB
# Cleanest matched-VRAM comparison: be00e7771 (71 GiB at ~82 GiB VRAM) vs the new-base
# build ec1c342da (107 GiB at ~85 GiB VRAM). VRAM is comparable, slightly higher on the
# new build, yet host RSS is +36 GiB. The ~110 GiB new-lineage figure and the
# ~0.33 MiB/token slope reproduce across three independent new-base builds vs the old
# base. The 15f732183 row's low VRAM total is the noted degenerate split and is not the
# basis of the claim.
Name and Version
$ llama-cli --version
version: 9924 (90e0f5c)
built with GNU 13.3.0 for Linux x86_64
Operating systems
Linux
GGML backends
CUDA
Hardware
GPU: 5x NVIDIA CUDA (2x RTX 3090, RTX 5060 Ti, 2x RTX 4060 Ti), 96 GiB total VRAM
CPU: Intel Core i5-13600K (14 cores / 20 threads)
RAM: 128 GB DDR4-3200
OS: Linux x86_64 (Ubuntu 24.04)
Models
DeepSeek-V4-Flash (DSV4-Flash), GGUF, MXFP4 quant, 5 shards.
Problem description & steps to reproduce
Edit (root cause found): (see comment below) The driver is not the KV cache and not a host-side allocation as such, it is the DSV4 lightning-indexer compute buffer. The scores
lid_kq = ggml_mul_mat(indexer_k, indexer_q)inbuild_lid_top_k()are materialised full-width per CSA layer (4 GiB/layer at ctx 131072, 512 MiB at 16384 -- exactly ctx-proportional, x21 layers) just to pick a top-512, and are not covered by flash-attention. The host-RAM growth is a second-order effect of MoE expert-offload under memory pressure. Full analysis +GGML_SCHED_DEBUG=2evidence in the followup comment below.With my setup, loading DeepSeek V4 Flash with --ctx-size 131072 uses about 110.5 GiB of system RAM on current master (90e0f5c, v9924) vs 71 GiB on the older fairydreaming be00e7771 build with identical flags. That's about 38-40 GiB more and it grows with context, roughly 0.33 MiB per token. GPU VRAM is comparable across builds at matched splits (~82 GiB old vs ~85 GiB new), so the increase is host side, and it reproduces on unmodified master.
Binary: Commit: RSS @ ctx 131072:
fairydreaming be00e7771 (v9854) 71 GiB
master with #25402 15f7321 (v9907) 110 GiB
clean master 90e0f5c (v9924) 110.5 GiB
local stall-fix branch ec1c342da (v9910) 107 GiB
Regression ~+38 GiB at ctx 131072, ~0.33 MiB per token of ctx.
GPU VRAM comparable across builds (~82-86 GiB total; run-to-run --fit variation).
Reproduction:
llama-server --ctx-size 131072 --ubatch-size 512 --fit on --fit-ctx 131072
--fit-target 1024,1024,2048,2048,2048 --no-mmap --flash-attn on --parallel 1
--fit-target is my 5-device split, adjust for your setup
env: GGML_CUDA_NO_PINNED=1 ; model: DeepSeek-V4-Flash MXFP4
poll /health until {"status":"ok"}, then read VmRSS from /proc//status
repeat per commit, GPUs drained between runs
Both my local build ec1c342da (107 vs 110 GiB) and #25402 (a checkpointing PR, now closed) are exonerated. I think the problem is somewhere between be00e7771 and 90e0f5c. I'll likely dig deeper when I have the cycles but wanted to get this out there.
I searched open and closed issues and found no existing report, the closest ones (#25408, #24265, #21690) are distinct.
The measurements and tracker search were aided by Claude.
First Bad Commit
Not bisected. Last known good: be00e7771 (v9854, 71 GiB). Known bad: 90e0f5c (v9924, 110.5 GiB). First bad commit is somewhere in that range.
Relevant log output
Logs