v0.3.0
Changelog
- Updated to a much newer llama.cpp base. The upstream refresh brings native MTP speculative decoding, parallel drafting and backend sampling work, the unified
llamaapp, newer server/API behavior, thetools/uiWeb UI restructure, model and converter additions, multimodal improvements, and backend gains across CUDA/HIP, Metal, Vulkan, SYCL, OpenCL, WebGPU, Hexagon, ZenDNN, and SpacemiT. - Added usable MTP serving on the Bee tree.
draft-mtp/mtpnow has its own speculative path instead of being mixed with DFlash state, uses draft KV cache types, cleans up draft resources on sleep, works with target pre-norm hidden-state capture, and handles text requests when anmmprojis loaded. - Cleaned up DFlash command-line behavior around canonical
--spec-*arguments. DFlash can still be selected with--spec-type dflashor auto-detected from compatible draft GGUF metadata, but stale aliases such as--spec-dflash-default,--draft*,--draft-topk,--draft-model,--tree-budget,--dflash-max-slots,--spec-draft-replace, and--spec-replacewere removed. - Made DFlash defaults match the new upstream speculative surface without changing the practical DFlash defaults. Raw
--spec-draft-n-maxstays at upstream3, DFlash raises the effective omitted draft max to16only after explicit or auto-detected DFlash, omitted--spec-draft-ctx-sizestill becomes256, and DFlash no longer lowers target-b 2048/-ub 512unless the user asks for smaller batches. - Made DFlash-only arguments safe around non-DFlash modes. DFlash-only controls warn and no-op for MTP or other speculative types, while still surviving long enough for server-side DFlash draft-model auto-detection when no explicit
--spec-type dflashwas passed. - Expanded multi-slot DFlash serving. DFlash slots now default to server parallelism,
--spec-dflash-max-slotscaps them below-npwhen needed, uneven-nptarget batches are split safely, mixed speculative/non-speculative target batches are avoided, and flat multi-slot DFlash can use shared drafter batching withGGML_DFLASH_SHARED_DRAFT_BATCH=0as the fallback switch. - Reworked adaptive DFlash draft depth for live serving. The default
profitcontroller now seeds and periodically remeasures a no-spec baseline, probes shallow/mid/full positive depths, backs off failed wake probes, avoids premature demotion, resets per-request state correctly, preserves compatible continuation state, and gates timing logs behind DFlash profiling. - Added default-on device-aware DFlash GPU capture/tape/replay for split CUDA/ROCm target placement. Hidden capture, prefill capture, recurrent tape, conv replay, direct GDN replay, rollback copies, and synchronization now follow each layer's backend device, with CPU/eval-callback fallback and
GGML_DFLASH_MULTI_GPU_TAPE=0/GGML_DFLASH_ALLOW_MULTI_GPU_TAPE=0kill switches. - Hardened DFlash device placement. Explicit single draft-device placement pins the target output tensor before target load, auto-detected DFlash drafters stay single-device by default unless draft devices are explicit, iGPU backends are accepted for GPU paths, tensor-split/meta placement is guarded, CUDA helper calls preserve the caller device, and peer D2D copies are used where available.
- Hardened DFlash hidden-ring and prompt-cache state. The server guards GPU hidden-ring spans, discards stale DFlash ring checkpoints, skips DFlash checkpoints for uncached prompts, restores shared prefill capture state, and avoids requesting raw prompt logits from DFlash paths that should not read them.
- Reduced DFlash accept and verification overhead while failing closed on bad reduced-logit state. The accept path defers single-slot rollback sync and drafter KV maintenance, keeps the fused GDN 4D state fast path, adds CPU f16
out_prodfallback, and disables DFlash drafting after repeated invalid reduced-logits drafts instead of looping or corrupting state. - Improved DFlash tool-call and reasoning behavior. DFlash can keep drafting before a lazy tool-call grammar actually constrains output, stale drafter KV state is cleared before long tool-call continuations, stable partial tool-call headers stream earlier, streaming reasoning deltas stay isolated, and streamed title generation suppresses leading thinking syntax.
- Kept flat DFlash available with multimodal serving while making unsupported combinations explicit. With
--mmproj, Bee keeps flat DFlash usable, forces DFlash tree branch budget to0, disables non-DFlash speculative modes, disables unsupported context-shift/cache-reuse paths, and fixes MTP text-only requests when anmmprojis present. - Updated Qwen 3.5/3.6 speculative paths. Qwen gets per-layer KV heads, final-layer output gathering, stable MTP draft context behavior, and Qwen DDTree conv/GDN paths for tree verification.
- Removed legacy DDTree total-node semantics from the public CLI. Tree DFlash now uses the branch-only
--spec-branch-budgetmodel consistently, with--spec-draft-top-kcontrolling candidates per draft position and flat DFlash forcing top-k back to1. - Added new cache and quantization surface beyond v0.2.0.
q6_0is available as a KV/cache type, and Tom'sTQ3_1S/TQ4_1Smodel weight formats are exposed throughllama-quantizewith non-conflicting serialized GGML type IDs; existingturbo2,turbo3,turbo4,turbo2_tcq, andturbo3_tcqcache types remain available on the newer base. - Hardened backend behavior used by Bee features. HIP TCQ attention stays on the native vector path, ROCm can probe fused GDN support, D512 Flash Attention selection is available again, unsupported CPU BF16 scale and CPU Flash Attention types are rejected instead of misrunning, CUDA fatal-warning cases were fixed, and the build now requires C++17 for the common base.
- Improved server and API behavior inherited from upstream and Bee integration. The server reports prompt token counts in
/slots, supports SSE ping intervals and HTTP ETags, exposes real-time reasoning interruption, handles router/model metadata fixes, adds built-in tools such as datetime, and keeps malformed tool-looking text out of final responses. - Updated packaging and release workflows. Docker image links and labels were aligned for BeeLlama, SYCL package/release images were added and documented, release builds were split and cached more reliably, stale package builds are cancelled, and obsolete CUDA architecture options are rejected at configure time.
- Updated user documentation for the new release state, including DFlash args/defaults, removed aliases, adaptive Draft-Max, multi-GPU DFlash behavior, Turbo/TQ cache and weight formats, Docker images, and the upstream multi-GPU guide.
- Expanded regression coverage around DFlash default normalization, removed arg aliases, DFlash-only no-op behavior, DFlash auto-detection, multi-GPU policy helpers, per-layer capture/tape allocation, device-aware replay, CUDA device restoration, adaptive Draft-Max, reduced-logit failure handling, and tool-call/speculative boundaries.
macOS:
Linux:
Windows:
- Windows x64 CPU
- Windows x64 SYCL
- Windows x64 CUDA 12.4 - DLLs
- Windows x64 CUDA 13.1 - DLLs
- Windows x64 HIP
Docker:
- CPU:
docker pull ghcr.io/anbeeld/beellama.cpp:server-cpu-v0.3.0 - CUDA:
docker pull ghcr.io/anbeeld/beellama.cpp:server-cuda-v0.3.0 - CUDA 12:
docker pull ghcr.io/anbeeld/beellama.cpp:server-cuda12-v0.3.0 - CUDA 13:
docker pull ghcr.io/anbeeld/beellama.cpp:server-cuda13-v0.3.0 - ROCm:
docker pull ghcr.io/anbeeld/beellama.cpp:server-rocm-v0.3.0 - Vulkan:
docker pull ghcr.io/anbeeld/beellama.cpp:server-vulkan-v0.3.0 - SYCL:
docker pull ghcr.io/anbeeld/beellama.cpp:server-sycl-v0.3.0