placement: full-resident experts on large-memory hosts — CUDA_EXPERT_GB=auto, PIN_GB=all, adaptive GPU slots, RoPE cache (#80)
* Fuse CUDA expert MLP execution * Group CUDA expert transfers by device * Instrument grouped CUDA expert execution * Bound grouped CUDA decode scratch * Execute expert groups across GPUs in parallel * Release host backing for multi-GPU experts * Define quality-preserving memory policies * Overlap cold expert loading with resident compute * Adapt expert placement with session LFRU * Fuse q4 expert gate and up dispatch * Plan CPU work on physical cores * Batch grouped expert CUDA kernels * Separate VRAM and RAM expert placement * Add ragged multi-sequence decode forward * feat(runtime): add continuous decode scheduler * Route concurrent API requests through batch scheduler * Harden multiplex request lifecycle and framing * Cancel disconnected multiplex requests * Bind API port before starting the engine * fix automatic KV slot allocation * add native int4 Tensor Core grouped GEMM * add Tensor Core throughput benchmark * optimize packed int4 low-row kernels * add asynchronous CUDA staging streams * document validated six-GPU dense acceleration * tune six-GPU expert hot set * raise validated expert hot-set target * add CUDA MLA absorption core * fuse grouped expert gate and up projections * Warn for explicit lossy routing flags * Add full-resident expert placement mode * Adapt VRAM expert slots to live routes * Accelerate int4 matvec on AVX-512 * Reduce AVX-512 and RoPE decode overhead * Seed every GPU expert layer after prefill * Limit live GPU swaps during decode --------- Co-authored-by: JustVugg <JustVugg@users.noreply.github.com>
This commit is contained in:
@@ -354,6 +354,10 @@ PIN=stats.txt PIN_GB=160 SNAP=/nvme/glm52_i4 ./glm 64 4 4
|
||||
COLI_CUDA=1 COLI_GPUS=0,1,2,3,4,5 CUDA_EXPERT_GB=150 \
|
||||
CUDA_DENSE=1 PIN=stats.txt PIN_GB=300 RAM_GB=226 \
|
||||
SNAP=/nvme/glm52_i4 ./glm 64 4 4
|
||||
# large-RAM host: fill safe VRAM, then keep every remaining expert in RAM
|
||||
COLI_CUDA=1 COLI_GPUS=0,1,2,3,4,5 CUDA_EXPERT_GB=auto \
|
||||
CUDA_DENSE=1 COLI_CUDA_ATTN=1 PIN=stats.txt PIN_GB=all RAM_GB=auto \
|
||||
SNAP=/nvme/glm52_i4 ./glm 64 4 4
|
||||
```
|
||||
|
||||
Selected experts are uploaded during startup, so capacity failures occur before
|
||||
@@ -375,6 +379,25 @@ replay from 1.87 to 2.16 tok/s (+15.7%), reduced expert disk wait from 5.144s to
|
||||
3.948s, and kept the projected RAM peak below `RAM_GB=226`. The cache cap adjusts
|
||||
down automatically (54 to 40 in that run) so the larger pinned tier does not exceed
|
||||
the process budget. Start lower on hosts with less available RAM.
|
||||
|
||||
`CUDA_EXPERT_GB=auto` fills each selected device only up to its measured free
|
||||
memory minus projected dense tensors and 2 GB of runtime headroom. `PIN_GB=all`
|
||||
then loads every remaining routed expert into RAM, eliminating decode-time disk
|
||||
misses when the host budget permits it. The regular `RAM_GB` guard still clamps
|
||||
the per-layer working cache and rejects unsafe projections; this mode is intended
|
||||
for dedicated high-memory inference hosts, not desktops running other workloads.
|
||||
On a dedicated 251 GiB host with six RTX 5090s, this mode selected a 176.7 GB
|
||||
VRAM expert tier and a 191.3 GB RAM tier (all 19,456 experts resident). The
|
||||
mode also adapts the VRAM tier every 16 emitted tokens by swapping hot RAM
|
||||
experts into existing GPU slots. A real 64-token greedy GLM-5.2 generation
|
||||
measured **6.00 tok/s decode**, up from
|
||||
2.20 tok/s end-to-end with the earlier 150 GB tier; expert hit rate was 100%
|
||||
and disk wait was zero. Prompt prefill is reported separately. This is a
|
||||
host-specific capacity result, not a portable default.
|
||||
|
||||
Text-mode timing reports prefill separately from decode. The decode rate starts
|
||||
after the prompt KV is built, so it is comparable to `REPLAY` throughput without
|
||||
hiding time-to-first-token.
|
||||
MTP speculation defaults off on CUDA because cold draft routes increase expert
|
||||
traffic; an explicit `DRAFT=n` still overrides the default.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user