Skip to content

Bump llama.cpp to 23b0202a1 (b11552), add lfm2-d1-omni decision model, release v0.8.57 - #102

Closed
nyo16 wants to merge 1 commit into
masterfrom
bump-llama-cpp-b11552
Closed

nyo16 wants to merge 1 commit into
masterfrom
bump-llama-cpp-b11552

Conversation

@nyo16

@nyo16 nyo16 commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Summary

Bumps llama.cpp from 88dcc460d (b11479+4) to 23b0202a1 (b11552), 69 commits, and adds support for upstream's new
lfm2-d1-omni decision model (LiquidAI/d1-omni-600M, upstream #30114).

llama_nif.cpp needed no changes. include/llama.h changes comments only. The chat API refactor (#30210) leaves the two chat
calls the NIF uses, common_chat_templates_inputs and common_chat_templates_apply, unchanged. The default params are the
same, and the RPC protocol stays at 8.0.0.

Changes

  • New decision type lfm2-d1-omni, ported into decision.cpp:
    • scores each option at its <|mask|> marker
    • cuts the question, each option and the state to the token limits the model was trained with (fill_task_d1omni)
    • escapes special tokens in the input
    • accepts a nil state
    • also reads noul descriptions under "yes"/"no"
    • evaluates each prompt in one batch, because the context has no memory
  • Elixir: LlamaCppEx.Decision maps the type to :lfm2_d1_omni and gives it an embeddings context.
  • Request parsing (parse_state): accepts "files" as another name for "images", as upstream does, and rejects
    input_audio parts. This build doesn't link libmtmd, so it has no image or audio input.
  • scripts/decision_compare.exs: three new requests: yes/no answer descriptions, options longer than the token limits,
    and special-token text in the input.
  • Pin and docs: LLAMA_COMMIT in the Makefile matches the submodule. The version is 0.8.57. CHANGELOG, README (d1-omni
    section with measured answers), release guide (upstream-defect re-check at 23b0202a1) and decision.ex docs are updated.
  • :mtp_cancel: the known-broken test now crashes the VM in 4 of 6 runs. The previous pin gives the same 4 of 6, so this
    bump didn't cause it. Recorded in the comments of test/mtp_model_test.exs and test/test_helper.exs.

Verification (M1 Max)

Run Result
Default suite, no model (Metal) 430 passed, 173 excluded
smoke + embeddings + slow + mtp (Metal) 574 passed, 29 excluded
embeddings on embeddinggemma-2 (Metal) 441 passed
decision, tinylaya + tinyopenjev (Metal) 442 passed
decision, tinylaya + tinyopenjev (CPU build) 442 passed
decision_clef, Clef Flash Q8_0 (Metal) 3 of 3 passed
mtp_sidecar, Qwen 3.8 27B pair (Metal) 436 passed, 6 skipped
mix format, mix dialyzer clean, 0 errors
Hex source build clones 23b0202a1 and compiles

scripts/decision_compare.exs against upstream llama-server, built from the same commit (Metal), returns ALL MATCH on
tinylaya, tinyopenjev, Clef Flash, d1-3B and d1-omni-600M. Token counts are identical everywhere. On d1-omni, single-question
requests match exactly, and multi-question requests differ by up to 6.6e-4.

d1-omni-600M speed (Q8_0, fully on the GPU): about 14 ms per question once warm (3 questions: 41.6 ms median). The first call
after loading takes 87 ms.

Not run: rpc_live, and the smoke/MTP suites on a CPU build.

…-omni, release v0.8.57

No llama_nif.cpp change needed: include/llama.h changes comments only, and
the chat API refactor (#30210) leaves common_chat_templates_inputs /
common_chat_templates_apply, the only chat calls the NIF makes, intact.
Default params unchanged; RPC protocol stays 8.0.0. The three release-guide
defects still stand by source diff.

- decision.cpp / Decision: port the lfm2-d1-omni type (#30114,
  LiquidAI/d1-omni-600M): mask-marker scores from a memory-less non-causal
  LFM2, per-piece token budgets (fill_task_d1omni), special-token escaping,
  null state, yes/no noul descriptions, one-batch evaluation. parse_state
  reads "files" with "images" as alias and rejects input_audio parts.
  "Ported at" is 23b0202a1.
- decision_compare.exs: three more requests (yes/no noul, over-budget
  options, special text). ALL MATCH vs upstream llama-server (Metal) on
  tinylaya, tinyopenjev, Clef Flash, d1-3B and d1-omni-600M.
- :mtp_cancel aborts the VM again (4/6 runs), identically at 88dcc460d;
  recorded in the test and test_helper comments.

Verified on Metal (M1 Max): 430 default, 574 smoke/embeddings/slow/mtp,
441 embeddings (embeddinggemma-2), 442 decision, 3/3 decision_clef,
436 passed / 6 skipped mtp_sidecar; CPU 442 decision. Format and dialyzer
clean; Hex source build clones the pinned SHA.
@nyo16 nyo16 changed the title Bump llama.cpp to 23b0202a1 (b11552, +69 from 88dcc460d), add lfm2-d1… Bump llama.cpp to 23b0202a1 (b11552), add lfm2-d1-omni decision model, release v0.8.57 Oct 10, 2026
@nyo16 nyo16 closed this Oct 13, 2026
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