frank-primary: 5th expert block onto ROCm0 (operator-directed fill)
Blocks 0-4 on ROCm0 + 45-47 on ROCm1. This exact shape was probed and battery-verified earlier the same session: card0 2.54 GiB free at boot, 2.11 GiB after the vision graph (steady under load), card1 unchanged at ~3.3 GiB. Card1 cannot take another block (0.82 GiB would OOM the vision graph + boot drift), so 5/3 is the physical limit at the 4x262144 / V-q8_0 shape. OT assertion pins the new value.
This commit is contained in:
@@ -55,10 +55,12 @@ SPEC_DRAFT_N_MAX=2
|
||||
# whole per-block expert tensor (512 experts share one tensor), so "critical
|
||||
# experts" = blocks co-located on the card that holds their layers.
|
||||
# Measured cost: 2.42 GiB/block on ROCm0, 2.49 GiB/block on ROCm1.
|
||||
# Blocks 0-3 on ROCm0 + 45-47 on ROCm1 leave ~4.9 GB / ~3.4 GB free under
|
||||
# load (vision graph included). A 5th block on ROCm0 lands at 2.27 GB —
|
||||
# under the 3 GB checkpoint floor — so it stays off; blocks are atomic,
|
||||
# nothing lands card0 inside the 3-4 GB band.
|
||||
# Blocks 0-4 on ROCm0 + 45-47 on ROCm1: card0 runs at ~2.5 GiB free at
|
||||
# boot / ~2.1 GB under load (vision graph included) — the operator
|
||||
# directed the fill PAST the 3 GB checkpoint floor on 2026-09-26
|
||||
# ("shift a few more experts"); measured, battery-verified. Card1 keeps
|
||||
# ~3.4 GB. Card1 CANNOT take another block: 3.31 GiB free − 2.49 GiB =
|
||||
# 0.82 GiB, and the vision graph + boot drift alone exceed that.
|
||||
# * exps=CPU — the remaining routed experts (blk.*.ffn_*_exps.weight,
|
||||
# ~100 GiB at Q8_0 even with 7 blocks GPU-side), read once per token;
|
||||
# the CPU backend computes them from page cache.
|
||||
@@ -72,7 +74,7 @@ SPEC_DRAFT_N_MAX=2
|
||||
# (the table must stay page-cache-backed; anonymous memory
|
||||
# cgroup-kills silently).
|
||||
NGL=999
|
||||
OT_OVERRIDES='blk\.[0-3]\.ffn_(up|gate|down)_exps=ROCm0,blk\.4[5-7]\.ffn_(up|gate|down)_exps=ROCm1,exps=CPU,per_layer_token_embd.weight=CPU'
|
||||
OT_OVERRIDES='blk\.[0-4]\.ffn_(up|gate|down)_exps=ROCm0,blk\.4[5-7]\.ffn_(up|gate|down)_exps=ROCm1,exps=CPU,per_layer_token_embd.weight=CPU'
|
||||
TENSOR_SPLIT=1,1
|
||||
|
||||
# The drafter MUST sit on the SECOND R9700 (ROCm1): with -ts 1,1 the main
|
||||
|
||||
@@ -66,7 +66,7 @@ REMOTE_DEPLOY="$REPO_ROOT/scripts/deploy-remote.sh"
|
||||
! grep -q -- '--no-mmap' "$SERVE"
|
||||
! grep -q '^MMPROJ_ON_GPU' "$ENV_FILE"
|
||||
ot="$(sed -nE "s/^OT_OVERRIDES='(.*)'$/\1/p" "$ENV_FILE")"
|
||||
[ "$ot" = 'blk\.[0-3]\.ffn_(up|gate|down)_exps=ROCm0,blk\.4[5-7]\.ffn_(up|gate|down)_exps=ROCm1,exps=CPU,per_layer_token_embd.weight=CPU' ]
|
||||
[ "$ot" = 'blk\.[0-4]\.ffn_(up|gate|down)_exps=ROCm0,blk\.4[5-7]\.ffn_(up|gate|down)_exps=ROCm1,exps=CPU,per_layer_token_embd.weight=CPU' ]
|
||||
}
|
||||
|
||||
@test "the KV pool is V-quantized, K held at f16" {
|
||||
|
||||
Reference in New Issue
Block a user