Skip to content

1.7.0

Choose a tag to compare

@nullata nullata released this 20 Aug 22:53
· 111 commits to main since this release

[1.7.0] - 2026-08-21

Added

  • 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.