Skip to content

[2x RTX 2080 Ti ] 262K context can OOM the weight arena / hard-freeze host; 204800 is stable #486

Closed as not planned

Description

@wxaef

[Linux][2x RTX 2080 Ti] 262K context can OOM the weight arena / hard-freeze host; 204800 is stable

Summary

On a Linux system with 2× RTX 2080 Ti 22 GB using a layer split, a 262144-token context can exhaust VRAM during startup / allocation and, in the worst case, make the whole machine stop responding. Reducing the context to 204800 makes the same setup stable.

The concrete allocation failure I observed was:

cudaMalloc(1538035200) weight arena failed

This was with IQ3_XXS + vision enabled. Because the failure can hard-freeze the host, I have not deliberately reproduced it again on 0.1.35 yet. I checked the 0.1.35 changes; #448 improves prompt-chunk diagnostics for split GPUs, but it does not appear to change this allocation path.

Environment

  • OS: Ubuntu 24.04
  • RAM: 126 GB
  • CPU: AVX-2, no AVX-512
  • GPU: 2× NVIDIA GeForce RTX 2080 Ti 22 GB
  • Interconnect: NVLink (NV2)
  • GPU topology: both GPUs on CPU affinity 0-23
  • Model: Swift 1.5 / Qwen3.8 Flash-Next GSQ-RCO IQ3_XXS
  • Vision: enabled
  • Layer split: auto, CUDA0 then CUDA1
  • KV: int8
  • KV resident: 32768
  • Speculation: 4
  • PCIe fraction: 0.35
  • Spec min p: 0.70
  • Pool workers: 9

The machine normally runs near full GPU utilization during generation.

Reproduction shape

Problematic configuration:

--context 262144
--kv int8
--kv-resident 32768
--spec 4
--spec-min-p 0.70
--pcie-frac 0.35
--pool-workers 9
--vision
--layer-split auto

With IQ3_XXS, this reached a point where a ~1.43 GiB device allocation failed:

cudaMalloc(1538035200) weight arena failed

On at least one run, the system became effectively unresponsive rather than failing cleanly.

Stable comparison

The same machine is stable with:

--context 204800
--prefill 4096
--reserve 1800
--kv int8
--kv-resident 32768
--spec 4
--spec-min-p 0.70
--pcie-frac 0.35
--pool-workers 9

So the practical boundary on this machine is somewhere between ~205K and 262K with this model / vision / split configuration.

Why this seems worth guarding

At 262K the combined VRAM consumers include:

  • dense/model weights
  • expert cache
  • streamed/resident KV
  • prefill buffers
  • MTP/speculative buffers
  • vision allocations
  • CUDA workspace / weight arena

The engine can apparently commit enough of these earlier allocations that a later large weight-arena allocation fails. On this hardware the failure can be severe enough to make the host unusable.

Request

Could Strata do one or more of the following?

  1. Budget the late weight-arena / workspace allocation before committing the expert cache / other large VRAM users, especially with vision + layer split.
  2. Keep a larger automatic safety margin when --max-context is very large.
  3. If the requested context cannot fit safely, fail before loading / allocating everything, with a message suggesting a lower context such as 204800.
  4. If possible, make allocation failure recover cleanly instead of leaving the GPU / host in a state that can hard-freeze Linux.
  5. Log a compact per-GPU VRAM budget before the risky allocation (weights, expert cache, KV resident, prefill/workspace, vision, reserve), which would make this much easier to diagnose.

I can test a patch or provide a full startup log if there is a specific tracing flag you want enabled.

Note about 0.1.35

I saw the new #448 diagnostics around prompt-chunk borrowing and split-card cache constraints. My GPUs are symmetric 22 GB cards, and this failure is a later cudaMalloc(... weight arena ...) OOM rather than the small-secondary-GPU prompt-chunk case, so I don't think #448 addresses this particular failure.

Activity

  1. HetagKoroev commented on Oct 2, 2026

    @HetagKoroev

    Same on Windows 11

  2. wxaef commented on Oct 2, 2026

    @wxaef
    Author

    {
    "exe": "/home/wuxing/Strata-main/engine/strata",
    "args": [
    "--pack",
    "/home/wuxing/Strata-data/packs/swift-iq2_xs",
    "--native",
    "/home/wuxing/models/Swift-1.5-Qwen3.8-Flash-Next-GSQ-RCO-GGUF/Swift-Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf",
    "--ple-gguf",
    "/home/wuxing/models/Swift-1.5-Qwen3.8-Flash-Next-GSQ-RCO-GGUF/Swift-Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf",
    "--expert-profile",
    "/home/wuxing/Strata-main/data/expert-profile.bin",
    "--expert-cache",
    "auto",
    "--prefill",
    "auto",
    "--spec",
    "4",
    "--mtp",
    "/home/wuxing/Strata-data/mtp/rt",
    "--max-context",
    "262144",
    "--kv",
    "int8",
    "--kv-resident",
    "32768",
    "--vision",
    "--vram-reserve-mib",
    "700",
    "--pcie-frac",
    "0.35",
    "--spec-min-p",
    "0.70",
    "--pool-workers",
    "7"
    ],
    "cwd": "/home/wuxing/Strata-main",
    "tokenizer": "/home/wuxing/Strata-data/packs/swift-iq2_xs/tokenizer",
    "model_name": "swift-1.5-iq2_xs",
    "log": "/home/wuxing/Strata-main/strata-swift-iq2_xs.log",
    "lib_dirs": [
    "/usr/local/cuda-12.8/bin",
    "/usr/local/cuda-12.8/lib64"
    ],
    "port": 8000,
    "gpu": [
    0,
    1
    ],
    "gpus_asked": true,
    "layer_split": "auto",
    "host": "0.0.0.0",
    "vision": {
    "exe": "/home/wuxing/Strata-main/engine/strata-vision",
    "mmproj": "/home/wuxing/models/Swift-1.5-Qwen3.8-Flash-Next-GSQ-RCO-GGUF/mmproj-Swift-Qwen3.8-Flash-Next-BF16.gguf",
    "model": "/home/wuxing/models/Swift-1.5-Qwen3.8-Flash-Next-GSQ-RCO-GGUF/Swift-Qwen3.8-Flash-Next-GSQ-RCO-IQ2_XS-00001-of-00002.gguf",
    "gpu": true,
    "max_tokens": 1024
    }
    }

    too

  3. Niko1221 commented on Oct 2, 2026

    @Niko1221
    Owner

    Thanks. The 1.43 GiB allocation that fails is the weight arena: the first large VRAM allocation, made before the KV cache and the expert cache, and its size doesn't depend on the context. So when it fails, something else held that VRAM at that moment, for example the previous engine still releasing during a restart, or the GPU image encoder. And the hard freeze at 262K is more likely host RAM (pinned memory for KV streaming) than VRAM. Could you post the full startup log of a failing 262K start (strata-<model>.log), the RAM use at the freeze (free -g or Task Manager), and nvidia-smi just before starting? Then we can make the engine plan the budget first and say which context fits.

  4. added a commit that references this issue on Oct 3, 2026
  5. Niko1221 commented on Oct 3, 2026

    @Niko1221
    Owner

    In 0.1.38 a weight arena that doesn't fit says how much VRAM was free on that card at that moment (and, on a layer split, how much the stage needed). That shows whether something else was holding the card.

    Keeping this open for the bigger part: the engine should plan the per-GPU budget before it allocates (weights, KV, expert cache, prompt buffers, images, reserve), print it as one compact line, and stop early with the context that fits instead of failing late. The full strata-<model>.log of a failing 262K start, plus free -g at the freeze, is still what we need to see whether the freeze is VRAM or pinned host RAM.

  6. csyujianghong commented on Oct 5, 2026

    @csyujianghong

    262144 starts fine on a 4-card pool (2×2080Ti 22G + 2×V100 32G, 110 GB VRAM): full startup log + RAM/VRAM before and after

    Following Niko's request in this thread for a 262K startup log, free -g, and nvidia-smi just before starting.

    Result: 262144 started clean in ~80 s. No weight arena failed, no host freeze. So this is a negative
    data point on the failure, not a reproduction. I attach everything asked for anyway, because it bounds the
    freeze question.

    Environment

    • OS: Linux, kernel 7.0.0-34-generic, RAM 128639 MB (126 GB), swap 0
    • CPU: AMD EPYC 7K62 (48C/96T, Zen 2, AVX2 only). Not a limitation here: a native pack uses the
      AVX-2 expert-kernel path by design — the engine prints this CPU has no AVX-512: the expert kernels run on AVX-2, which What are the requirements for the CPU instruction set? #34/Missing AVX-512 support on Intel Core Ultra 9 285K (Arrow Lake) – engine fails to start #142 confirm is the supported path for native packs.
    • GPU: 4 cards in one layer split — 2× RTX 2080 Ti 22 GB (sm_75) + 2× Tesla V100-PCIE-32GB (sm_70), 110 GB total
    • Driver 580.173.02, engine built locally from v0.1.38 with archs [70,75], CUDA 12.9
    • Model: Qwen3.8-Flash-Next GSQ-RCO IQ3_S (2 shards, 83.6 GB on disk), --vision, MTP, --spec 4
    • Args: --max-context 262144 --kv int8 --kv-resident 0 --vram-reserve-mib 2048 --pcie-frac 0.36 --layer-split 20,40,46, gpu=[1,2,0,3]

    nvidia-smi just before starting

    GPU0 RTX 2080 Ti   5 MiB / 22528 MiB
    GPU1 V100-32GB     7 MiB / 32768 MiB
    GPU2 V100-32GB     7 MiB / 32768 MiB
    GPU3 RTX 2080 Ti 579 MiB / 22528 MiB   (desktop: gnome-shell + Xwayland + remote-desktop)
    
    free -g:            total  used  free  shared  buff/cache  available
    Mem:                  125     6    18       0         103        119
    Swap:                   0     0     0
    

    After everything is loaded

    free -g:  used 59 / 125 GB, available 66 GB, swap 0
    free -m:  used 60914 / 128639 MB, available 67724 MB
    
    nvidia-smi used:  2080Ti#0 14158 MiB | V100#1 26613 | V100#2 27813 | 2080Ti#3 11083 (incl. ~570 desktop)
    engine RSS 50.8 GiB
    /health: {"status":"ok","max_context":262144,"loaded":true}
    last engine line: "5881 MiB of VRAM free with everything loaded"
    

    Host RAM rose monotonically 7.2 GB → 59.5 GB with no spike and no swap (2 s sampling, 38 samples).

    Why this matters for the freeze question

    Same host RAM class as the report (126 GB), but 262K here only takes 59.5 GB of 126 GB, available 66 GB,
    swap untouched
    . There is no sign of pinned-host-RAM exhaustion on this box, which argues the boundary in
    this issue is a plain VRAM budget problem (44 GB vs 110 GB), not pinned memory — the opposite of the
    host-RAM hypothesis, so please treat it as a counter-example rather than confirmation.

    One thing worth noting for small-card splits

    The 262K run starts, but the smallest stage already throttles the prompt path:

    strata serve: WARNING: prompt chunk 3072 tokens, not 8192: CUDA3 (NVIDIA GeForce RTX 2080 Ti) has 1024
                  expert-cache slots, and a 8192-token chunk borrows 1024 of them (it must keep 128, and lend
                  at most 90%) - prompts read slower than on CUDA0 alone (#448)
    strata serve: prompt chunk auto: 3072 tokens
    strata serve:   CUDA0 keeps its own prompt buffers (1.64 GiB of 7.63 GiB free): no loan
    strata serve:   CUDA1 keeps its own prompt buffers (1.64 GiB of 6.46 GiB free): no loan
    strata serve:   CUDA2 keeps its own prompt buffers (1.64 GiB of 9.57 GiB free): no loan
    strata serve:   CUDA3 keeps its own prompt buffers (1.64 GiB of 12.71 GiB free): no loan
    strata serve: the prompt path allocates its own buffers (too few cache slots to borrow)
    

    Full startup log (59 lines)

    load_hparams: Qwen-VL models require at minimum 1024 image tokens to function correctly on grounding tasks
    load_hparams: if you encounter problems with accuracy, try adding --image-min-tokens 1024
    load_hparams: more info: https://github.com/ggml-org/llama.cpp/issues/16842
    
    strata-vision: warmed up at 1024 image tokens
    strata generate: layer split across 4 GPUs: CUDA0, then CUDA1,2,3 (split 20,40,46)
    strata generate: this CPU has no AVX-512: the expert kernels run on AVX-2 (multi-token for the i-quant gate/up rows)
    strata generate: native pack: /home/yujianghong/Strata-data/packs/iq3_s experts (largest blob 2.66 MB), token embedding IQ4_XS in mapped host memory (322 MiB)
    strata generate: 1466 MiB of weights loaded from /home/yujianghong/Strata-data/packs/iq3_s (302 canonical tensors skipped: served natively)
    strata generate: 300 native projection matrices, 2018.88 MiB of weights
    strata generate: the SSD is kept awake while rows are read: one page of the table after 100 ms without a read, until 60 s after the last request (STRATA_SSD_KEEPALIVE=0 turns it off)
    strata generate: layer split: CUDA1 holds its weights; 27.74 GiB free (its session follows the split search)
    strata generate: layer split: CUDA2 holds its weights; 16.48 GiB free (its session follows the split search)
    strata generate: layer split: CUDA3 holds its weights; 17.01 GiB free (its session follows the split search)
    strata generate: profile /home/yujianghong/Strata/data/expert-profile.bin: 24576 ranked pairs, built for 24576 slots
    strata generate: PLE on, table 320001536 rows of /home/yujianghong/Strata-data/models/IQ3_S/Qwen3.8-Flash-Next-GSQ-RCO-IQ3_S-00002-of-00002.gguf
    strata generate: layer split: CUDA1 holds its weights, session [20, 40); 26.18 GiB free
    strata generate: layer split: CUDA2 holds its weights, session [40, 46); 16.10 GiB free
    strata generate: layer split: CUDA3 holds its weights, session [46, 48) and the head; 16.18 GiB free
    strata mtp: draft layer loaded, 1098 MiB of VRAM (experts 675, dense 111), files read in 0.75 s (1048 MiB/s)
    strata generate: GPU 0: Tesla V100-PCIE-32GB, compute capability 7.0
    strata generate: expert arena read through the file cache (buffered (not Windows))
    strata generate: expert arena: cudaHostRegister PORTABLE ok; MAP_HUGETLB unavailable (needed 23983 2 MiB pages, vm.nr_hugepages=0); using 4 KB pages
    strata generate: loaded 46.84 GiB at 1.61 GiB/s
    strata generate: expert cache auto: 26.09 GiB free, 2048 MiB reserved (+0 MiB for the draft head) -> 9714 slots
    strata generate: expert cache 10240 slots, 18.46 GiB of VRAM; policy is
    strata generate: the GPU computes the experts in the cache; it rounds differently from the CPU,
                     so a reply can differ slightly from a run without the cache (same quality:
                     bench/results/2026-09-27-cache-parity).
                     PROFILE, ranked by routing frequency, no eviction.
    strata generate: pre-filled 10240 of 10240 slots from the profile; slot 0 verified
    strata generate: layer split: CUDA1 runs layers 20-39, expert cache 10240 slots (19.63 GiB), 10240 of its 10240 profiled pairs; slot 0 verified
    strata generate: layer split: CUDA2 runs layers 40-45, expert cache 3072 slots (6.45 GiB), 3072 of its 3072 profiled pairs; slot 0 verified
    strata generate: layer split: CUDA3 runs layers 46-47, expert cache 1024 slots (2.31 GiB), 1024 of its 1024 profiled pairs; slot 0 verified
    strata generate: layer split: CUDA0 runs layers 0-19
    strata generate: R4 hit path ON - resident experts are computed on the GPU
    strata generate: 47 expert-pool workers + the host thread
    strata generate: session is up (engine 0.1.38)
    strata generate: token graph hit path: 24576 resident experts, decided on the device
    strata serve: layer split: 100% of the experts resident, the prompt path's streamed ring 96 slots
    strata serve: WARNING: prompt chunk 3072 tokens, not 8192: CUDA3 (NVIDIA GeForce RTX 2080 Ti) has 1024 expert-cache slots, and a 8192-token chunk borrows 1024 of them (it must keep 128, and lend at most 90%) - prompts read slower than on CUDA0 alone (#448)
    strata serve:   a card this small can serve as a helper expert cache instead of a split stage: without --layer-split, with --expert-cache-device1..3 N, in order (docs/SECOND_GPU.md)
    strata serve: prompt chunk auto: 3072 tokens
    strata serve:   CUDA0 keeps its own prompt buffers (1.64 GiB of 7.63 GiB free): no loan
    strata serve:   CUDA1 keeps its own prompt buffers (1.64 GiB of 6.46 GiB free): no loan
    strata serve:   CUDA2 keeps its own prompt buffers (1.64 GiB of 9.57 GiB free): no loan
    strata serve:   CUDA3 keeps its own prompt buffers (1.64 GiB of 12.71 GiB free): no loan
    strata serve: the prompt path allocates its own buffers (too few cache slots to borrow)
    strata hc: CUDA1: the hyper-connection read runs as staged (...); checked bit for bit against the plain read on this card (STRATA_HC_SPLIT=1 or 0 for the earlier ones)
    strata verify: window up to 6 tokens, 75.4 MiB of device buffers
    strata hc: CUDA2: the hyper-connection read runs as staged (...); checked bit for bit against the plain read on this card
    strata verify: window up to 6 tokens, 75.4 MiB of device buffers
    strata hc: CUDA3: the hyper-connection read runs as staged (...); checked bit for bit against the plain read on this card
    strata verify: window up to 6 tokens, 75.4 MiB of device buffers
    strata serve: layer split: layers 0-19 (CUDA0), 20-39 (CUDA1), 40-45 (CUDA2), 46-47 (CUDA3), one hand-off per window
    strata hc: CUDA0: the hyper-connection read runs as staged (...); checked bit for bit against the plain read on this card
    strata verify: window up to 6 tokens, 75.4 MiB of device buffers
    strata mtp: draft head over 106299 tokens (212.9 MiB)
    strata serve: 5881 MiB of VRAM free with everything loaded
    

    I did not attempt to reproduce the failure itself: reaching the 44 GB boundary from the original report would
    mean shrinking this box's split by hand, and a hard freeze on this host would take down unrelated work. If the
    startup log or the RAM numbers would be more useful in another shape, tell me which and I will collect it.

  7. added a commit that references this issue on Oct 6, 2026
  8. added 2 commits that reference this issue on Oct 6, 2026
  9. Niko1221 commented on Oct 7, 2026

    @Niko1221
    Owner

    0.1.40 prints the exact size that failed and the VRAM free on that card when the arena allocation fails. Could you run 262K again on 0.1.40 or newer and post that line? The host freeze is about system RAM, not VRAM; a bigger memory budget is #765.

  10. csyujianghong commented on Oct 9, 2026

    @csyujianghong

    Re-ran 262K on 0.1.40.2 as asked. It starts clean again on this box, so there is no failed-allocation line to post — the full fresh start-up log is below instead (serve stdout + engine ledger; environment at the top).

    Since my Oct 5 post: the engine is stock 0.1.40.2 (was a local 0.1.38 build), and the two 2080 Ti now run a separate vLLM job (TP2, :8002), so the engine's GPUs are the 2×V100 pair (layer-split 24) with UD-Q4_K_XL instead of IQ3_S — still --max-context 262144, single request (no --batch).

    Key lines: expert cache auto: 27.20 GiB free, 1024 MiB reserved (+0 MiB for the draft head) -> 7043 slots · resident RAM mode: 21.08 GiB of experts in RAM (page-locked), 8975 in the GPU cache · 751 MiB of VRAM free with everything loaded · every verify window passes (upload no error, sync no error).

    Present snapshot (hours after start, not at the start moment): nvidia-smi — 2080Ti#0 19560/22528 (vLLM) · V100#1 31785/32768 · V100#2 31975/32768 · 2080Ti#3 20327/22528 (vLLM). free -g — total 123, used 43, buff/cache 74, available 80; swap used 0.


    Strata v0.1.40.2 startup log — 2×V100 / UD-Q4_K_XL / layer-split 24

    Captured 2026-10-09 ~21:01 local (fresh restart of the running instance). Two views of the same
    start: the serve layer's stdout, then the engine's own start-up ledger. Paths sanitized
    (/home/<user>); nothing else altered.

    Environment

    • Strata v0.1.40.2, stock engine (CUDA 12.9 build, sm_70/75), --serve mode
    • Model: Qwen3.8-Flash-Next UD-Q4_K_XL (unsloth GGUF, 4 shards + MTP draft; vision mmproj bf16 (Huihui), on CPU)
    • Engine GPUs: 2× Tesla V100-PCIE-32GB (PCI_BUS_ID 1,2 → engine CUDA0/CUDA1), layer split 24
      • (unrelated to this engine: the same host runs a separate vLLM TP2 job on its 2× RTX 2080 Ti, :8002)
    • Driver 580.178.04 · CUDA 12.9 · Ubuntu 26.04.1 · kernel 7.0.0-38-generic
    • CPU: AMD EPYC 7K62 48-Core Processor · RAM 129,366,012 kB (~123 GiB) · board Supermicro H12D-8D
    • Key flags: --layer-split 24, --mmap-experts --resident-cpu-experts --resident-budget-gib 40,
      --vram-reserve-mib 1024, --max-context 262144 --kv int8 --kv-resident 0,
      --spec 4 --spec-min-p 0.70; single request at a time (no --batch)

    1) serve layer (stdout)

    [strata] sampling defaults from the config: temperature=1.0, top_p=0.95, top_k=20
    loading the vision encoder ...
    loading the model (the first start takes a minute or two) ...
    [strata] layer split across GPUs [1, 2] (24)
    [strata] starting the engine: reading the model's weights ...
    [strata] loading the most-used experts into RAM (up to 40 GiB; the rest are read from the model files as needed) and locking part of them for the GPU.
             YOUR PC CAN BE SLOW OR STOP RESPONDING FOR 1-3 MINUTES NOW - this is normal.
             Please wait and don't close this window; the browser opens when it is ready.
    [strata] filling the GPU's expert cache (8975 experts, 26.19 GiB of VRAM) ...
    [strata] still starting (27 s) - please wait ...
    [strata] still starting (47 s) - please wait ...
    [strata] almost ready ...
    [strata] still starting (69 s) - please wait ...
    [strata] still starting (89 s) - please wait ...
    [strata] thinking budget: 8192 tokens (reasoning_budget_tokens; a request can set its own)
    ready: http://127.0.0.1:8001/v1  (OpenAI: /v1/chat/completions, Anthropic: /v1/messages, context 262144 tokens, images on)
           open http://127.0.0.1:8001/ in a browser to chat; close this window to stop the model
    

    2) engine start-up ledger

    load_hparams: Qwen-VL models require at minimum 1024 image tokens to function correctly on grounding tasks
    load_hparams: if you encounter problems with accuracy, try adding --image-min-tokens 1024
    load_hparams: more info: https://github.com/ggml-org/llama.cpp/issues/16842
    
    strata-vision: on the CPU, 48 threads, no warm-up
    [strata] 2026-10-09 21:01:15 engine started: /home/yujianghong/Strata-v0.1.40.2/build-cuda12/strata --serve --pack /home/yujianghong/Strata-data/packs/ud_q4_k_xl --native /home/yujianghong/Strata-data/models/UD-Q4_K_XL/Qwen3.8-Flash-Next-UD-Q4_K_XL-00001-of-00004.gguf --expert-profile /home/yujianghong/Strata/data/expert-profile.bin --expert-cache auto --prefill auto --spec 4 --spec-min-p 0.70 --mtp /home/yujianghong/Strata-data/mtp/rt --vision --max-context 262144 --kv int8 --kv-resident 0 --vram-reserve-mib 1024 --mmap-experts --resident-cpu-experts --resident-budget-gib 40 --layer-split 24
    strata generate: layer split across 2 GPUs: CUDA0, then CUDA1 (split 24)
    strata generate: PCIe probe: 13.1 GB/s host->device (best of 13.1 13.1 13.1 13.0) -> pcie_frac 0.36 (default 0.55)
    strata generate: this CPU has no AVX-512: the expert kernels run on AVX-2 (multi-token for the i-quant gate/up rows)
    strata generate: native pack: /home/yujianghong/Strata-data/packs/ud_q4_k_xl experts (largest blob 3.99 MB), token embedding Q8_0 in mapped host memory (644 MiB, 0.9 s)
    strata generate: layer split: CUDA0 loads the dense weights of layers 0-23 only
    strata generate: 781 MiB of weights loaded from /home/yujianghong/Strata-data/packs/ud_q4_k_xl in 0.2 s (663 canonical tensors skipped: served natively)
    strata generate: 151 native projection matrices, 1500.78 MiB of weights, in 1.6 s
    strata generate: the SSD is kept awake while rows are read: one page of the table after 100 ms without a read, until 60 s after the last request (STRATA_SSD_KEEPALIVE=0 turns it off)
    strata generate: layer split: CUDA1 loads the dense weights of layers 24-47 only
    strata generate: layer split: CUDA1 PCIe probe 13.1 GB/s (best of 13.1 13.1 13.1 13.0) -> pcie_frac 0.36
    strata generate: layer split: CUDA1 holds its weights; 29.12 GiB free (its session follows the split search)
    strata generate: profile /home/yujianghong/Strata/data/expert-profile.bin: 24576 ranked pairs, built for 24576 slots
    strata generate: PLE on, table 320001536 rows of /home/yujianghong/Strata-data/models/UD-Q4_K_XL/Qwen3.8-Flash-Next-UD-Q4_K_XL-00002-of-00004.gguf
    strata generate: layer split: CUDA1 holds its weights, session [24, 48) and the head; 26.63 GiB free
    strata mtp: draft layer loaded, 1098 MiB of VRAM (experts 675, dense 111), files read in 0.38 s (2044 MiB/s)
    strata generate: GPU 0: Tesla V100-PCIE-32GB, compute capability 7.0
    strata generate: experts via mmap (--mmap-experts; the GGUF shards in place, no experts.bin)
    strata generate: the file tier reads through the file cache (105.8 GiB available, 40.0 GiB of it still to be taken by the RAM copy, 31.7 GiB of experts read from the files: the file cache can keep the ones that come back)
    strata generate: CPU pool tasks/phase: 144 (automatic), participating threads: 48
    strata generate: 47 pool workers on logical processors 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47, the host thread on 0 (draining too) (--host-core first)
    strata generate: expert cache auto: 27.20 GiB free, 1024 MiB reserved (+0 MiB for the draft head) -> 7043 slots
    strata generate: expert cache 8975 slots, 26.19 GiB of VRAM; policy is
    strata generate: the GPU computes the experts in the cache; it rounds differently from the CPU,
                     so a reply can differ slightly from a run without the cache (same quality:
                     bench/results/2026-09-27-cache-parity).
                     PROFILE, ranked by routing frequency, no eviction.
    strata generate: the profile fill asks for 256 pairs ahead (STRATA_FILL_AHEAD)
    strata generate: pre-filled 8975 of 8975 slots from the profile in 17.7 s (1587 MB/s); slot 0 verified
    strata generate: layer split, CUDA1: 25.55 GiB free of 31.73, room for experts 24.45 GiB
    strata generate: layer split: CUDA1 runs layers 24-47, expert cache 8382 slots (24.45 GiB), 8382 of its 12288 profiled pairs; slot 0 verified
    strata generate: layer split: CUDA0 runs layers 0-23
    strata generate: routing-aware prefetch of the file tier on (the next layer's router)
    strata generate: R4 hit path ON - resident experts are computed on the GPU
    strata generate: 47 expert-pool workers + the host thread
    strata generate: session is up (engine 0.1.40.2)
    strata generate: token graph hit path: 17357 resident experts, decided on the device
    FileExpertSource: RAM budget 40.00 GiB: 7219 of the 21.08 GiB of experts the GPU cache does not hold, by profile rank; the rest are read from the files
    FileExpertSource: allocating 21.08 GiB page-locked cache complement
    FileExpertSource: 1.36 GiB really free for a 21.08 GiB page-locked complement; the model files' cached pages were released: 77.37 GiB free
    FileExpertSource: copied cache complement through layer 8/48 (2.96 GiB, 3 s)
    FileExpertSource: copied cache complement through layer 16/48 (6.79 GiB, 5 s)
    FileExpertSource: copied cache complement through layer 24/48 (9.92 GiB, 7 s)
    FileExpertSource: copied cache complement through layer 32/48 (13.69 GiB, 10 s)
    FileExpertSource: copied cache complement through layer 40/48 (16.94 GiB, 12 s)
    FileExpertSource: copied cache complement through layer 48/48 (21.08 GiB, 14 s)
    FileExpertSource: mapped pinned cache complement ready: resident 21.08 GiB, pinned 21.08 GiB in 46 s; page-locked and mapped
    FileExpertSource: 8382 verified additional-GPU experts remain on the mmap fallback
    strata generate: resident RAM mode: 21.08 GiB of experts in RAM (page-locked), 8975 in the GPU cache; adaptive swaps exchange them with the GPU cache (no file reads)
    strata generate: the file tier reads through the file cache (re-checked with the RAM copy built (21.08 GiB): 83.2 GiB available, 0.0 GiB of it still to be taken by the RAM copy, 50.6 GiB of experts read from the files: the file cache can keep the ones that come back)
    strata serve: prompt chunk auto: 8192 tokens, a 96-slot ring
    strata serve: the prompt path borrows 1198 CUDA0 cache slots (3.47 GiB)
    strata serve:   CUDA1 prompt path borrows 1194 of its 8382 slots (3.47 GiB)
    strata hc: CUDA1: the hyper-connection read runs as staged (the norm per token and stream, the down projection's activations staged ahead by cp.async); checked bit for bit against the plain read on this card (STRATA_HC_SPLIT=1 or 0 for the earlier ones)
    strata verify: window up to 6 tokens, 96.1 MiB of device buffers
    strata serve: layer split: layers 0-23 (CUDA0), 24-47 (CUDA1), one hand-off per window
    strata hc: CUDA0: the hyper-connection read runs as staged (the norm per token and stream, the down projection's activations staged ahead by cp.async); checked bit for bit against the plain read on this card (STRATA_HC_SPLIT=1 or 0 for the earlier ones)
    strata verify: window up to 6 tokens, 96.1 MiB of device buffers
    strata mtp: draft head over 106299 tokens (275.7 MiB)
    strata serve: 751 MiB of VRAM free with everything loaded
    strata verify: capturing the 6-token window (751 MiB of VRAM free)
    strata verify: captured the 6-token window (upload no error, sync no error)
    strata verify: capturing the 6-token window (563 MiB of VRAM free)
    strata verify: captured the 6-token window (upload no error, sync no error)
    strata verify: capturing the 1-token window (743 MiB of VRAM free)
    strata verify: captured the 1-token window (upload no error, sync no error)
    strata verify: capturing the 1-token window (553 MiB of VRAM free)
    strata verify: captured the 1-token window (upload no error, sync no error)
    strata verify: capturing the 4-token window (733 MiB of VRAM free)
    strata verify: captured the 4-token window (upload no error, sync no error)
    strata verify: capturing the 4-token window (545 MiB of VRAM free)
    strata verify: captured the 4-token window (upload no error, sync no error)
    strata verify: capturing the 2-token window (725 MiB of VRAM free)
    strata verify: captured the 2-token window (upload no error, sync no error)
    strata verify: capturing the 2-token window (535 MiB of VRAM free)
    strata verify: captured the 2-token window (upload no error, sync no error)
    strata verify: capturing the 3-token window (717 MiB of VRAM free)
    strata verify: captured the 3-token window (upload no error, sync no error)
    strata verify: capturing the 3-token window (527 MiB of VRAM free)
    strata verify: captured the 3-token window (upload no error, sync no error)
    
  11. Niko1221 commented on Oct 13, 2026

    @Niko1221
    Owner

    Thanks for the report. To keep the tracker current we are closing issues older than three days: 0.1.44 is out with a long list of fixes, and many older reports are covered by it or by 0.1.43.1.

    If this still happens on 0.1.44, please leave a comment here with your engine log (and the version line it prints), and we will reopen it. A new issue that links this one works too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions