Skip to content

feat: evaluate DSpark alongside DFlash 2, add DSpark llama-server presets - #4595

Merged
atomantic merged 1 commit into
mainfrom
cos/task-mt08yl3o/agent-96cc7653
Aug 19, 2026
Merged

feat: evaluate DSpark alongside DFlash 2, add DSpark llama-server presets#4595
atomantic merged 1 commit into
mainfrom
cos/task-mt08yl3o/agent-96cc7653

Conversation

@atomantic

Copy link
Copy Markdown
Owner

Summary

Investigates DSpark (via ARahim3/mlx-dspark) against the DFlash 2 evaluation from earlier today, and answers the open question about Ollama support.

Verdict: worth adding — as a preset, not a backend. The prior DFlash 2 note concluded "not adoptable" partly because PortOS orchestrated no llama.cpp server. That changed: PortOS now manages llama-server, and its Spec Type field passes straight through to --spec-type. That flips the ranking between the two drafter families:

Family llama.cpp status Reachable today
DSpark #25173 merged 2026-07-28 Yes — stock brew install llama.cpp
DFlash 2 #27342 still open Only from a source build of the PR branch

PortOS shipped presets exclusively for DFlash 2 — the one family needing an unmerged branch. DSpark needs zero new backend, zero new dependency, and no server change.

mlx-dspark itself is not worth adopting — it would be a fourth local inference backend (pip, Apple-Silicon-only, MLX-safetensors-only) bought for a speedup PortOS already reaches, and a user who wants it needs nothing from PortOS anyway: mlx-dspark serve listens on 127.0.0.1:8080 with an OpenAI-compatible API, exactly where the opencode-llama-tui provider preset already points.

Ollama support for DSpark: partial, and not usable. Ollama's vendored engine has carried DSpark since 0.32.6 (#17545), but Ollama surfaces no control — its server hardcodes --spec-type draft-mtp. Selecting DSpark requires overriding LLAMA_ARG_SPEC_TYPE on the Ollama process and pointing at a raw blob-store sha256 path; the one reported measurement through that path was ~13%. ollama#17016 is still open.

Changes

  • client/src/components/settings/LocalLlmTab.jsxDFLASH_PRESETSSPEC_DECODE_PRESETS, led by two draft-dspark presets that run on a stock llama.cpp. The DFlash 2 presets stay, relabelled with the build they require, because llama.cpp falls back silently on a spec-type/drafter mismatch rather than erroring. alias stays dflash so the provider's default model alias keeps resolving.
  • server/services/huggingFaceCatalog.jsdspark joins the MLX drafter name filter. mlx-community/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-DSpark-bf16 declares mlx + dspark + speculative-decoding but no draft-model tag, so the tag predicate alone offered a 30B target's drafter sidecar as a one-click install — a model that cannot chat. Same hazard class the DFlash 2 change fixed, new family.
  • docs/research/2026-08-19-dspark-vs-dflash2.md — the full comparison, including the quantified reason the GGUF branch is deliberately left alone (name-matching dspark there would hide mainstream complete models, the worse failure).
  • docs/features/dflash2.md — generalized to cover both families, with the availability guidance and an Ollama section.

Test plan

  • cd server && npm test — 1486 files, 30670 passed
  • cd client && npm test — 681 files, 8408 passed
  • New test huggingFaceCatalog.test.js:727 verified failing before the fix (expected true to be false) and passing after.

…sets

DSpark's `--spec-type draft-dspark` merged into llama.cpp on 2026-07-28
(ggml-org/llama.cpp#25173), while DFlash 2's engine modules are still an
open PR (#27342) needing a from-source build. Since PortOS already manages
llama-server and passes `--spec-type` straight through, DSpark is reachable
today at zero backend cost — and is the more available of the two families.

- Settings -> Local LLMs: DFLASH_PRESETS becomes SPEC_DECODE_PRESETS, led by
  two `draft-dspark` presets that run on a stock `brew install llama.cpp`.
  The DFlash 2 presets stay, relabelled with the build they require, because
  llama.cpp falls back silently on a spec-type/drafter mismatch rather than
  erroring.
- Hugging Face model search: `dspark` joins the MLX drafter name filter. A
  real mlx-community repo declares `mlx` + `dspark` + `speculative-decoding`
  but no `draft-model` tag, so PortOS was offering a 30B target's drafter
  sidecar as a one-click install — a model that cannot chat.
- Research note comparing the two families, covering the Ollama question:
  Ollama's vendored engine has carried DSpark since 0.32.6 but surfaces no
  control for it (its server hardcodes `--spec-type draft-mtp`), so the
  Ollama backend is not a usable path.
@atomantic
atomantic merged commit 9187cfb into main Aug 19, 2026
7 checks passed
@atomantic
atomantic deleted the cos/task-mt08yl3o/agent-96cc7653 branch August 19, 2026 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant