frank-default-small: use split-mode none on single-GPU dankserver
--split-mode graph requires >= 2 devices in ik_llama.cpp and errors hard
at model load on a single RTX 3090 ("It is not possible to use split mode
'graph' with less than 2 devices"), looping the service. Set SPLIT_MODE
=none (the default), which works with the --override-tensor CPU expert
offload. KB updated with the two-device requirement so we do not assume
graph degrades gracefully on one GPU.
This commit is contained in:
1 parent
b8de25d70b
commit
e2085f1f7d
5 files changed
+25
-23
No files matched your search
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: reference
|
type: reference
|
||||||
title: ik_llama.cpp on Dankserver (Ornith Q6_K)
|
title: ik_llama.cpp on Dankserver (Ornith Q6_K)
|
||||||
description: ikawrakow/ik_llama.cpp replaces upstream llama.cpp for frank-default-small on the RTX 3090. q8_KV KV cache with Hadamard, split-mode graph, ngram-mod canonical args, and explicit CPU-expert offload. Includes the mandatory CUDA/IQK FA_ALL_QUANTS build flags.
|
description: ikawrakow/ik_llama.cpp replaces upstream llama.cpp for frank-default-small on the RTX 3090. q8_KV KV cache with Hadamard, split-mode none (graph requires >=2 GPUs), ngram-mod canonical args, and explicit CPU-expert offload. Includes the mandatory CUDA/IQK FA_ALL_QUANTS build flags.
|
||||||
tags:
|
tags:
|
||||||
- ikllama
|
- ikllama
|
||||||
- llamacpp
|
- llamacpp
|
||||||
@@ -116,19 +116,22 @@ the serve script; the env file holds all tunables.
|
|||||||
These keep the 163840-slot / 491520-pool context while roughly halving KV
|
These keep the 163840-slot / 491520-pool context while roughly halving KV
|
||||||
cache RAM vs f16.
|
cache RAM vs f16.
|
||||||
|
|
||||||
### Split-mode graph
|
### Split mode: none (single GPU)
|
||||||
|
|
||||||
- `SPLIT_MODE=graph` → `--split-mode graph`. On a single 3090 this is a
|
- `SPLIT_MODE=none` → `--split-mode none` (the default). Dankserver has a
|
||||||
no-op for correctness but keeps the graph scheduled across the compute
|
single RTX 3090 yet ik_llama rejects `--split-mode graph` on a box with a
|
||||||
buffers. ik recommends it for MoE when more than one device is present;
|
single device:
|
||||||
here it is retained per operator preference alongside the explicit
|
|
||||||
`--override-tensor` expert pins.
|
|
||||||
|
|
||||||
> **Caveat:** the ik_llama README warns that `--split-mode graph` combined
|
> `llama error loading model: It is not possible to use split mode 'graph'
|
||||||
> with partial GPU offload (`--cpu-moe` / `--n-cpu-moe` / `--override-tensor`)
|
> with less than 2 devices`
|
||||||
> can rarely produce incoherent output. The documented mitigation is
|
|
||||||
> `-cuda graphs=0`. Smoke-test after every load; if a response is gibberish,
|
So `graph` is **not** a harmless no-op on one GPU — it is a hard load
|
||||||
> add `-cuda graphs=0` to the serve line and re-test.
|
error (this bit us on the first deploy and loop the service). It also still
|
||||||
|
works with the `--override-tensor` expert pins.
|
||||||
|
|
||||||
|
> **Lesson.** ik_llama `--split-mode graph` requires ≥2 devices. On a
|
||||||
|
> single-GPU host you must use `none` (or `layer`, which also needs >1).
|
||||||
|
> Do not assume `--split-mode graph` degrades gracefully on one GPU.
|
||||||
|
|
||||||
### Expert offload (MoE on CPU)
|
### Expert offload (MoE on CPU)
|
||||||
|
|
||||||
@@ -171,7 +174,7 @@ Several ik_llama knobs matter for a CPU-MoE offload host:
|
|||||||
|
|
||||||
| flag | meaning | our use |
|
| flag | meaning | our use |
|
||||||
|------|---------|---------|
|
|------|---------|---------|
|
||||||
| `--split-mode graph` | split tensors+graph across devices; strong for MoE | retained (single-GPU no-op) |
|
| `--split-mode graph` | split tensors+graph across devices; strong for MoE; **requires 2+ devices** | single 3090 → use `none`
|
||||||
| `-ooae` / `--offload-only-active-experts` | default ON: copy **only active** experts RAM→VRAM | keep ON (huge for A3B: few experts active) |
|
| `-ooae` / `--offload-only-active-experts` | default ON: copy **only active** experts RAM→VRAM | keep ON (huge for A3B: few experts active) |
|
||||||
| `-grt q8_0` | reduce type for inter-GPU data exchange | not needed (single GPU) |
|
| `-grt q8_0` | reduce type for inter-GPU data exchange | not needed (single GPU) |
|
||||||
| `--fit` | auto-offload to fit VRAM | conflicts with `--override-tensor`; do not use together (runtime error) |
|
| `--fit` | auto-offload to fit VRAM | conflicts with `--override-tensor`; do not use together (runtime error) |
|
||||||
|
|||||||
+1
-2
@@ -58,8 +58,7 @@ MTP draft + Turbo4 V cache, 262K ctx / 1 slot]
|
|||||||
Dankserver (frank-default-small, active 2026-08-24)
|
Dankserver (frank-default-small, active 2026-08-24)
|
||||||
- [[ikllama-ornith-dankserver]] — the ik_llama.cpp runtime for
|
- [[ikllama-ornith-dankserver]] — the ik_llama.cpp runtime for
|
||||||
frank-default-small (2026-08-26): q8_KV + Hadamard KV cache,
|
frank-default-small (2026-08-26): q8_KV + Hadamard KV cache,
|
||||||
split-mode graph, canonical ngram-mod args, mandatory FA_ALL_QUANTS
|
split-mode none (single-GPU), mandatory FA_ALL_QUANTS build flags
|
||||||
build flags
|
|
||||||
- [[kingjones-strix-mtp]] — the active kingjones Qwen3.8-27B ROCmFP4 STRIX MTP
|
- [[kingjones-strix-mtp]] — the active kingjones Qwen3.8-27B ROCmFP4 STRIX MTP
|
||||||
model on Dankclaw (restored 2026-09-01 after the Q8_0 AGENT experiment)
|
model on Dankclaw (restored 2026-09-01 after the Q8_0 AGENT experiment)
|
||||||
- [[ciru-activefpx-promptforge]] — the RETIRED v3 CIRU PromptForge runtime
|
- [[ciru-activefpx-promptforge]] — the RETIRED v3 CIRU PromptForge runtime
|
||||||
|
|||||||
+1
-1
@@ -110,7 +110,7 @@ The LLM inference fleet on the two hosts. Full index:
|
|||||||
- [[ciru-activefpx-promptforge]] — the RETIRED v3 CIRU PromptForge runtime on Dankclaw (superseded 2026-08-24)
|
- [[ciru-activefpx-promptforge]] — the RETIRED v3 CIRU PromptForge runtime on Dankclaw (superseded 2026-08-24)
|
||||||
- [[kingjones-strix-mtp]] — the kingjones Qwen3.8-27B ROCmFP4 STRIX MTP model on Dankclaw (active)
|
- [[kingjones-strix-mtp]] — the kingjones Qwen3.8-27B ROCmFP4 STRIX MTP model on Dankclaw (active)
|
||||||
- [[dealign-ornith-crack]] — the dealign Ornith-1.5-35B-A3B CRACK model on Dankserver (active)
|
- [[dealign-ornith-crack]] — the dealign Ornith-1.5-35B-A3B CRACK model on Dankserver (active)
|
||||||
- [[ikllama-ornith-dankserver]] — the ik_llama.cpp runtime for frank-default-small (q8_KV + Hadamard KV cache, split-mode graph; 2026-08-26)
|
- [[ikllama-ornith-dankserver]] — the ik_llama.cpp runtime for frank-default-small (q8_KV + Hadamard KV cache, split-mode none; 2026-08-26)
|
||||||
- [[kairic-edge]] — the retired Kairic Edge IU4 experiment (2026-08-22)
|
- [[kairic-edge]] — the retired Kairic Edge IU4 experiment (2026-08-22)
|
||||||
- [[dflash2-large-vulkan]] — the retired DFlash2 Vulkan deployment (2026-08-21)
|
- [[dflash2-large-vulkan]] — the retired DFlash2 Vulkan deployment (2026-08-21)
|
||||||
- [[Dankserver System Specs]] — the RTX 3090 box hardware
|
- [[Dankserver System Specs]] — the RTX 3090 box hardware
|
||||||
|
|||||||
@@ -76,9 +76,11 @@ CACHE_TYPE_V=q8_KV
|
|||||||
K_CACHE_HADAMARD=1
|
K_CACHE_HADAMARD=1
|
||||||
V_CACHE_HADAMARD=1
|
V_CACHE_HADAMARD=1
|
||||||
|
|
||||||
# Split mode: graph (multi-GPU graph split; on a single 3090 this is a no-op
|
# Split mode: none. Dankserver has a single RTX 3090 and ik_llama requires
|
||||||
# for correctness but kept per operator preference).
|
# >= 2 devices for split-mode graph ('It is not possible to use split mode
|
||||||
SPLIT_MODE=graph
|
# graph with less than 2 devices' is a hard load error). none is correct
|
||||||
|
# here and still works with OVERRIDE_EXPERT CPU expert offload.
|
||||||
|
SPLIT_MODE=none
|
||||||
|
|
||||||
VERBOSITY=4
|
VERBOSITY=4
|
||||||
# Store context checkpoints in RAM to hold peak GPU memory down.
|
# Store context checkpoints in RAM to hold peak GPU memory down.
|
||||||
|
|||||||
@@ -10,10 +10,8 @@
|
|||||||
# KV cache: q8_KV with Hadamard transforms on K and V (requires a build with
|
# KV cache: q8_KV with Hadamard transforms on K and V (requires a build with
|
||||||
# GGML_CUDA_FA_ALL_QUANTS=ON + GGML_IQK_FA_ALL_QUANTS=ON; see the env file).
|
# GGML_CUDA_FA_ALL_QUANTS=ON + GGML_IQK_FA_ALL_QUANTS=ON; see the env file).
|
||||||
#
|
#
|
||||||
# Split mode graph + --override-tensor CPU expert offload. Per ik_llama
|
# Split mode is none: Dankserver has a single RTX 3090 and ik_llama rejects
|
||||||
# README, `--split-mode graph` + partial GPU offload can occasionally produce
|
# split-mode graph with fewer than 2 devices (hard load error).
|
||||||
# incoherent output; the documented fallback is `-cuda graphs=0`. Smoke-test
|
|
||||||
# after each model load.
|
|
||||||
#
|
#
|
||||||
# Expert offload: the expert (FFN exps) tensors selected by the layer-bounded
|
# Expert offload: the expert (FFN exps) tensors selected by the layer-bounded
|
||||||
# --override-tensor pattern are pinned to CPU. Selected full-attention and
|
# --override-tensor pattern are pinned to CPU. Selected full-attention and
|
||||||
|
|||||||
Reference in new issue
Block a user