Skip to content

Upgrade llama.cpp from b11815 to b11827 - #556

Merged
bernardladenthin merged 3 commits into
mainfrom
ccr-90fc5f6a-vs4s0f
Oct 22, 2026
Merged

bernardladenthin merged 3 commits into
mainfrom
ccr-90fc5f6a-vs4s0f

Conversation

@bernardladenthin

Copy link
Copy Markdown
Owner

Summary

  • b11815 → b11820 (5108b4d): upstream #29625 gave format_prompt_rerank() two new parameters (the decoded images of the query and the document). engine::rerank now passes empty lists, which builds the same text-only prompt as before. Upstream's rerank route also takes typed items now: {"text": ..., "image": ...}. NativeServer serves that route with images included. OpenAiCompatServer (OaiRerankSupport) handles the text part the way upstream does, and refuses an image with a 400 that names NativeServer rather than ranking the text alone. LlamaModel.rerank and jllama_rerank stay text-only; wiring multimodal rerank through them is a TODO.md entry. This step also brings Nemotron with a wider Q projection, the domyn-small pre-tokenizer, the tokenizer.ggml.metaspace.prepend_scheme key, and posix_memalign in the Vulkan buffers.
  • b11820 → b11827 (f6159b5): no source change here. Upstream adds SYCL XMX mat-vec kernels, an OpenCL CONV_2D_DW, the MiniCPM-OCR 1.0 projector, a DFlash fix for qwen4exp, fewer graph inputs for glm5-next, and --mlock now also locks split host buffers.
  • Review fixes (04e3cea): readItem now follows upstream's parse_item step by step. A null or empty image counts as no image; it was a 400 after 5108b4d. A missing or null text is empty text. This commit also corrects five wording errors in the bump docs.

All 12 patches apply unchanged (check-patches.py: 88 hunks, 0 problems). Range b11815..b11820 touches server-context.{cpp,h}, the file patches 0002, 0003 and 0021 change. Their drop-checks still find the bugs those patches fix, so the patches stay. Upstream's build files and .github/ are unchanged across the range, so the toolchain pins in publish.yml stay as they are.

Test plan

  • Each step: fresh configure, build, ctest 686/686, NativeLibraryLoadSmokeTest 7/7 against that step's library
  • OaiRerankSupportTest 35/35 (11 new cases, each one failing before its fix, except the case that pins the refusal of an image list), OpenAiCompatServerHttpTest 81/81
  • Spotless and SpotBugs clean; check-natives.py, check-shared-files.py and check-patches.py all pass
  • CI is green on this branch (the full Java suite and the model-backed tests run there only)
  • Docs / CHANGELOG updated: history rows, CHANGELOG, TODO.md, README /v1/rerank row, readTopN Javadoc

Related issues / PRs

Follows #555. Upstream: ggml-org/llama.cpp#29625, #23343, #30828, #29864, #30900, #30979, #30927, #30932.

Checklist

  • I have read CONTRIBUTING.md and CODE_OF_CONDUCT.md
  • My commits follow Conventional Commits (they follow the repository's "Upgrade llama.cpp from bX to bY" convention)
  • No security-sensitive changes

Generated by Claude Code

Five upstream commits (d77256999 = b11820). One compile break, in
jllama_engine.cpp: format_prompt_rerank() takes the decoded images
of the query and the document since #29625 ("server : support typed
content input for RERANK endpoint"); engine::rerank passes two empty
lists, which is the old text-only prompt.

The rerank route reads the query and each document as a string or
{"text": string or [strings], "image": ...} now. OaiRerankSupport
follows the text half: an object query is accepted, a text array
concatenated, and an item with an image is a 400 naming NativeServer
instead of being ranked by its text alone (an object document's
other keys used to be ignored); video/fps/max_frames get upstream's
message. Six new cases in OaiRerankSupportTest, red before the
change. readTopN's Javadoc says that upstream refuses a negative
top_n too now.

Also: Nemotron with a wider Q projection, the domyn-small pre-tokenizer
and a tokenizer.ggml.metaspace.prepend_scheme key (#23343);
posix_memalign in the Vulkan buffers (#30828); two CI-only commits.

All 12 patches apply unchanged (check-patches.py: 88 hunks,
0 problems).  The drop-checks of 0002, 0003 and 0021, whose file
server-context.cpp is in the range, still find the defects. The server
request fields, their bounds and the response keys are identical.

Verified: fresh configure and build, ctest 686/686,
NativeLibraryLoadSmokeTest 7/7 against the b11820 library,
OaiRerankSupportTest 30/30, OpenAiCompatServerHttpTest 81/81, spotless
and spotbugs clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBFFnrhtvXiUeyxjmUc4R2
Seven upstream commits (970b51ce7 = b11827), no source change here:
SYCL multi-column mat-vec on the Intel XMX engines for short batches
(#29864, GGML_SYCL_ENABLE_XMX_ESIMD), an OpenCL CONV_2D_DW kernel
(#30900), the MiniCPM-OCR 1.0 projector in mtmd (#30979), DFlash drafter
fixes for qwen4exp (#30927) and glm5-next (#30932), and --mlock locking
the parts of a split host buffer (a CUDA pinned host buffer above 4 GB,
skipped before). mtmd.h and mtmd-helper.h are not in the range, nor is
anything in common/, include/ or tools/server/.

All 12 patches apply unchanged (check-patches.py: 88 hunks, 0 problems);
no patch-target file is in the range. Upstream's build files and
.github/ are unchanged across b11815..b11827, so the toolchain pins of
publish.yml stay.

Verified: fresh configure and build, ctest 686/686,
NativeLibraryLoadSmokeTest 7/7 against the b11827 library.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBFFnrhtvXiUeyxjmUc4R2
The review of the b11820/b11827 commits found that OaiRerankSupport.readItem
refused an item whose "image" was null or [] and one without a "text".
Upstream's parse_item ranks both by their text (an empty text for the
second). An object document with "image": null was ranked here before
5108b4d, so for documents this was a regression of that commit.

readItem now follows parse_item step by step: video/fps/max_frames
refused, a text string or array of strings concatenated (missing or null
is empty text, another type or a non-string element is upstream's
message), a null or empty image ignored, an image of another type or a
list starting with a non-string refused with upstream's message. A
string image or a list of them stays the one deliberate difference: a 400
naming NativeServer instead of ranking the text alone. Five new cases in
OaiRerankSupportTest, four of them red before the change; the existing
text-array case now expects upstream's quoting.

Docs: the CHANGELOG's b11827 sentence called the glm5-next commit a
DFlash fix (it removes graph inputs, #30932); TODO.md named a
jllama_completion that does not exist and data URIs where the raw prompt
carries base64; the b11820 history row said three 400s were new where only
the negative top_n is, missed one comment line upstream adds in
handle_embeddings_impl, and left convert_hf_to_gguf_update.py out of the
file list.

Verified: OaiRerankSupportTest 35/35, OpenAiCompatServerHttpTest 81/81,
spotless and spotbugs clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBFFnrhtvXiUeyxjmUc4R2
@bernardladenthin
bernardladenthin merged commit 1777716 into main Oct 22, 2026
8 of 14 checks passed
@bernardladenthin
bernardladenthin deleted the ccr-90fc5f6a-vs4s0f branch October 22, 2026 21:06
@sonarqubecloud

Copy link
Copy Markdown

This branch had an error being deployed

1 failed deployment
maven-central — 04e3cea8 Deployed Oct 22, 2026 by bernardladenthin via Verify GPG signing key (no secrets printed) #1318
startgate — 04e3cea8 Deployed Oct 22, 2026 by bernardladenthin via Start gate (abort window) #1318
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.

2 participants