You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Speculative decoding: three more draft types and an Advanced knobs subsection. The Draft Type dropdown grows to all five draft-model-family values llama.cpp accepts: draft-simple (any smaller model with the same tokenizer), draft-mtp(default; the only value where the drafter is optional and falls back to built-in MTP heads), draft-dflash, draft-dspark, draft-eagle3. The four newly listed types require a Draft Model; the preset save rejects a config that would fail at launch, and unknown values are rejected up front. The n-gram / lookup speculative family stays reachable via Extra Args. A new native <details>Advanced subsection exposes --spec-draft-n-min / --spec-draft-p-split / --spec-draft-p-min — blank omits the flag so llama-server uses its own default (which drifts across versions).
Flash Attention + KV cache quantization.Model Settings gains a Flash Attention select (--flash-attn [on|off|auto], default Auto) and per-side K Cache Type / V Cache Type dropdowns (--cache-type-k / --cache-type-v; accepts f16 default plus f32, bf16, q8_0, q5_1, q5_0, iq4_nl, q4_1, q4_0). Flash Attention maps 1:1 to llama.cpp's tri-state: Auto lets llama.cpp decide per backend (and omits the flag entirely, matching its own default); On forces the fused kernel; Off disables it. --flash-attn on|off is emitted explicitly rather than as a bare flag, because llama.cpp's tri-state parser now consumes the next arg as the value. Non-default cache types emit their flag only when set to a value in the whitelist, so leaving all defaults reproduces pre-feature behaviour byte-for-byte. llama-server refuses quantized V cache without Flash Attention actually enabled; the UI enforces this by greying the V dropdown unless Flash Attention is explicitly On (Auto is not a guarantee - llama.cpp may resolve it to off on some backends) and auto-snapping a stale quantized V back to f16 the moment Flash Attention leaves On, but server-side we deliberately pass the flags through unchanged so an API caller bypassing the UI sees llama-server's real error rather than a silently dropped flag. All three keys are shared cluster-wide preset fields (matching ctx_size).
Multi-GPU placement: Split Mode and Tensor Split. The launch form's new GPU Settings section exposes --split-mode (none / layer default / row) and --tensor-split as first-class controls. Tensor Split takes comma-separated relative weights per container-visible GPU (llama.cpp normalizes, so 24,16 == 3,2 == 0.6,0.4); blank auto-fills at launch time from each visible GPU's total VRAM, with a live preview under the field. Both fields are per-node hardware in the preset (topology varies per cluster node), and an empty split_mode from an old preset backfills to "layer" at emit time so existing configs behave identically.
Grey-out matrix in GPU Settings, honest to what actually happens in-container. Intel vendor greys GPU Devices + Split Mode + Tensor Split (per-instance SYCL device filtering isn't wired up; gpu_devices is currently a silent no-op on Intel); GPU Layers = 0 greys the same trio; fewer than 2 visible GPUs greys Split Mode + Tensor Split; Split Mode = None greys Tensor Split alone. GPU Layers stays editable in every case because -ngl IS honoured on Intel. /api/gpu-info now returns the detected vendor alongside gpus[] so the client can decide the Intel case without a second roundtrip.
Changed
The launch form is grouped into bordered sections. The compact top grid had grown to ~9 standalone fields with no visual grouping. Runtime fields now live in titled bordered boxes — Model Settings, Container & Proxy Settings, GPU Settings — using a new .launch-section-grid that mirrors the outer .form-grid exactly, so fields inside a section look identical to the top-level ones above them. Display Name gains an (optional) suffix; it stays in the launch-pair with Model Path + Note. No functional changes: field ids, preset serialization, and launch bodies are unchanged.
Info-tip tooltips: wider variant + honest disabled-field opacity. A new .info-tip-wide variant bumps the max-width from 240px to 360px for tooltips whose text needs the room; the viewport-edge clip helper knows about the wider variant. Greyed fields' tooltips no longer render half-transparent — .gpu-field-disabled previously set opacity: 0.55 on the whole form-group, which cascades to every descendant via CSS opacity's stacking-context rules including the tooltip pseudo-element. Now only the label's colour is muted; the disabled input/select is already visually distinct via the browser's own :disabled styling.