]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/log
pkg/ggml/sources/llama.cpp
4 weeks agoCANN: Uses yarn_ramp cache in ROPE (#17725)
TianHao324 [Wed, 24 Dec 2025 06:55:33 +0000 (14:55 +0800)]
CANN: Uses yarn_ramp cache  in ROPE (#17725)

4 weeks agocommon: add `LLAMA_ARG_OVERRIDE_TENSOR` env var for `-ot` arg (#18267)
ddh0 [Wed, 24 Dec 2025 06:19:12 +0000 (00:19 -0600)]
common: add `LLAMA_ARG_OVERRIDE_TENSOR` env var for `-ot` arg (#18267)

4 weeks agoserver: return_progress to also report 0% processing state (#18305)
Xuan-Son Nguyen [Tue, 23 Dec 2025 20:49:05 +0000 (21:49 +0100)]
server: return_progress to also report 0% processing state (#18305)

4 weeks agowebui: apply webui_settings on first load (#18223)
Pascal [Tue, 23 Dec 2025 14:48:03 +0000 (15:48 +0100)]
webui: apply webui_settings on first load (#18223)

* webui: apply webui_settings on first load

The webui_settings from /props were not applied on initial load
when default_generation_settings.params was null

Now syncs whenever serverProps is available, regardless of params,
works for both single-model and router modes

* chore: update webui build output

4 weeks agoserver: fix crash with model not having BOS/EOS (#18321)
Xuan-Son Nguyen [Tue, 23 Dec 2025 13:39:36 +0000 (14:39 +0100)]
server: fix crash with model not having BOS/EOS (#18321)

4 weeks agomodel-conversion : add device option to run-org-model.py (#18318)
Daniel Bevenius [Tue, 23 Dec 2025 13:07:25 +0000 (14:07 +0100)]
model-conversion : add device option to run-org-model.py (#18318)

* model-conversion : add device option to run-org-model.py

This commit refactors the `run-org-model.py` script to include a
`--device` argument, to allow users to specify the device on which to
run the model (e.g., cpu, cuda, mps, auto).
It also extracts a few common functions to prepare for future changes
where some code duplication will be removed which there currently
exists in embedding scripts.

The Makefile is also been updated to pass the device argument, for
example:
```console
(venv) $ make causal-verify-logits DEVICE=cpu
```

* fix error handling and remove parser reference

This commit fixes the error handling which previously referenced an
undefined 'parser' variable.

4 weeks agorpc : add check for rpc buffer type (#18242)
Chris Rohlf [Tue, 23 Dec 2025 09:56:49 +0000 (04:56 -0500)]
rpc : add check for rpc buffer type (#18242)

4 weeks agoggml-hexagon: create generalized functions for cpu side op (#17500)
nullname [Tue, 23 Dec 2025 07:13:24 +0000 (15:13 +0800)]
ggml-hexagon: create generalized functions for cpu side op (#17500)

* refactor: replace ggml_hexagon_mul_mat with template-based binary operation for improved flexibility

* refactor: replace ggml_hexagon_mul_mat_id with template-based binary operation for improved flexibility

* refactor: initialize buffer types and streamline dspqueue_buffers_init calls for clarity

* add comment

* refactor: remove redundant buffer checks in hexagon supported operations

* wip

* add missing include to fix weak symbol warning

* add ggml_hexagon_op_generic

* refactor: simplify tensor operation initialization and buffer management in hexagon implementation

* refactor: streamline hexagon operation initialization and buffer management

* refactor: update function signatures and streamline request handling in hexagon operations

* wip

* ggml-hexagon: clean up code formatting and improve unary operation handling

* wip

* rename

* fix: add support for permuted F16 tensors and enhance quantization checks in matrix operations

* refactor: replace ggml_hexagon_mul_mat with template-based binary operation for improved flexibility

refactor: replace ggml_hexagon_mul_mat_id with template-based binary operation for improved flexibility

refactor: initialize buffer types and streamline dspqueue_buffers_init calls for clarity

refactor: remove redundant buffer checks in hexagon supported operations

add missing include to fix weak symbol warning

add ggml_hexagon_op_generic

refactor: simplify tensor operation initialization and buffer management in hexagon implementation

refactor: streamline hexagon operation initialization and buffer management

refactor: update function signatures and streamline request handling in hexagon operations

ggml-hexagon: clean up code formatting and improve unary operation handling

fix: add support for permuted F16 tensors and enhance quantization checks in matrix operations

# Conflicts:
# ggml/src/ggml-hexagon/ggml-hexagon.cpp

* hexagon: fix merge conflicts

* hexagon: minor cleanup for buffer support checks

* hexagon: factor out op_desc and the overal op logging

* hexagon: further simplify and cleanup op dispatch logic

* snapdragon: update adb scripts to use llama-cli and llama-completion

* fix pipeline failure

---------

Co-authored-by: Max Krasnyansky <redacted>
4 weeks agomodel-conversion : add trust_remote_code for embedding scripts (#18288)
Daniel Bevenius [Tue, 23 Dec 2025 06:27:37 +0000 (07:27 +0100)]
model-conversion : add trust_remote_code for embedding scripts (#18288)

This commit adds the trust_remote_code=True parameter when loading
models and configurations in the embedding model conversion scripts.
It also adds a cast to float for models that might use a data type that
is not supported by python, for example bfloat16.

The motivation for this is that some models may require custom code to
be executed during loading, and setting trust_remote_code to True avoids
getting prompted for confirmation.

Future work will consolidate the embedding conversion scripts with the
causal conversion scripts to avoid code duplication. But in the mean
time it would be nice to have this fix in place.

4 weeks ago[SYCL] replace llama-cli by llama-completion to rm the impact to test script (#18290)
Neo Zhang [Tue, 23 Dec 2025 04:59:12 +0000 (12:59 +0800)]
[SYCL] replace llama-cli by llama-completion to rm the impact to test script (#18290)

* replace llama-cli by llama-completion to rm the impact to test script

* Update examples/sycl/run-llama2.sh

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update examples/sycl/run-llama2.sh

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update examples/sycl/run-llama3.sh

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update examples/sycl/run-llama3.sh

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update examples/sycl/win-run-llama2.bat

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update examples/sycl/win-run-llama3.bat

Co-authored-by: Sigbjørn Skjæret <redacted>
---------

Co-authored-by: Neo Zhang Jianyu <redacted>
Co-authored-by: Sigbjørn Skjæret <redacted>
4 weeks agomodel : fix div-by-zero for Nemotron V2 (#18309)
Alessandro98-git [Tue, 23 Dec 2025 02:04:57 +0000 (03:04 +0100)]
model : fix div-by-zero for Nemotron V2 (#18309)

* llama-model : fix Nemotron V2 crash by moving MoE parameters calculation

* remove whitespace

---------

Co-authored-by: Sigbjørn Skjæret <redacted>
4 weeks agomodel : Granite Embedding support (#15641)
Ryan Mangeno [Mon, 22 Dec 2025 23:28:19 +0000 (18:28 -0500)]
model : Granite Embedding support (#15641)

ModernBERT but without `head.norm` so will currently fail to convert and run any other ModernBERT models, PRs with `head.norm` support welcome!

* constants and tensor mappings for modern bert support, model not supported yet but working on getting conversion to work for encoder only

* conversion now working, hf -> gguf

* working on support, now working on building graph

* some cleanup

* cleanup

* continuing

* correct tensor shape for qkv

* fixed tensor mappings and working on buildin graph

* tensor debugging now works -> (llama-eval-callback), instead of simulated gate split with views, GEGLU is now used which does exactly this

* cleanup

* cleanup

* cleanup

* more cleanup

* ubatch issues, the assert for checking equal seqs in llama-graph.cpp when building attention  keeps failing, setting ubatch size to 1 when running llama-embedding with --ubatch-size 1 makes it work, but needs to be looked into more

* added cls token per previous modern bert attempt, still working on checking out the rest

* fixed pre tokenizer and still working through previous pr

* working through previous attemp, implimented more accurate conversion per previous attempt, added local sliding window attention that alternates every third layer

* fixed pre tokenizer

* working on swa with local and global alternating attention

* some cleanup and now fails on build attn

* starting to work, and some cleanup, currently failing on last layer construction in graph build

* alternating rope implemented and modern bert graph build succeeds

* fixed asser for equal ubatch seq

* cleanup

* added mask check in vocab

* fixed alternating rope, the hparams.rope_freq_base_train and hparams.rope_freq_base_train_swa were the same and i set them to correct values

* reuse variable

* removed repeat

* standard swa method can be used instead of a new enum being LLAMA_SWA_TYPE_LOCAL

* correct swa layer indexing, is supposed to be 0, 3, 6 ... instead of 1, 4, 7 ...

* more modular hparam setting

* replaced attn out norm with ffn_norm and cosine similarity between hf embds and llama.cpp embds went way up, from 0.05 to 0.24, replaced the cacheless kv with swa todo per the previous conversion

* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update convert_hf_to_gguf_update.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-vocab.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update convert_hf_to_gguf.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update convert_hf_to_gguf.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/tensor_mapping.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-graph.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-arch.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* removed redundant hparam set

* enums for model sizes

* conversion for modern-bert model supported rather than just granite-small

* Update src/llama-model.cpp

Co-authored-by: Gabe Goodhart <redacted>
* Update src/llama-model.cpp

Co-authored-by: Gabe Goodhart <redacted>
* fixed ordering of enum for freq_base_swa

* fixed where I added residual, now gives much much better embeddings~

* readded cacheless logic

* removing whitespace

* conversion now working for swa pattern - dense every n layers

* modern bert put into seperate src file

* removing whitespace

* fixed whitespace and newline errors in editorconfig job

* Update convert_hf_to_gguf.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* better naming convention, n_swa_pattern -> swa_period

* reusing sliding_window_pattern key rather than making new dense_every_n_layers key, and adding writing and reading support

* fixing pyright type-check fail

* Update convert_hf_to_gguf.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/gguf_writer.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-hparams.h

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model-saver.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/models/modern-bert.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/models/modern-bert.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/models/modern-bert.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update gguf-py/gguf/gguf_writer.py

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/models/modern-bert.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/models/modern-bert.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model-loader.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model-loader.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model-loader.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* added descriptions in llama-model

* fixed tensor mappings for conversion

* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* Update src/llama-model.cpp

Co-authored-by: Sigbjørn Skjæret <redacted>
* mapping name for size

* nits

* unused

---------

Co-authored-by: Sigbjørn Skjæret <redacted>
Co-authored-by: Gabe Goodhart <redacted>
4 weeks agogguf-py : do not align the data start offset (#18291)
compilade [Mon, 22 Dec 2025 19:25:16 +0000 (14:25 -0500)]
gguf-py : do not align the data start offset (#18291)

The safetensors format doesn't require alignment.

4 weeks agoggml-hexagon: gelu optimization (#18151)
Shouyu [Mon, 22 Dec 2025 18:56:52 +0000 (13:56 -0500)]
ggml-hexagon:  gelu optimization (#18151)

* feat: working gelu with src0 put on vtcm

* feat: gelu ping-pong for both in and out

* fix: fixu compile error

* break: distinguish dma ddr->vtcm and vtcm->ddr operation

* fix: fix dma queue size

* break: update dma api to either pop src or dst ptr

* fix: fix activation vtcm allocation issue for src1 when swapperd

* refactor: ping-pong gelu logic to avoid unnecessary if else

* dma: improved queue interface and prefetch handling

* gelu: fix N+2 block prefetch

---------

Co-authored-by: Max Krasnyansky <redacted>
4 weeks agogen-docs: automatically update markdown file (#18294)
Xuan-Son Nguyen [Mon, 22 Dec 2025 18:30:19 +0000 (19:30 +0100)]
gen-docs: automatically update markdown file (#18294)

* gen-docs: automatically update markdown file

* also strip whitespace

* do not add extra newline

* update TOC

4 weeks agollamafile: add rvv support for sgemm kernels (#18199)
Taimur Ahmad [Mon, 22 Dec 2025 18:20:23 +0000 (23:20 +0500)]
llamafile: add rvv support for sgemm kernels (#18199)

Co-authored-by: Rehan Qasim <redacted>
4 weeks agoopencl: unpack q4_0 for adreno in get_tensor (#18278)
lhez [Mon, 22 Dec 2025 18:19:01 +0000 (10:19 -0800)]
opencl: unpack q4_0 for adreno in get_tensor (#18278)

4 weeks agovulkan: Extend rope fusions to allow mrope (#18264)
Jeff Bolz [Mon, 22 Dec 2025 17:03:13 +0000 (11:03 -0600)]
vulkan: Extend rope fusions to allow mrope (#18264)

Extend the test-backend-ops tests as well.

4 weeks agoserver: prevent data race from HTTP threads (#18263)
Xuan-Son Nguyen [Mon, 22 Dec 2025 13:23:34 +0000 (14:23 +0100)]
server: prevent data race from HTTP threads (#18263)

* server: prevent data race from HTTP threads

* fix params

* fix default_generation_settings

* nits: make handle_completions_impl looks less strange

* stricter const

* fix GGML_ASSERT(idx < states.size())

* move index to be managed by server_response_reader

* http: make sure req & res lifecycle are tied together

* fix compile

* fix index handling buggy

* fix data race for lora endpoint

* nits: fix shadow variable

* nits: revert redundant changes

* nits: correct naming for json_webui_settings

4 weeks agoserver: fix data race in to_json_anthropic (#18283)
Xuan-Son Nguyen [Mon, 22 Dec 2025 12:21:43 +0000 (13:21 +0100)]
server: fix data race in to_json_anthropic (#18283)

4 weeks agorelease: update release workflow to store XCFramework as Zip file (#18284)
Mattt [Mon, 22 Dec 2025 12:11:46 +0000 (04:11 -0800)]
release: update release workflow to store XCFramework as Zip file (#18284)

* Update release workflow to store XCFramework as Zip file

* Add comments to document Zip file requirement for XCFramework

* Apply suggestions from code review

Co-authored-by: Sigbjørn Skjæret <redacted>
---------

Co-authored-by: Sigbjørn Skjæret <redacted>
4 weeks agoconvert: rework ftype heuristics (#18214)
Aaron Teo [Mon, 22 Dec 2025 12:03:49 +0000 (20:03 +0800)]
convert: rework ftype heuristics (#18214)

* convert: rework ftype heuristics

Signed-off-by: Aaron Teo <redacted>
convert: fix type-check

Signed-off-by: Aaron Teo <redacted>
convert: bring back heuristics comment

Signed-off-by: Aaron Teo <redacted>
* convert: revert to using first tensor

Signed-off-by: Aaron Teo <redacted>
* convert: rework heuristics logic

Signed-off-by: Aaron Teo <redacted>
* convert: rm redundant float32 check

Co-authored-by: Sigbjørn Skjæret <redacted>
---------

Signed-off-by: Aaron Teo <redacted>
Co-authored-by: Sigbjørn Skjæret <redacted>
4 weeks agoserver: (docs) remove mention about extra_args (#18262)
Xuan-Son Nguyen [Mon, 22 Dec 2025 11:22:01 +0000 (12:22 +0100)]
server: (docs) remove mention about extra_args (#18262)

4 weeks agotool/ex/tests: consistently free ctx, then model (#18168)
Johannes Gäßler [Mon, 22 Dec 2025 10:00:37 +0000 (11:00 +0100)]
tool/ex/tests: consistently free ctx, then model (#18168)

5 weeks agovulkan: Implement set_tensor_async and the event interfaces (#18047)
Jeff Bolz [Sun, 21 Dec 2025 20:52:09 +0000 (14:52 -0600)]
vulkan: Implement set_tensor_async and the event interfaces (#18047)

The goal is to enable the async loading code paths in
llama_model_loader::load_all_data, originally from #7896. This works and the
loads themselves are faster, but with host visible vidmem I think the cost of
allocating/mapping vidmem moves and becomes more expensive, and I don't see a
benefit by default. But with GGML_VK_DISABLE_HOST_VISIBLE_VIDMEM=1 I do see a
significant improvement in model loading time.

5 weeks agollama: fix RPC for -fit on (#18233)
Johannes Gäßler [Sun, 21 Dec 2025 18:33:08 +0000 (19:33 +0100)]
llama: fix RPC for -fit on (#18233)

5 weeks agomove copilot instructions to AGENTS.md (#18259)
Xuan-Son Nguyen [Sun, 21 Dec 2025 18:09:21 +0000 (19:09 +0100)]
move copilot instructions to AGENTS.md (#18259)

* move copilot --> agents.md

* agents: add disclose AI usage

* refine

5 weeks agovulkan: fix im2col overflowing maxworkgroupcount (#18180)
Jeff Bolz [Sun, 21 Dec 2025 09:32:58 +0000 (03:32 -0600)]
vulkan: fix im2col overflowing maxworkgroupcount (#18180)

5 weeks agovulkan/cuda: fix topk_moe with exp_probs_b (#18071)
Jeff Bolz [Sun, 21 Dec 2025 09:27:34 +0000 (03:27 -0600)]
vulkan/cuda: fix topk_moe with exp_probs_b (#18071)

I updated test_topk_moe to more closely match llm_graph_context::build_moe_ffn
and added coverage for exp_probs_b and some other missing combinations. This
exposed a bug in both CUDA and Vulkan backends where they were assuming the
input to argsort and the input to get_rows are the same. I'd like to optimize
this graph in another change, but for now just get it functional.

CUDA also had a bug where it got n_experts from the wrong place, leading to
GGML_ASSERT failures in some of the new tests.

5 weeks agovulkan: support GGML_UNARY_OP_XIELU (#18062)
Jeff Bolz [Sun, 21 Dec 2025 09:17:58 +0000 (03:17 -0600)]
vulkan: support GGML_UNARY_OP_XIELU (#18062)

5 weeks agovulkan: in graph_optimize, try to group ADD operations (#18060)
Jeff Bolz [Sun, 21 Dec 2025 09:05:08 +0000 (03:05 -0600)]
vulkan: in graph_optimize, try to group ADD operations (#18060)

I saw the adds not staying together in the new nemotron 3 nano model.

5 weeks agoVulkan: some improvement on mul_mat_iq2_xs (#18031)
lovedheart [Sun, 21 Dec 2025 08:59:52 +0000 (09:59 +0100)]
Vulkan: some improvement on mul_mat_iq2_xs (#18031)

* Some improvement on mul_mat_iq2_xs

Refactor calculations for db values and grid data to optimize performance and reduce redundancy.

* Fix trailing whitespace

5 weeks agodocs : fix links in parsing.md (#18245)
Daniel Bevenius [Sun, 21 Dec 2025 08:35:40 +0000 (09:35 +0100)]
docs : fix links in parsing.md (#18245)

This commit corrects the links in the parsing.md which currently result
in 404 errors.

5 weeks agocommon : reorganize includes to prioritize vendored deps (#18222)
Aldehir Rojas [Sun, 21 Dec 2025 03:43:21 +0000 (21:43 -0600)]
common : reorganize includes to prioritize vendored deps (#18222)

5 weeks agoserver: add auto-sleep after N seconds of idle (#18228)
Xuan-Son Nguyen [Sun, 21 Dec 2025 01:24:42 +0000 (02:24 +0100)]
server: add auto-sleep after N seconds of idle (#18228)

* implement sleeping at queue level

* implement server-context suspend

* add test

* add docs

* optimization: add fast path

* make sure to free llama_init

* nits

* fix use-after-free

* allow /models to be accessed during sleeping, fix use-after-free

* don't allow accessing /models during sleep, it is not thread-safe

* fix data race on accessing props and model_meta

* small clean up

* trailing whitespace

* rm outdated comments

5 weeks agotests: Avoid floating point precision false positives in SUM (#17471)
Jeff Bolz [Sat, 20 Dec 2025 19:46:46 +0000 (13:46 -0600)]
tests: Avoid floating point precision false positives in SUM (#17471)

* tests: Avoid floating point precision false positives in SUM

* also apply to test_mean

5 weeks agotest-backend-ops: improve msvc build time (#18209)
Jeff Bolz [Sat, 20 Dec 2025 19:45:45 +0000 (13:45 -0600)]
test-backend-ops: improve msvc build time (#18209)

5 weeks agoAdded comments explaining thread block size selection logic based on row count and...
Aadeshveer Singh [Sat, 20 Dec 2025 11:28:57 +0000 (16:58 +0530)]
Added comments explaining thread block size selection logic based on row count and column size, derived from historical commit context (#18212)

5 weeks agoserver : [easy] fix per round speculative decode logging (#18211)
Oleksandr Kuvshynov [Sat, 20 Dec 2025 09:57:40 +0000 (04:57 -0500)]
server : [easy] fix per round speculative decode logging (#18211)

Currently we always log 0, as we clear slot.drafted before.

To reproduce:
Run llama-server with devstral-2 as main model and devstral-2-small as
md, and verbose logging:

```
% ./build/bin/llama-server -v  \
  -m ~/llms/Devstral-2-123B-Instruct-2512-UD-Q6_K_XL-00001-of-00003.gguf \
  -md ~/llms/Devstral-Small-2-24B-Instruct-2512-UD-Q2_K_XL.gguf \
  -c 8192 2> /tmp/llama.cpp.debug

Check the log:

slot update_slots: id  3 | task 0 | accepted 11/0 draft tokens, new
n_tokens = 741
slot update_slots: id  3 | task 0 | accepted 4/0 draft tokens, new
n_tokens = 746
slot update_slots: id  3 | task 0 | accepted 16/0 draft tokens, new
n_tokens = 763
slot update_slots: id  3 | task 0 | accepted 11/0 draft tokens, new
n_tokens = 775
slot update_slots: id  3 | task 0 | accepted 2/0 draft tokens, new
n_tokens = 778
slot update_slots: id  3 | task 0 | accepted 4/0 draft tokens, new
n_tokens = 783
slot update_slots: id  3 | task 0 | accepted 8/0 draft tokens, new
n_tokens = 792
slot update_slots: id  3 | task 0 | accepted 2/0 draft tokens, new
n_tokens = 795
slot update_slots: id  3 | task 0 | accepted 1/0 draft tokens, new
n_tokens = 797
slot update_slots: id  3 | task 0 | accepted 1/0 draft tokens, new
n_tokens = 799
slot update_slots: id  3 | task 0 | accepted 0/0 draft tokens, new
n_tokens = 800
slot update_slots: id  3 | task 0 | accepted 2/0 draft tokens, new
n_tokens = 803
slot update_slots: id  3 | task 0 | accepted 1/0 draft tokens, new
n_tokens = 805
slot update_slots: id  3 | task 0 | accepted 6/0 draft tokens, new
n_tokens = 812
slot update_slots: id  3 | task 0 | accepted 3/0 draft tokens, new
n_tokens = 816
```

After the fix, get correct per round logging:

```
slot update_slots: id  3 | task 0 | accepted 7/8 draft tokens, new
n_tokens = 654
slot update_slots: id  3 | task 0 | accepted 1/2 draft tokens, new
n_tokens = 656
slot update_slots: id  3 | task 0 | accepted 2/16 draft tokens, new
n_tokens = 659
slot update_slots: id  3 | task 0 | accepted 1/16 draft tokens, new
n_tokens = 661
slot update_slots: id  3 | task 0 | accepted 2/16 draft tokens, new
n_tokens = 664
slot update_slots: id  3 | task 0 | accepted 16/16 draft tokens, new
n_tokens = 681
slot update_slots: id  3 | task 0 | accepted 16/16 draft tokens, new
n_tokens = 698
slot update_slots: id  3 | task 0 | accepted 3/4 draft tokens, new
n_tokens = 702
slot update_slots: id  3 | task 0 | accepted 5/12 draft tokens, new
n_tokens = 708
slot update_slots: id  3 | task 0 | accepted 16/16 draft tokens, new
n_tokens = 725
slot update_slots: id  3 | task 0 | accepted 1/1 draft tokens, new
n_tokens = 727
slot update_slots: id  3 | task 0 | accepted 8/16 draft tokens, new
n_tokens = 736
```

5 weeks agoserver: support load model on startup, support preset-only options (#18206)
Xuan-Son Nguyen [Sat, 20 Dec 2025 08:25:27 +0000 (09:25 +0100)]
server: support load model on startup, support preset-only options (#18206)

* server: support autoload model, support preset-only options

* add docs

* load-on-startup

* fix

* Update common/arg.cpp

Co-authored-by: Pascal <redacted>
---------

Co-authored-by: Pascal <redacted>
5 weeks agoci : remove non-windows zip artifacts (#18201)
Sigbjørn Skjæret [Fri, 19 Dec 2025 21:29:46 +0000 (22:29 +0100)]
ci : remove non-windows zip artifacts (#18201)

* remove non-windows zip artifacts

* add cuda dll links

5 weeks agoci : only save ccache on master (#18207)
Sigbjørn Skjæret [Fri, 19 Dec 2025 21:29:37 +0000 (22:29 +0100)]
ci : only save ccache on master (#18207)

5 weeks agoggml-hexagon: Implement true Q8_0 quantization on Hexagon NPU for more accurate mixed...
Alfred [Fri, 19 Dec 2025 17:42:28 +0000 (12:42 -0500)]
ggml-hexagon: Implement true Q8_0 quantization on Hexagon NPU for more accurate mixed-precision matmul operations (#17977)

* feat: implement real Q8_0

* feat: adding cmake option for configuring FP32 quantize group size

* typo: set() shall be used

---------

Co-authored-by: ngdxzy <redacted>
5 weeks agoarg: fix order to use short form before long form (#18196)
Pascal [Fri, 19 Dec 2025 17:01:56 +0000 (18:01 +0100)]
arg: fix order to use short form before long form (#18196)

* arg: fix order to use short form before long form

* arg: update doc

* arg: update test-arg-parser

* arg: address review feedback from ngxson

simplified to check first.length() <= last.length() only
fixed: --sampler-seq, --rerank, --draft ordering
note: middle positions in 3+ arg sets are not verified

* arg: update doc

5 weeks agollama : Changing off_t to size_t for Windows (#18204)
Julius Tischbein [Fri, 19 Dec 2025 14:42:46 +0000 (15:42 +0100)]
llama : Changing off_t to size_t for Windows (#18204)

5 weeks agoserver: friendlier error msg when ctx < input (#18174)
Aman Gupta [Fri, 19 Dec 2025 11:10:00 +0000 (19:10 +0800)]
server: friendlier error msg when ctx < input (#18174)

* llama-server: friendlier error msg when ctx < input

This PR adds formatted strings to the server's send_error function

* llama-server: use string_format inline

* fix test

5 weeks agopresets: refactor, allow cascade presets from different sources, add global section...
Xuan-Son Nguyen [Fri, 19 Dec 2025 11:08:20 +0000 (12:08 +0100)]
presets: refactor, allow cascade presets from different sources, add global section (#18169)

* presets: refactor, allow cascade presets from different sources

* update docs

* fix neg arg handling

* fix empty mmproj

* also filter out server-controlled args before to_ini()

* skip loading custom_models if not specified

* fix unset_reserved_args

* fix crash on windows

5 weeks agowebui: Add editing attachments in user messages (#18147)
Aleksander Grygier [Fri, 19 Dec 2025 10:14:07 +0000 (11:14 +0100)]
webui: Add editing attachments in user messages (#18147)

* feat: Enable editing attachments in user messages

* feat: Improvements for data handling & UI

* docs: Update Architecture diagrams

* chore: update webui build output

* refactor: Exports

* chore: update webui build output

* feat: Add handling paste for Chat Message Edit Form

* chore: update webui build output

* refactor: Cleanup

* chore: update webui build output

5 weeks agomodel-conversion : add verbose flag in run-org-model.py (#18194)
Daniel Bevenius [Fri, 19 Dec 2025 07:43:16 +0000 (08:43 +0100)]
model-conversion : add verbose flag in run-org-model.py (#18194)

This commit adds a --verbose flag to the run-org-model.py script to
enable or disable detailed debug output, such as input and output
tensors for each layer. Debug utilities (summarize, debug_hook,
setup_rope_debug) have been moved to utils/common.py.

The motivation for this is that the detailed debug output can be useful
for diagnosing issues with model conversion or execution, but it can
also produce a large amount of output that may not always be needed.

The script will also be further cleaned/refactored in follow-up commits.

5 weeks agoandroid: fix missing screenshots for Android.md (#18156)
Naco Siren [Fri, 19 Dec 2025 07:32:04 +0000 (23:32 -0800)]
android: fix missing screenshots for Android.md (#18156)

* Android basic sample app layout polish

* Add missing screenshots and polish android README doc

* Replace file blobs with URLs served by GitHub pages service.

5 weeks agovulkan: Add perf logger mode with concurrency (#17944)
Jeff Bolz [Fri, 19 Dec 2025 05:36:46 +0000 (23:36 -0600)]
vulkan: Add perf logger mode with concurrency (#17944)

This implements a variation of the perf logger where rather than timing each
operation individually with effectively a barrier in between, we put the
timing boundaries where we already synchronize and time the groups of work
that normally overlap. This can be useful to help understand whether
individual operations need to be optimized, or if the group is already running
efficiently.

GGML_VK_PERF_LOGGER_CONCURRENT=1 enables the new mode (when
GGML_VK_PERF_LOGGER is also set).

GGML_VK_SYNC_LOGGER=1 replaces the ENABLE_SYNC_LOGGING compile time switch.

5 weeks agomodel : add ASR support for LFM2-Audio-1.5B (conformer) (#18106)
Xuan-Son Nguyen [Thu, 18 Dec 2025 23:18:01 +0000 (00:18 +0100)]
model : add ASR support for LFM2-Audio-1.5B (conformer) (#18106)

* ASR with LFM2-Audio-1.5B

* Set rope_theta

* Fix comment

* Remove rope_theta setting

* Address PR feedback

* rename functions to conformer

* remove some redundant ggml_cont

* fix missing tensor

* add prefix "a." for conv tensors

* remove redundant reshape

* clean up

* add test model

---------

Co-authored-by: Tarek Dakhran <redacted>
5 weeks agowebui: display prompt processing stats (#18146)
Pascal [Thu, 18 Dec 2025 16:55:03 +0000 (17:55 +0100)]
webui: display prompt processing stats (#18146)

* webui: display prompt processing stats

* feat: Improve UI of Chat Message Statistics

* chore: update webui build output

* refactor: Post-review improvements

* chore: update webui build output

---------

Co-authored-by: Aleksander Grygier <redacted>
5 weeks agoggml-cpu: extend support for RVV floating-point kernels (#17318)
Taimur Ahmad [Thu, 18 Dec 2025 14:02:09 +0000 (19:02 +0500)]
ggml-cpu: extend support for RVV floating-point kernels (#17318)

* cmake: add BF16 RVV flag for ggml-cpu

* ggml-cpu: add floating-point conversion kernels

* ggml: add floating-point kernels

Co-authored-by: Rehan Qasim <redacted>
* ggml-cpu: fix lmul in vec_dot_bf16

* ggml-cpu: change redsum to lmul 4, fix leftover

---------

Co-authored-by: Rehan Qasim <redacted>
5 weeks agoarg: fix ASAN error on sampler_type_names empty (#18167)
Xuan-Son Nguyen [Thu, 18 Dec 2025 13:30:32 +0000 (14:30 +0100)]
arg: fix ASAN error on sampler_type_names empty (#18167)

5 weeks agogguf-py : use copy-on-write mode for localtensor (#18162)
Sigbjørn Skjæret [Thu, 18 Dec 2025 12:45:38 +0000 (13:45 +0100)]
gguf-py : use copy-on-write mode for localtensor (#18162)

5 weeks agoremove i_major_dual (#18157)
yulo [Thu, 18 Dec 2025 11:50:56 +0000 (19:50 +0800)]
remove i_major_dual (#18157)

Co-authored-by: zhang hui <redacted>
5 weeks agowebui: Fix selecting generated output issues during active streaming (#18091)
Aleksander Grygier [Thu, 18 Dec 2025 10:13:52 +0000 (11:13 +0100)]
webui: Fix selecting generated output issues during active streaming (#18091)

* draft: incremental markdown rendering with stable blocks

* refactor: Logic improvements

* refactor: DRY Markdown post-processing logic

* refactor: ID generation improvements

* fix: Remove runes

* refactor: Clean up & add JSDocs

* chore: update webui static output

* fix: Add tick to prevent race conditions for rendering Markdown blocks

Suggestion from @ServeurpersoCom

Co-authored-by: Pascal <redacted>
* chore: Run `npm audit fix`

* chore: update webui static output

* feat: Improve performance using global counter & id instead of UUID

* refactor: Enhance Markdown rendering with link and code features

* chore: update webui static output

* fix: Code block content extraction

* chore: update webui static output

* chore: update webui static output

---------

Co-authored-by: Pascal <redacted>
5 weeks agowebui: fix chat screen shadow width (#18010)
Kim S. [Thu, 18 Dec 2025 10:08:42 +0000 (11:08 +0100)]
webui: fix chat screen shadow width (#18010)

* webui: fix chat screen shadow width

* chore: add index.html.gz

5 weeks agollama: offload output layer to GPU first (#18148)
Johannes Gäßler [Thu, 18 Dec 2025 07:12:18 +0000 (08:12 +0100)]
llama: offload output layer to GPU first (#18148)

5 weeks agoconvert : sort and use file parts from model index if present (#18043)
Sigbjørn Skjæret [Thu, 18 Dec 2025 06:54:54 +0000 (07:54 +0100)]
convert : sort and use file parts from model index if present (#18043)

* keep file part order from model index

* treat index as authoritative

* sort index parts

5 weeks agollama : Async DirectIO model loading on Linux (#18012)
Julius Tischbein [Thu, 18 Dec 2025 06:27:19 +0000 (07:27 +0100)]
llama : Async DirectIO model loading on Linux (#18012)

* Uncached model read

* Removing additional --mmap arg

* Removing trailing whitespaces

* Adding fallback when O_DIRECT is not supported

* Remove branching in llama-model-loader.cpp and reduce code duplications in llama-mmap.cpp

* Adding maybe unused keyword for Mac and Windows.

* File seek aligned

* Removing all branches for direct_io in llama-model-loader.cpp

* Always use alignment from llama_file

* use_mmap=true

5 weeks agoggml-hexagon: swiglu_oai operation (#18114)
Shouyu [Wed, 17 Dec 2025 21:38:21 +0000 (16:38 -0500)]
ggml-hexagon: swiglu_oai operation  (#18114)

* snapshot: debug ggml-hexagon swiglu-oai

* fix: fix hvx_min_scalar_f32

* feat: working swiglu-oai

* chore: fix formating isue

5 weeks agoconvert : force patch_merger tensors to f16/f32 (#18124)
Sigbjørn Skjæret [Wed, 17 Dec 2025 21:15:53 +0000 (22:15 +0100)]
convert : force patch_merger tensors to f16/f32 (#18124)

5 weeks agoserver: (webui) add --webui-config (#18028)
Pascal [Wed, 17 Dec 2025 20:45:45 +0000 (21:45 +0100)]
server: (webui) add --webui-config (#18028)

* server/webui: add server-side WebUI config support

Add CLI arguments --webui-config (inline JSON) and --webui-config-file
(file path) to configure WebUI default settings from server side.

Backend changes:
- Parse JSON once in server_context::load_model() for performance
- Cache parsed config in webui_settings member (zero overhead on /props)
- Add proper error handling in router mode with try/catch
- Expose webui_settings in /props endpoint for both router and child modes

Frontend changes:
- Add 14 configurable WebUI settings via parameter sync
- Add tests for webui settings extraction
- Fix subpath support with base path in API calls

Addresses feedback from @ngxson and @ggerganov

* server: address review feedback from ngxson

* server: regenerate README with llama-gen-docs

5 weeks agoserver: (router) disable SSL on child process (#18141)
Xuan-Son Nguyen [Wed, 17 Dec 2025 20:39:08 +0000 (21:39 +0100)]
server: (router) disable SSL on child process (#18141)

5 weeks agollama-fit-params: fix memory print (#18136)
Johannes Gäßler [Wed, 17 Dec 2025 20:10:03 +0000 (21:10 +0100)]
llama-fit-params: fix memory print (#18136)

5 weeks agowebui: fix chat header width when sidebar is closed (#17981)
Kim S. [Wed, 17 Dec 2025 19:05:45 +0000 (20:05 +0100)]
webui: fix chat header width when sidebar is closed (#17981)

* webui: fix chat header width when sidebar is closed

* chore: add index.html.gz

5 weeks agoggml-hexagon: gelu operation (#17921)
Shouyu [Wed, 17 Dec 2025 18:39:32 +0000 (13:39 -0500)]
ggml-hexagon: gelu operation  (#17921)

* feat: inital support for gelu using sigmoid approximation

* snapshot: faster gelu using polynomial approximation

* test: disable l2-block prefetch in polynomail approximation

* Revert "test: disable l2-block prefetch in polynomail approximation"

This reverts commit 72339994d45b2bed887e79994403c378d90b62b5.

* Revert "snapshot: faster gelu using polynomial approximation"

This reverts commit 2a787a61d11f9e63e5943a2e6d134b2f0c402ace.

* debug: temporarily disable unnecessary log message for debug purpose

* Feat: optiized unaligned sigmoid_f32

* Feat: larger l2prefetch block

* feat: apply unaligned-load optimization on mul and mul_scalar

* Revert "debug: temporarily disable unnecessary log message for debug purpose"

This reverts commit 84f2f23aa9f17e2fa826db969cd825d0ab192995.

* refactor: cleanup commented unused code

* chore: reformat code with clang-formatter to pass cli test

* Revert "chore: reformat code with clang-formatter to pass cli test"

This reverts commit 952877ec24732b12010c7fa7ed3fc8de4b74e718.

* fix: fix loop overflow

* chore: fix formating ci error

5 weeks agocommon : restore grammar-based rejection sampling (#18137)
Georgi Gerganov [Wed, 17 Dec 2025 17:46:00 +0000 (19:46 +0200)]
common : restore grammar-based rejection sampling (#18137)

* common : restart grammar-based rejection sampling

* sampling : allow null samplers

5 weeks agocommon: clarify instructions for bug reports (#18134)
Johannes Gäßler [Wed, 17 Dec 2025 17:44:13 +0000 (18:44 +0100)]
common: clarify instructions for bug reports (#18134)

5 weeks agomodel: fix GLM-ASR-Nano-2512 load error (#18130) (#18142)
HonestQiao [Wed, 17 Dec 2025 15:34:35 +0000 (23:34 +0800)]
model: fix GLM-ASR-Nano-2512 load error (#18130) (#18142)

5 weeks agoserver: (router) allow child process to report status via stdout (#18110)
Xuan-Son Nguyen [Wed, 17 Dec 2025 13:54:11 +0000 (14:54 +0100)]
server: (router) allow child process to report status via stdout (#18110)

* server: (router) allow child process to report status via stdout

* apply suggestions

5 weeks agoExtend run-org-model.py, add (a) batching (b) loading prompt from file (c) multimodal...
Piotr Wilkin (ilintar) [Wed, 17 Dec 2025 13:21:51 +0000 (14:21 +0100)]
Extend run-org-model.py, add (a) batching (b) loading prompt from file (c) multimodal capacity (#18034)

5 weeks agoGithub: ask for -v logs for params_fit [no ci] (#18128)
Johannes Gäßler [Wed, 17 Dec 2025 12:46:48 +0000 (13:46 +0100)]
Github: ask for -v logs for params_fit [no ci] (#18128)

5 weeks agoggml-cpu: ARM64: repack version of q8_0 (dotprod and i8mm) (#18096)
Alberto Cabrera Pérez [Wed, 17 Dec 2025 11:39:13 +0000 (11:39 +0000)]
ggml-cpu: ARM64: repack version of q8_0 (dotprod and i8mm) (#18096)

* wip: skeleton for q8_0 repack

* q8_0 repack GEMV implementations

* GEMM implementations

* Formatting

* Fixed format consistency of repack gemm and gemv declarations

* gemv and gemm generic location consistent with declarations

* Removed non-correct unused variables statements

* Cleanup, consistent style

* Missing generic fallbacks for x86 and powerpc

5 weeks agomodel: fix LFM2_MOE missing tensors (#18132)
Tarek Dakhran [Wed, 17 Dec 2025 11:17:11 +0000 (12:17 +0100)]
model: fix LFM2_MOE missing tensors (#18132)

5 weeks agoci : clean up webui jobs (#18116)
Sigbjørn Skjæret [Wed, 17 Dec 2025 09:45:40 +0000 (10:45 +0100)]
ci : clean up webui jobs (#18116)

* clean up webui jobs

* refined step control

* forgot dependencies

* apparently always() is needed

5 weeks agocommon: fix --override-kv to support comma-separated values (#18056)
Pascal [Wed, 17 Dec 2025 09:36:23 +0000 (10:36 +0100)]
common: fix --override-kv to support comma-separated values (#18056)

* common: fix --override-kv to support comma-separated values

* Update common/arg.cpp

Co-authored-by: Xuan-Son Nguyen <redacted>
* common: deprecate repeated arguments, suggest comma-separated values

* common: add comma escape support for --override-kv

* common: optimize duplicate detection with insert().second

Co-authored-by: personalmountains <redacted>
* common: migrate all repeated args to comma-separated syntax

---------

Co-authored-by: Xuan-Son Nguyen <redacted>
Co-authored-by: personalmountains <redacted>
5 weeks agoHIP: Refactor mma for RDNA and CDNA (#17990)
yulo [Wed, 17 Dec 2025 08:34:54 +0000 (16:34 +0800)]
HIP: Refactor mma for RDNA and CDNA (#17990)

* mma.cuh for rdna4

* mma for rdna3

* mmq for rdna4

* mmq for rdna3

* align i-major and j-major

* cdna

* fix cuda error

* add missing tile of mfma

* fix j-major wrong ne on CDNA

* fix gramma and empty spaces

---------

Co-authored-by: zhang hui <redacted>
5 weeks agollama.android : Rewrite Android binding (w/o cpu_features dep) (#17413) upstream/0.0.7446
Naco Siren [Wed, 17 Dec 2025 08:14:47 +0000 (00:14 -0800)]
llama.android : Rewrite Android binding (w/o cpu_features dep) (#17413)

* UI: implement basic UI components

* util: implement performance monitor; wrap it with a viewmodel

* util: implement user preferences utility

* UI: implement core flow's screens

* UI: add a new MainActivity; update manifest

* [WIP] DI: implement simple local vm factory provider

* UI: disable triggering drawer via gesture; enable alert dialog on back navigation inside conversation and benchmark

* UI: allow drawer's gesture control only on Home and Settings screens; enable alert dialog on back navigation inside conversation and benchmark

* UI: split a nested parent settings screen into separate child settings screens

* UI: polish system prompt setup UI

* Deps: bump Kotlin plugin; introduce KSP; apply in :app subproject

* DB: setup Room database

* data: introduce repo for System Prompt; flow data from Room to VM

* bugfix: properly handle user's quitting conversation screen while tokens in generation

* UI: rename `ModeSelection` to `ModelLoading` for better clarity

* UI: update app name to be more Arm

* UI: polish conversation screen

* data: code polish

* UI: code polish

* bugfix: handle user quitting on model loading

* UI: locks user in alert dialog when model is unloading

* vm: replace token metrics stubs with actual implementation

* UI: refactor top app bars

* nit: combine temperatureMetrics and useFahrenheit

* DI: introduce Hilt plugin + processor + lib dependencies

* DI: make app Hilt injectable

* DI: make viewmodels Hilt injectable

* DI: replace manual DI with Hilt DI

* UI: optimize AppContent's composing

* bugfix: wait for model to load before navigating to benchmark screen; use NavigationActions instead of raw navController

* UI: navigation with more natural animated transitions

* DI: Optimize AppModule

* Feature: Introduce ModelRepository and ModelsManagementViewModel; update AppModule

* UI: polish UI for ModelsManagementScreen; inject ModelsManagementVieModel

* DI: abstract the protocol of SystemPromptRepository; update AppModule

* data: [WIP] prepare for ModelRepository refactor & impl

* data: introduce Model entity and DAO; update DI module

* UI: replace Models Management screen's stubbing with instrumentation

* UI: polish sort order menu

* data: import local model with file picker

* bugfix: use List instead of Collection for ModelDao's deletion

* data: add a util file for extracting file name & size and model metadata

* UI: enrich ModelManagementState; extract filename to show correct importing UI

* UI: implement multiple models deletion; update Models Management screen

* UI: handle back navigation when user is in multi-selection mode

* util: extract file size formatting into ModelUtils

* UI: add a confirmation step when user picks a file; refactor model import overlay into AlertDialog

* UI: extract a shared ModelCard component

* UI: replace model selection screen's data stubbing; add empty view

* nit: tidy SystemPromptViewModel

* Util: split FileUtils from ModelUtils; extract copy methods into FileUtils

* data: pass through getModelById from ModelDao into ModelRepository

* core: extract conversation and benchmark logics into InferenceManager; add logs and missing state updates in stub InferenceEngine

* vm: split mono MainViewModel into separate individual ViewModels

* vm: merge SystemPromptViewModel into ModelLoadingViewModel

* core: break down InferenceManager due to Interface Segregation Principle

* UI: show model card in Model Loading screen

* UI: show model card in Conversation screen

* UI: unify Model Card components

* core: swap in LLamaAndroid and mark stub engine for testing only

* data: allow canceling the ongoing model import

* UI: update UI ongoing model import's cancellation

* LLama: update engine state after handling the cancellation of sendUserPrompt

* VM: handle the cancellation of ongoing token generation

* LLama: refactor loadModel by splitting the system prompt setting into a separate method

* feature: check for available space before copying local model

* UI: centralize the AppScaffold and modularize its configs

* UI: refactor BottomBarConfig.ModelsManagement APIs

* UI: combine TopBarConfig and BottomBarConfig into each route's ScaffoldConfig

* UI: replace ugly optional as casts in AppScaffold with extension functions

* UI: fix the typo `totalGb` in `StorageMetrics`

* UI: remove code duplication in sort menu

* LLama: add ModelUnloadingState to engine State; add missing state checks in stub engine; fix instrumentation engine's error messages

* UI: refactor back handling by removing centralized BackHandlerSetup and UnloadModelConfirmationDialog from AppContent

* UI: implement BenchmarkScreen's individual back handling

* LLama: add a new Initializing state; ; add two extension properties; rename LibraryLoaded state to Initialized

* UI: Introduce an abstract ViewModel to handle additional model unloading logics

* UI: expose a single facade ModelUnloadDialogHandler; move UnloadModelState into ModelUnloadingViewModel.kt

* UI: migrate ModelLoadingScreen onto ModelLoadingViewModel; update & refine ModelLoadingScreen

* UI: migrate ConversationViewModel onto ModelLoadingViewModel; update & refine ConversationScreen

* nit: extract app name into a constant value; remove unused onBackPressed callbacks

* UI: update AppContent to pass in correct navigation callbacks

* nit: polish ModelLoadingScreen UI

* core: throw Exception instead of returning null if model fails to load

* navigation: sink model loading state management from AppContent down into ModelLoadingScreen; pass ModelLoadingMetrics to Benchmark and Conversation screens

* gguf: add GGUF metadata data holder and its corresponding extractor implementation

* DB: introduce Kotlin serialization extension's library and plugin; add Room runtime library

* GGUF: make GgufMetadata serializable in order to be compatible with Room

* nit: refactor data.local package structure

* nit: rename lastUsed field to dateLastUsed; add dateAdded field

* UI: refactor ModelCard UI to show GGUF metadata

* UI: update ModelSelectionScreen with a preselect mechanism

* UI: polish model card

* nit: allow deselect model on Model Selection screen

* nit: revert accidental committing of debug code

* UI: polish ModelLoading screen

* util: extract formatting helper functions from FileUtils into a new FormatUtils

* UI: polish model cards on Benchmark and Conversation screens to show model loading metrics

* UI: show a Snack bar to warn user that system prompt is not always supported

* UI: handle back press on Model Selection screen

* UI: finally support theme modes; remove hardcoded color schemes, default to dynamic color scheme implementation

* feature: support searching on Model Selection screen

* nit: move scaffold related UI components into a separate package

* UI: extract InfoView out into a separate file for reusability

* data: move Model related actions (query, filter, sort) into ModelInfo file

* UI: animate FAB on model preselection states

* feature: support filtering in Model Management screen

* ui: show empty models info in Model Management screen

* ui: add filter off icon to "Clear filters" menu item

* [WIP] ui: polish Benchmark screen; implement its bottom app bar

* ui: polish Benchmark screen; implement its bottom app bar's rerun and share

* nit: disable mode selection's radio buttons when loading model

* feature: implement Conversation screen's bottom app bar

* pkg: restructure BottomAppBars into separate files in a child package

* pkg: restructure TopBarApps into separate files in a child package

* pkg: restructure system metrics into a separate file

* UI: polish Conversation screen

* data: update system prompt presets

* UI: allow hide or show model card on Conversation & Benchmark screens; fix message arrangement

* data: update & enhance system prompt presets

* deps: introduce Retrofit2

* data: implement HuggingFace data model, data source with Retrofit API

* data: update Model data repository to support fetching HuggingFace models

* [WIP] UI: replace the HuggingFace stub in Model Management screen with actual API call

* UI: map language codes into country Emojis

* ui: add "clear results" action to Benchmark screen

* nit: print current pp & tg in llama-bench

* UI: disable landscape mode; prevent duplicated benchmark running

* llama: migrate C/CXX flags into CMakeList

* [WIP] llama: ABI split builds five .so artifacts.

However, all .so are performing on SVE level

* [WIP] llama: ABI split where five tiers are built sequentially.

* [WIP] llama: disable OpenMP in ABI split since most SoCs are big.LITTLE

* [WIP] llama: enable KleidiAI and disable tier 4 due to `+sve+sve2` bug caused by `ggml_add_cpu_backend_variant_impl` as explained below

```CMake
if (NOT SME_ENABLED MATCHES -1)
...
    set(PRIVATE_ARCH_FLAGS "-fno-tree-vectorize;${PRIVATE_ARCH_FLAGS}+sve+sve2")
...
```

* core: add Google's cpu_features as a submodule

* core: implement cpu_detector native lib

* core: swap out hardcoded LlamaAndroid library loading

* core: add back OpenMP due to huge perf loss on TG128

* misc: reorg the pkg structure

* misc: rename LlamaAndroid related class to InferenceEngine prefixes

* [WIP] lib: move GgufMetadata into the lib submodule

* lib: expose GgufMetadataReader as interface only

* lib: replace the naive & plain SharedPreferences with DataStore implementation

* lib: hide the internal implementations, only expose a facade and interfaces

* lib: expose Arm features

* di: add a stub TierDetection; provide both actual impl and stub in AppModule

* UI: add visualizer UI for Arm features

* misc: UI polish

* lib: refactored InferenceEngineLoader; added a `NONE` Llama Tier

* UI: support `NONE` Llama Tier in general settings

* lib: optimize engine loader; always perform a fresh detection when cache is null

* remote: add HuggingFaceModelDetails data class

* remote: refine HuggingFaceModel data class

* nit: remove `trendingScore` field from HuggingFace model entities, weird...

* remote: refactor HuggingFaceApiService; implement download feature in HuggingFaceRemoteDataSource

* remote: fix the incorrect parse of HuggingFace's inconsistent & weird JSON response

* UI: scaffold Models Management screen and view model

* UI: implement a dialog UI to show fetched HuggingFace models.

* UI: use a broadcast receiver to listen for download complete events and show local import dialog.

* data: handle network exceptions elegantly

* pkg: restructure `data`'s packages

* data: extract local file info, copy and cleanup logics into LocalFileDataSource

* nit: minor UI patch; add missing comments

* bugfix: tapping "Home" in navigation drawer should simply close it without any navigation action.

* UI: improve autoscroll during token generation

* lib: tested on JFrog Artifactory for Maven publishing

* UI: show RAM warning if model too large

* UI: polish model management screen's error dialog

* util: add more items into the mapping table of ISO 639-1 language code to ISO 3166-1 country code

* llm: properly propagate error to UI upon failing to load selected model

* UI: avoid duplicated calculation of token metrics

* lib: read & validate the magic number from the picked source file before executing the import

* UI: add "Learn More" hyperlinks to Error dialog upon model import failures

* lib: refactor the GgufMetadataReader to take  InputStream instead of absolute path as argument

* lib: fix the `SIMD` typo in Tier description

* core: verify model file path is readable

* lib: add UnsupportedArchitectureException for triaged error message

* util: split FormatUtils into multiple utils for better readability

* UI: change benchmark screen from raw markdown to table view

* bugfix: reset preselection upon running the preselected model

* misc: linter issue

* bugfix: fix the malfunctioning monitoring switch

* UI: update Arm features indicator; fix the broken hyperlinks

* UI: add quick action buttons to benchmark screen's result card

* UI: hide share fab after clearing all benchmark results

* UI: fix the model unload dialog message; elevate the model card and hide it by default on Conversation screen;

* UI: hide the stubbing actions in Conversation screen

* UI: add show/hide stats control to conversation screen's assistant message bubble; fix placeholder

* UI: add a info button to explain token metrics

* misc: remove the redundant `Companion` added due to refactoring

* UI: show corresponding system metrics detailed info upon tapping RAM / storage / temperature indicator

* UI: add info button to System Prompt switch; expand the model card by default

* UI: disable tag & language chips; add section headers to explain what they are

* misc: replace top bar indicator's spacer with padding

* UI: merge the Model Selection and Model Management into a unified Models screen

* UI: split the ModelsManagementViewModel from a unified ModelsViewModel due to huge complexity

* UI: add model loading in progress view; polish the empty model info view

* UI: polish the bottom bars and info view when no models found; show loading in progress while fetching models

* build: [BREAKING] bump the versions of libraries and plugins

* UI: fix the breaking build

* UI: add Tooltip on Import FAB for user onboarding

* UI: adds AppPreferences to track user onboarding status

* UI: tracks user's first success on importing a model

* data: add hand crafted rules to filter the models fetched from HuggingFace API

* UI: update app name & about; polish top bars' indicators & buttons

* UI: polish Hugging Face download dialog UI

* UX: implement onboarding tooltips for model import and onboarding

* misc: use sentence case for CTA button labels

* [WIP] UI: add Arm color palette from Philip.Watson3

* UI: address Rojin's UX feedbacks

* UI: address Rojin's UX feedbacks - part 2

* UI: update Arm color palette from Philip.Watson3

* data: make sure fetch preselected models in the same order of their IDs

* UI: fix UI issues in the generic settings screen and navigation drawer

* nit: address Rojin's feedbacks on model import message again

* nit: append `®` to all `Arm` labels

* UI: extract a reusable InfoAlertDialog

* core: support GGML_CPU_ALL_VARIANTS on Android!

* core: restructure Kleidi-Llama library

* core: organizing cmake arguments

* data: sort preselected models according to device's available RAM

* app: update adaptive + themed + legacy icons and app name

* UI: fix the font size auto scaling for ArmFeaturesVisualizer

* core: further improve the performance on native methods

* UI: minor color palette changes; emphasize the bottom bar FABs; fix Settings Screen menu item label

* UI: make more room for assistant message bubble's width

* UI: better usage of tertiary colors to highlight model cards but not for warnings

* UI: fix the layout issue on large font sizes

* lib: support x86-64 by dynamically set Arm related definitions

* lib: replace the factory pattern for  deprecated tiered lib loading with single instance pattern

* llama: update the library name in JNI and CMake project

* llama: update the library's package name and namespace

* llama: update the app's package name and namespace

* app: bump ksp version

* app: remove deprecated SystemUIController from accompanist by migrating to EdgeToEdge

* app: extract AppContent from MainActivity to a separate file in ui package

* lib: add File version for GGUF Magic number verification

* lib: perform engine state check inclusively instead of exclusively

* lib: change `LlamaTier` to `ArmCpuTier`

* lib: remove kleidi-llama related namings

* cleanup: remove Arm AI Chat/Playground app source code; replace with the basic sample app from https://github.com/hanyin-arm/Arm-AI-Chat-Sample

Note: the full Google Play version of AI Chat app will be open will be open sourced in another repo soon, therefore didn't go through the trouble of pruning the history using `git filter-repo` here.

* [WIP] doc: update main and Android README docs; add self to code owners

* lib: revert System.load back to System.loadLibrary

* jni: introduce a logging util to filter different logging levels on different build types

* lib: enable app optimization

* doc: replace stub Google Play app URL with the actual link add screenshots; add my GitHub ID to maintainer list

* Remove cpu_features

* Fix linters issues in editorconfig-checker job

https://github.com/ggml-org/llama.cpp/actions/runs/19548770247/job/55974800633?pr=17413

* Remove unnecessary Android CMake flag

* purge include/cpu_features directory

---------

Co-authored-by: Han Yin <redacted>
5 weeks agoarg: allow -kvu flag for llama-perplexity (#18117)
TrevorS [Wed, 17 Dec 2025 06:33:02 +0000 (22:33 -0800)]
arg: allow -kvu flag for llama-perplexity (#18117)

The -kvu (--kv-unified) flag is required for hellaswag and winogrande
benchmarks which use coupled sequences. Without unified KV cache,
these benchmarks fail with:

  split_equal: sequential split is not supported when there are
  coupled sequences in the input batch (you may need to use the -kvu flag)

This change adds LLAMA_EXAMPLE_PERPLEXITY to the allowed examples for
the -kvu argument, enabling its use with llama-perplexity.

5 weeks agoggml : use WARP_SIZE/2 for argmax reduction offset (#18092)
Aadeshveer Singh [Wed, 17 Dec 2025 03:47:01 +0000 (09:17 +0530)]
ggml : use WARP_SIZE/2 for argmax reduction offset (#18092)

5 weeks agogguf-py : allow converting multi-tensor models from read-only locations (#18100)
Yuri Khrustalev [Wed, 17 Dec 2025 01:27:03 +0000 (20:27 -0500)]
gguf-py : allow converting multi-tensor models from read-only locations (#18100)

5 weeks agollama-fit-params: force disable mlock (#18103)
Johannes Gäßler [Tue, 16 Dec 2025 23:50:12 +0000 (00:50 +0100)]
llama-fit-params: force disable mlock (#18103)

5 weeks agollama-fit-params: lower ctx size for multi GPU (#18101)
Johannes Gäßler [Tue, 16 Dec 2025 23:49:34 +0000 (00:49 +0100)]
llama-fit-params: lower ctx size for multi GPU (#18101)

5 weeks agollama-fit-params: fix underflow for dense models (#18095)
Johannes Gäßler [Tue, 16 Dec 2025 23:47:37 +0000 (00:47 +0100)]
llama-fit-params: fix underflow for dense models (#18095)

5 weeks agollama-fit-params: QoL impr. for prints/errors (#18089)
Johannes Gäßler [Tue, 16 Dec 2025 23:03:19 +0000 (00:03 +0100)]
llama-fit-params: QoL impr. for prints/errors (#18089)

5 weeks agomodel: fix LFM2 missing tensors (#18105)
Xuan-Son Nguyen [Tue, 16 Dec 2025 18:07:43 +0000 (19:07 +0100)]
model: fix LFM2 missing tensors (#18105)

5 weeks agollama: fix early stop in params_fit if ctx is set (#18070)
Johannes Gäßler [Tue, 16 Dec 2025 13:24:00 +0000 (14:24 +0100)]
llama: fix early stop in params_fit if ctx is set (#18070)

5 weeks agoserver: fix crash when batch > ubatch with embeddings (#17912)
yifant-code [Tue, 16 Dec 2025 12:27:36 +0000 (07:27 -0500)]
server: fix crash when batch > ubatch with embeddings (#17912)

* server: fix crash when batch > ubatch with embeddings (#12836)

Fixes #12836 where the server crashes with GGML_ASSERT failure when
running with embeddings enabled and n_batch > n_ubatch.

Root cause: Embeddings use non-causal attention which requires all
tokens to be processed within a single ubatch. When n_batch > n_ubatch,
the server attempts to split processing, causing assertion failure.

Solution:
- Add parameter validation in main() after common_params_parse()
- When embeddings enabled and n_batch > n_ubatch:
  * Log warnings explaining the issue
  * Automatically set n_batch = n_ubatch
  * Prevent server crash

This follows the approach suggested by @ggerganov in issue #12836.

Note: This supersedes stalled PR #12940 which attempted a runtime fix
in the old examples/server/server.cpp location. This implementation
validates at startup in tools/server/server.cpp (current location).

Testing:
- Build: Compiles successfully
- Validation triggers: Warns when -b > -ub with --embedding
- Auto-correction works: Adjusts n_batch = n_ubatch
- No false positives: Valid params don't trigger warnings
- Verified on macOS M3 Pro with embedding model

* Update tools/server/server.cpp

---------

Co-authored-by: ytian218 <redacted>
Co-authored-by: Georgi Gerganov <redacted>
5 weeks agomodel-conversion : remove -fa option in model card template [no ci] (#18088)
Daniel Bevenius [Tue, 16 Dec 2025 12:25:09 +0000 (13:25 +0100)]
model-conversion : remove -fa option in model card template [no ci] (#18088)

This commit updates the causal model card template and removes the
-fa option as it is no longer required (fa is auto detected).

5 weeks agoarch: refactor LLM_TENSOR_NAMES (#18051)
Xuan-Son Nguyen [Tue, 16 Dec 2025 12:22:30 +0000 (13:22 +0100)]
arch: refactor LLM_TENSOR_NAMES (#18051)

* arch: refactor LLM_TENSOR_NAMES

* update docs

* typo

* fix LLM_ARCH_NEMOTRON_H_MOE

* show more meaningful error message on missing tensor

* fix and tested LLM_ARCH_NEMOTRON_H_MOE

5 weeks agoarg: clarify auto kvu/np being set on server (#17997)
Xuan-Son Nguyen [Tue, 16 Dec 2025 11:01:27 +0000 (12:01 +0100)]
arg: clarify auto kvu/np being set on server (#17997)

* arg: clarify auto kvu/np being set on server

* improve docs

* use invalid_argument

5 weeks agoOptimization: Qwen3 next autoregressive pass (#17996)
Piotr Wilkin (ilintar) [Tue, 16 Dec 2025 10:59:53 +0000 (11:59 +0100)]
Optimization: Qwen3 next autoregressive pass (#17996)

* It's Qwen3 Next, the lean mean token generation machine!

* Apply patches from thread

* Remove recurrent version, only keep chunked and autoregressive

* Remove unnecessary conts and asserts

* Remove more extra conts and asserts

* Cleanup masking

5 weeks agoCLI: fixed adding cli and completion into docker containers, improved docs (#18003)
Andrew Aladjev [Tue, 16 Dec 2025 10:52:23 +0000 (13:52 +0300)]
CLI: fixed adding cli and completion into docker containers, improved docs (#18003)

Co-authored-by: Andrew Aladjev <redacted>
5 weeks agoserver: Update README.md incorrect argument (#18073)
2114L3 [Tue, 16 Dec 2025 10:50:43 +0000 (20:50 +1000)]
server: Update README.md incorrect argument (#18073)

n-gpu-layer is incorrect
argument is n-gpu-layers with the 's'

5 weeks agomodel: support GLM4V vision encoder (#18042)
Xuan-Son Nguyen [Tue, 16 Dec 2025 10:25:26 +0000 (11:25 +0100)]
model: support GLM4V vision encoder (#18042)

* convert ok

* no deepstack

* less new tensors

* cgraph ok

* add mrope for text model

* faster patch merger

* add GGML_ROPE_TYPE_MRNORM

* add support for metal

* move glm4v do dedicated graph

* convert: add norm_embd

* clip: add debugging fn

* working correctly

* fix style

* use bicubic

* fix mrope metal

* improve cpu

* convert to neox ordering on conversion

* revert backend changes

* force stop if using old weight

* support moe variant

* fix conversion

* fix convert (2)

* Update tools/mtmd/clip-graph.h

Co-authored-by: Georgi Gerganov <redacted>
* process mrope_section on TextModel base class

* resolve conflict merge

---------

Co-authored-by: Georgi Gerganov <redacted>
5 weeks agomodel-conversion : add note about verifying previous models (#18082)
Daniel Bevenius [Tue, 16 Dec 2025 10:17:40 +0000 (11:17 +0100)]
model-conversion : add note about verifying previous models (#18082)

This commit adds a note to the README in the model-conversion
examples, advising developers to verify that previous versions of models
pass logits verification before adding new models from the same family.

5 weeks agomodel-conversion : use CONVERTED_EMBEDDING_MODEL for embedding_verify_logits (#18079)
Daniel Bevenius [Tue, 16 Dec 2025 10:17:20 +0000 (11:17 +0100)]
model-conversion : use CONVERTED_EMBEDDING_MODEL for embedding_verify_logits (#18079)

This commit updates the embedding model verification script to use the
CONVERTED_EMBEDDING_MODEL environment variable instead of using the
EMBEDDING_MODEL_PATH (the original embedding model path) as the basis
for the converted model file name.

The motivation for this that currently if the converted embedding model
file name differs from the original embedding model directory/name the
verification script will look for the wrong .bin files that were
generating when running the models.