Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1714 commits
Select commit Hold shift + click to select a range
3a653fe
ci : add older, min and dry-run options to ccache-clear (#27504)
ggerganov Aug 22, 2026
54ee5ee
mtmd: support dots3-note vision+audio (#27524)
ngxson Aug 22, 2026
2115b73
model : support DSpark for bailingmoe3 (#27508)
btw616 Aug 22, 2026
e85caa8
ci : Restore ROCm job for Ubuntu (#27399)
superm1 Aug 22, 2026
9fee29e
arg: remove -no-cnv from cli [no ci] (#27542)
ngxson Aug 22, 2026
2fb989b
fit: also take into account n_streams (#27496)
ngxson Aug 22, 2026
d9f918d
common: add json.h abstraction (#27511)
ngxson Aug 22, 2026
b21e4de
mtmd: use ggml_rope_set_offset (#27521)
ngxson Aug 22, 2026
3f545be
vulkan : added the PAD_REFLECT_1D operation (#26586)
safiullah3915 Aug 22, 2026
70adb1b
common: json.h: fix clang lto (#27575)
ngxson Aug 22, 2026
29ea941
cuda : add POOL_1D support (#27573)
amankarki151 Aug 23, 2026
6657ded
vendor : update subprocess.h (#27409)
cabelo Aug 23, 2026
8144f31
ui: Chat Conversation Tabbed navigation (#27263)
allozaur Aug 23, 2026
d337192
[Tensor parallel] Fix meta tensor split state propagation (#27574)
gaugarg-nv Aug 23, 2026
b0539c4
DeepseekV4: fix rollback with multi-seq (#26756)
am17an Aug 23, 2026
ba8e0ed
common : skip device_info loop if it's not going to be printed (#26692)
wolfpld Aug 23, 2026
e8eed45
server : add LLAMA_SERVER_SLOTS_N_DIFF (#27600)
ggerganov Aug 23, 2026
a278dce
contrib : recommend waiting for CI before merging (#27603)
nikwen Aug 23, 2026
95b8e33
ci : add test-llama-archs tensor split for Metal (#27598)
ggerganov Aug 23, 2026
56db501
mtmd: use pillow-accurate algo, correct resize_algo for all models (#…
ngxson Aug 23, 2026
4a08fa2
test: move tools/parser to tests (#27548)
ngxson Aug 23, 2026
8d9af25
test : fix multi-GPU server tests (#27614)
ggerganov Aug 23, 2026
d05f895
fix: Change chat tabs nav shortcuts (#27609)
allozaur Aug 23, 2026
ccc8fd2
readme : update links (#27617)
ggerganov Aug 23, 2026
c060ca9
model : support MTP in GLM-4.5-Air (#26534)
jacekpoplawski Aug 23, 2026
bf0a29c
Deepseek 4: `-sm tensor` (#26490)
am17an Aug 24, 2026
a130532
mamba2 : Flatten in/out projections to dispatch GEMM instead of GEMV …
pskrunner14 Aug 24, 2026
6036c63
ggml : fix ggml_clamp (#27644)
ggerganov Aug 24, 2026
985b149
ci : apply ccache-clear with older/min/dry-run to all ccache jobs (#2…
ggerganov Aug 24, 2026
160c6b0
mtmd: video: fix moov atom at the end of file (#27596)
ngxson Aug 24, 2026
c1c766d
webgpu : reorder includes since V that appears in common_decls.tmpl m…
fairydreaming Aug 24, 2026
a14dba6
ggml : shorten virtual device naming in CUDA and Metal (#27608)
ggerganov Aug 24, 2026
71cc86f
convert: fix GLM regression in index_tensors (#27655)
jacekpoplawski Aug 24, 2026
7584430
tests : disable DOTS3NOTE arch test for WebGPU (#27654)
fairydreaming Aug 24, 2026
b3c3b96
misc : read repetition_penalty from generation_config.json (#27659)
tdakhran Aug 24, 2026
b615f5b
metal: per-op source split + parallel compile (#26561)
forforever73 Aug 24, 2026
f280b26
metal : per-device tuned (Q, NE) for flash-attn vec (#26570)
forforever73 Aug 24, 2026
5ea87dd
webgpu : fix handling of infinity values during ARGSORT and TOP_K (#2…
fairydreaming Aug 25, 2026
814d84b
sycl : mark tq2_0 as not supported (#27660)
arthw Aug 25, 2026
eb25b72
grammar : parse \- in char classes as literal hyphen (#27591)
NIXKnight Aug 25, 2026
9388236
ggml : bump version to 0.22.0 (ggml/1607)
ggerganov Aug 25, 2026
81191af
sync : ggml
ggerganov Aug 25, 2026
c1d0e7a
llama.cpp : bump version to 0.3.0 (#27696)
ggerganov Aug 25, 2026
3737e41
metal : null-check buffer alloc to fix OOM crash (#25371)
ykhrustalev Aug 25, 2026
f1357e4
ui: ESLint config updates (#27700)
allozaur Aug 25, 2026
790b571
ci : store ccache on HF buckets (test with cuda-ubuntu for now) (#27699)
CISC Aug 25, 2026
0cc5b14
chat : scope qwen3-coder workarounds (#27679)
aldehir Aug 25, 2026
1729ed5
server : reject prefilled assistant messages with tool calls (#27626)
kyo-zzz Aug 25, 2026
0a5ac49
devops: use GGML_NATIVE=OFF for OpenVINO (#27338)
krzsztf Aug 25, 2026
b114b47
rpc: support apple RDMA as an RPC transport (#26421)
ryan5rdx Aug 25, 2026
eab8ee4
ci : update OS used for ROCM to Ubuntu 24.04 (#27681)
superm1 Aug 25, 2026
d222767
kleidiai: Rework KleidiAI Build System/Integration (#26077)
JonathanC-ARM Aug 25, 2026
5d5cb4c
ggml-meta: propagate buffer usage and call init on the new tensors (#…
max-krasnyansky Aug 26, 2026
11cd988
ggml-metal: add chunked SSD MMA for Mamba-2 prefill optimization (#26…
dpantaleoni Aug 26, 2026
dac869b
conversion : fix Nemotron 3.5 Lightning layers (#27729)
danbev Aug 26, 2026
da9b5d6
ci : make cache bucket public (#27728)
CISC Aug 26, 2026
fc35562
cuda: unblock mmq for MoE on sm_60 (#26264)
dfriehs Aug 26, 2026
4d19b28
ci: Clean up UI builds from releases (#27706)
allozaur Aug 26, 2026
6e5b8b7
gguf: add qwen4exp (Qwen3.8-Flash-Next) arch and converter
danielhanchen Aug 25, 2026
331fa7e
llama: load qwen4exp (Qwen3.8-Flash-Next) hparams and tensors
danielhanchen Aug 25, 2026
058b7a1
qwen4exp: shorten comments
danielhanchen Aug 26, 2026
c9ad86f
llama: qwen4exp text graph with hyper-connections, GDN and MoE
danielhanchen Aug 25, 2026
ad4fa3f
llama: qwen4exp PLE n-gram hash embedding
danielhanchen Aug 25, 2026
c89e67b
llama: carry the qwen4exp PLE conv state across ubatches
danielhanchen Aug 25, 2026
ddf0980
llama: fix the qwen4exp PLE conv state and unblock test-llama-archs
danielhanchen Aug 25, 2026
ff24f38
llama: optional indexer key cache in llama_memory_hybrid
danielhanchen Aug 25, 2026
c88c916
llama: QSA sparse attention for qwen4exp
danielhanchen Aug 25, 2026
1b59910
llama: give the qwen4exp indexer cache the attention cache's slots
danielhanchen Aug 25, 2026
dd89627
tests: record what the qwen4exp arch-test skip actually observes
danielhanchen Aug 25, 2026
40e9041
tests: cover qwen4exp in test-llama-archs
danielhanchen Aug 25, 2026
53c0f62
convert: stream the qwen4exp PLE table instead of concatenating it
danielhanchen Aug 25, 2026
570c26d
quantize: fall back to F16 for 32-block types with an odd ncols
danielhanchen Aug 25, 2026
4597a86
quantize: let --tensor-type name per_layer_token_embd
danielhanchen Aug 25, 2026
25aa77a
quantize: size the output buffer exactly instead of nelements * 4
danielhanchen Aug 26, 2026
eb95d12
qwen4exp: hash the image placeholder for multimodal batches
danielhanchen Aug 26, 2026
bea3b12
qwen4exp: support a non-unified KV cache in QSA
Aug 26, 2026
7fee670
llama: keep the qwen4exp top-k attention mask arch-local
danielhanchen Aug 26, 2026
035e227
llama: hold the qwen4exp indexer cache in a new llama_memory_hybrid_idx
danielhanchen Aug 26, 2026
2ae88c6
Merge upstream b10636 into CambrianTech fork (base was b10143, 493 up…
joelteply Aug 26, 2026
67b2868
restore per-layer head-geometry APIs lost in the b10636 merge
joelteply Aug 26, 2026
986754c
fix: drop duplicated kimi-k3 hparams block from the b10636 merge
joelteply Aug 26, 2026
cfbdc0a
llama: save and restore the qwen4exp indexer KV cache
danielhanchen Aug 26, 2026
d22d2be
llama: make the qwen4exp PLE n-gram history per context and serialise it
danielhanchen Aug 26, 2026
d4a943f
qwen4exp: tidy comments and simplify image token read
Aug 26, 2026
0ac4b18
qwen4exp: support a quantized KV cache in the QSA attention path
Aug 26, 2026
c52ed2a
llama: give qwen4exp a large-graph node budget
Aug 26, 2026
6a69a0c
qwen4exp: drop an unused variable that breaks -Werror builds
Aug 27, 2026
ef9fa1b
quantize: dequantize and quantize large tensors in row bands
Aug 26, 2026
5674c73
llama: segment the qwen4exp fused QKV for tensor split
danielhanchen Aug 27, 2026
24ea62d
llama: fix the qwen4exp PLE history seq_rm(-1) iterator invalidation …
danielhanchen Aug 27, 2026
0b19188
qwen4exp: include llama-impl.h explicitly for llama_mul_mat_hadamard
Aug 27, 2026
213df58
convert: fix the qwen4exp lint and type-check failures
danielhanchen Aug 27, 2026
fbe1773
llama: give the qwen4exp indexer cache its own tensor names
Aug 27, 2026
6c5afc8
qwen4exp: double the Q split granularity for tensor parallelism
Aug 27, 2026
52f761b
Merge llama.cpp PR #27742 (qwen4exp: Qwen3.8-Flash-Next — GDN+QSA hyb…
joelteply Aug 27, 2026
ae438cd
Merge k3-adopt (moe-gather #23 Cut-2) into merge/qwen4exp — the union…
joelteply Aug 28, 2026
920eef0
fix(ggml-backend): include <memory> for the MoeGatherTables unique_pt…
joelteply Aug 28, 2026
878db97
server: don't defer SLOT_SAVE on a live slot (concurrent warm-KV save)
joelteply Sep 2, 2026
0a637ba
fix(server): bind slot page-ops to their slot so a deferred RESTORE i…
joelteply Sep 3, 2026
c08a004
continuum: llama_model_get_tensor — public mutable weight accessor fo…
joelteply Jul 27, 2026
fb668a8
fix(cuda): Q2_0 passes expert_ptrs — the CUDA backend has not compile…
joelteply Sep 5, 2026
3ca60da
server: report measured weight residency per backend on /props
joelteply Sep 5, 2026
b4d1533
server: document the backend-name contract — prefix test, CPU_REPACK,…
joelteply Sep 5, 2026
bd5853e
server: correct the name-lifetime contract — registry-owned, not a li…
joelteply Sep 5, 2026
76dfd64
server: name the third tier in the lifetime contract — Metal is owned…
joelteply Sep 5, 2026
f8aa8d8
server: context checkpoints ride with a slot save/restore (sidecar) —…
joelteply Sep 13, 2026
ae375e6
ggml: moe-gguf-source: widen the shard-index buffer — gcc -Werror=for…
joelteply Sep 13, 2026
45626cf
tools: moe-fit: widen the shard-index buffer too (gcc -Werror=format-…
joelteply Sep 13, 2026
13bbb16
server tests: the slot-binding proof keeps the long slot busy for the…
joelteply Sep 13, 2026
a02caaa
server tests: the long slot ignores EOS — the tiny model ends a 'long…
joelteply Sep 13, 2026
d61a394
server tests: the short slot runs 256 tokens so a fast runner can obs…
joelteply Sep 13, 2026
1330954
server tests: the slot-binding proof is measured in timestamps — the …
joelteply Sep 13, 2026
965d38a
Merge pull request #2 from CambrianTech/continuum/kv-checkpoints-surv…
joelteply Sep 13, 2026
a0c6294
cuda: out_prod accepts a quantized (or F16/BF16) src0 — the backward …
joelteply Sep 26, 2026
42a35ff
cuda: out_prod dequantizes a 2D weight in row blocks — the output hea…
joelteply Sep 26, 2026
af85950
metal: OUT_PROD, with a quantized src0 — the backward through a resid…
joelteply Sep 26, 2026
973357e
metal: OUT_PROD accepts the transposed gradient the training graph em…
joelteply Sep 26, 2026
04df2eb
metal: RMS_NORM_BACK, SOFT_MAX_BACK, REPEAT_BACK — the backward set a…
joelteply Sep 26, 2026
bdd5d88
ggml: a backward for SIGMOID (grad * s * (1 - s)), and the backward-g…
joelteply Sep 27, 2026
9e07ed0
LoRA-only training on the loaded model: the adapter's A/B are the par…
joelteply Sep 26, 2026
36289dd
finetune-lora: -s seeds the fresh adapter's A initialisation
joelteply Sep 27, 2026
0cfab02
ggml: the gated delta rule's backward (GATED_DELTA_NET_BACK), the CPU…
joelteply Sep 27, 2026
ba52014
cuda: the backward of the gated delta rule (GATED_DELTA_NET_BACK) — t…
joelteply Sep 27, 2026
bf4c3ed
tests: gated delta net gradient cases at head sizes 16 and 32, the si…
joelteply Sep 27, 2026
696ee2d
ggml: backward rules for CONCAT, SSM_CONV and L2_NORM, the next ops a…
joelteply Sep 27, 2026
e89a2cb
llama-graph: the hybrid input skips unallocated store indices, like t…
joelteply Sep 27, 2026
f39d131
tests: OUT_PROD perf cases at the shapes a LoRA backward emits (1.5B …
joelteply Sep 27, 2026
4483cb5
cuda: out_prod runs a quantized 2D weight's blocks on BF16 tensor cor…
joelteply Sep 27, 2026
5737801
cuda: GATED_DELTA_NET_BACK recomputes from checkpoints, and runs at h…
joelteply Sep 27, 2026
4a8a5d2
server: /train — LoRA-only training on the model this server is servi…
joelteply Sep 27, 2026
1dcb19d
server /train: refuse when base weights may sit in a repacked CPU buf…
joelteply Sep 27, 2026
be77bc4
server /train: the refusal names the real flag (--no-repack)
joelteply Sep 27, 2026
d6a6527
server /train: use the fork's common_json (no nlohmann in server head…
joelteply Sep 27, 2026
93c452b
server /train: routes reach the impl's trainer directly (one path)
joelteply Sep 27, 2026
09738b6
server /train: the override guard counts real entries (the arg parser…
joelteply Sep 27, 2026
a862394
server /train: the training context does not inherit the serving outp…
joelteply Sep 27, 2026
58f1295
server /train: the frame budget's first form — between training batch…
joelteply Sep 27, 2026
6aa3e91
llama + server /train: the model's adapter set is locked, and every /…
joelteply Sep 27, 2026
c09af02
server /train: OFF unless --train-dir DIR, and "out" is a bare file n…
joelteply Sep 27, 2026
fda574c
tests: delta-net backward at the shape the 27B emits (key heads share…
joelteply Sep 27, 2026
66035e2
llama-adapter: include <mutex> for std::unique_lock (the loras lock f…
joelteply Sep 27, 2026
db65a24
server /train: a real cancel (POST /train/cancel, llama_opt_stop), pa…
joelteply Sep 27, 2026
72dca13
server /train: "examples" rendered through the model's own chat templ…
joelteply Sep 27, 2026
ca001c5
Merge pull request #19 from CambrianTech/continuum/train-cancel-special
joelteply Sep 27, 2026
ca766e3
metal: CROSS_ENTROPY_LOSS_BACK is softmax(x) * sum(y) - y, so a maske…
joelteply Sep 27, 2026
0e1888e
ggml: the cross-entropy backward gives a masked (all-zero) label row …
joelteply Sep 27, 2026
5bf2b78
server /train: "examples" are one window each, and only the assistant…
joelteply Sep 27, 2026
6403aa2
Merge pull request #20 from CambrianTech/continuum/train-examples
joelteply Sep 27, 2026
fdca596
server /train: numeric inputs are validated before "examples" are pre…
joelteply Sep 27, 2026
1d028f4
Merge pull request #21 from CambrianTech/continuum/train-examples-notes
joelteply Sep 27, 2026
a1cf473
server: /train examples carry their tools, and a message can be conte…
joelteply Sep 27, 2026
7881db3
ggml/llama/server: a training graph is allocated only if it fits (mea…
joelteply Sep 27, 2026
c3f8d20
Merge pull request #22 from CambrianTech/continuum/train-a-turn-as-co…
joelteply Sep 27, 2026
dffc47a
server: /train refuses a "tools" that is not an array (Cormac on #22)
joelteply Sep 27, 2026
c445392
Merge pull request #5 from CambrianTech/continuum/metal-out-prod-quan…
joelteply Sep 27, 2026
24d2d6e
metal: GATED_DELTA_NET_BACK — the gated delta rule backward on Apple …
joelteply Sep 27, 2026
1f40f41
Merge pull request #16 from CambrianTech/continuum/metal-gated-delta-…
joelteply Sep 27, 2026
9bbd62e
Merge pull request #24 from CambrianTech/continuum/train-refuses-malf…
joelteply Sep 27, 2026
7772f3f
Merge pull request #23 from CambrianTech/continuum/opt-alloc-fails-cl…
joelteply Sep 27, 2026
edd14a1
Merge pull request #17 from CambrianTech/continuum/gdn-back-broadcast…
joelteply Sep 27, 2026
f617a58
server /props: memory_breakdown — every buffer the serving context ho…
joelteply Sep 27, 2026
9733aca
Merge pull request #25 from CambrianTech/continuum/props-memory-break…
joelteply Sep 27, 2026
a8a57e4
server: load and retire LoRA adapters at runtime, dormant until given…
joelteply Sep 27, 2026
e520b5b
server: the load route reads its own params; --cache-ram states are k…
joelteply Sep 27, 2026
fb6b7fd
Merge pull request #26 from CambrianTech/continuum/lora-adapter-load
joelteply Sep 27, 2026
d4b724b
server: /train top_layers — adapt only the last K blocks, so the back…
joelteply Sep 27, 2026
a1c55dd
server: /train reports the depth it adapts, and refuses a window the …
joelteply Sep 27, 2026
c3f7886
Merge pull request #27 from CambrianTech/feat/train-top-layers
joelteply Sep 27, 2026
3227179
train: retain optimizer state across cooperative pause and resume
joelteply Sep 27, 2026
6194ef1
Merge pull request #28 from CambrianTech/feat/train-pause-resume-v4
joelteply Sep 27, 2026
1dd2754
feat(server): /train fits long examples to the window from the front …
joelteply Sep 28, 2026
72e4935
feat(server): /train fit "middle" keeps the system and tool head and …
joelteply Sep 28, 2026
6040fe4
feat(server): /train's window is bounded by the model's trained conte…
joelteply Sep 28, 2026
a0e1000
fix(server): fit middle drops whole exchanges (user through the next …
joelteply Sep 28, 2026
0d32216
fix(server): erase a message by index (a JSON array iterator has no o…
joelteply Sep 28, 2026
c059725
fix(examples): finetune initializes the opt params' adapter; finetune…
joelteply Sep 28, 2026
4a1b319
Merge pull request #29 from CambrianTech/feat/train-fits-examples-to-…
joelteply Sep 28, 2026
6680a77
feat(server): /train sizes its graph to the data: the window used is …
joelteply Sep 28, 2026
7ec5853
Merge pull request #30 from CambrianTech/feat/train-graph-sized-to-th…
joelteply Sep 28, 2026
a9f1f9d
server-train: no held-out tokens, no eval loss: eval_loss is null and…
joelteply Sep 28, 2026
f00a222
Merge pull request #31 from CambrianTech/fix/train-no-held-out-no-eva…
joelteply Sep 28, 2026
dfcf51d
server /train: a share of the lane's time, not wait-for-idle; a host-…
joelteply Oct 5, 2026
3bde0c1
train: outputs only at the labelled positions; the loss is a mean ove…
joelteply Oct 5, 2026
59a7d84
train: say why the no-label batch return is unreachable from /train (…
joelteply Oct 5, 2026
49210a6
Merge pull request #32 from CambrianTech/train/bounded-yield-per-window
joelteply Oct 5, 2026
6481297
server /train: status reports the window duration distribution (max, …
joelteply Oct 5, 2026
c67f886
Merge pull request #33 from CambrianTech/train/window-duration-distri…
joelteply Oct 5, 2026
0aeab03
ggml: L2_NORM backward squares a contiguous copy of a viewed input
joelteply Oct 6, 2026
ad908f4
Merge pull request #34 from CambrianTech/fix/l2-norm-backward-contiguous
joelteply Oct 6, 2026
9652942
train: a node the device cannot run refuses the JOB, not the server; …
joelteply Oct 6, 2026
8cd6fdb
Merge pull request #35 from CambrianTech/fix/training-refuses-a-node-…
joelteply Oct 6, 2026
000152b
server /train: max_slowdown_ppm bounds her decode slowdown, measured,…
joelteply Oct 6, 2026
98f8df4
Merge pull request #36 from CambrianTech/train/decode-rate-controller
joelteply Oct 6, 2026
a5208c4
train: refuse only a node NO scheduler backend can run (fix the Metal…
joelteply Oct 6, 2026
68c2ec7
Merge pull request #38 from CambrianTech/fix/refuse-only-when-no-back…
joelteply Oct 6, 2026
095ae6d
train: per-layer recompute (gradient checkpointing), on by default in…
joelteply Oct 6, 2026
1403593
train: the finetune examples name recompute=false (arm64 -Werror: mis…
joelteply Oct 6, 2026
973bb4b
train: recompute is opt-in on /train until its per-chunk p95 is measu…
joelteply Oct 6, 2026
b72a2c3
tests: test-chat builds the trainer with #36's serving_view (it passe…
joelteply Oct 6, 2026
b6b47ab
train: recompute treats any in-place op as a write to its source's root
joelteply Oct 6, 2026
dc1a379
Merge pull request #37 from CambrianTech/train/per-layer-recompute
joelteply Oct 6, 2026
3c6fb6d
metal: OUT_PROD's transposed F32 src0 is viewed in src0's own buffer,…
joelteply Oct 6, 2026
40163d7
tests: OUT_PROD with src0 in a buffer of its own, against CPU (Cormac…
joelteply Oct 6, 2026
b7480aa
metal + opt: a lookup that finds no buffer fails the graph, and a fai…
joelteply Oct 6, 2026
35bd266
metal: nil lookups count against the graph compute that encoded them,…
joelteply Oct 6, 2026
f14c24b
Merge pull request #41 from CambrianTech/fix/metal-out-prod-f32-trans…
joelteply Oct 6, 2026
2d4d63b
Merge pull request #42 from CambrianTech/fix/a-nil-lookup-fails-the-t…
joelteply Oct 6, 2026
69a2f8f
train: walk the window: decode context, train each reply chunk agains…
joelteply Oct 6, 2026
0540511
train: drop the walk's debug prints; a reply a hybrid memory cannot r…
joelteply Oct 6, 2026
321c1fe
train: a recurrent state is snapshotted around each training chunk (F…
joelteply Oct 6, 2026
c424b00
train: the cache holds constants at F16; an interim default chunk of 512
joelteply Oct 6, 2026
a8a235d
train: q8_0 cache constants in a flash-attention context; training gr…
joelteply Oct 6, 2026
87e5078
train: the walk yields at every chunk, not once per example window
joelteply Oct 6, 2026
539c75d
train: the walk's chunk step fails its run through #42's backend-fail…
joelteply Oct 6, 2026
285ff85
metal: OUT_PROD multiplies in float staging; a training gradient over…
joelteply Oct 6, 2026
8fcbfc7
metal: ACC copies the whole of src0 into dst; rows wider than a threa…
joelteply Oct 6, 2026
5b3e1fa
metal: SET copies the whole of src0 into dst too (Cormac on #44)
joelteply Oct 6, 2026
3699a65
Merge pull request #43 from CambrianTech/fix/metal-training-matmul-st…
joelteply Oct 6, 2026
40bb7d5
metal: SET drops the bid_src0 only its old copy used (-Werror on maco…
joelteply Oct 6, 2026
44fd054
ggml: GGML_TENSOR_FLAG_GRAD, a leaf whose gradient the backward compu…
joelteply Oct 6, 2026
f246c4e
ggml-opt: graphs built per step start every optimizer period from zer…
joelteply Oct 6, 2026
e2278fb
ggml-opt: graphs built per step start every optimizer period from zer…
joelteply Oct 6, 2026
0863877
ggml-opt: accumulators and momenta belong to a parameter, never to a …
joelteply Oct 6, 2026
3075a35
ggml-opt: a caller-driven optimizer period, a weighted loss with an e…
joelteply Oct 6, 2026
6eab309
ggml-opt: the period-start zeroing is bounded by the current graph's …
joelteply Oct 6, 2026
8f0512f
ggml: CONCAT backward slices a contiguous gradient (a transposed one …
joelteply Oct 6, 2026
366d44c
train: the exact walk, one optimizer step per window on the gradient …
joelteply Oct 6, 2026
fbd9ba5
ggml: CONCAT backward slices a contiguous gradient (a transposed one …
joelteply Oct 6, 2026
ed292df
train: the exact walk carries a recurrent state's gradient across chu…
joelteply Oct 7, 2026
8b5f095
train: the exact walk's host memory is counted before a window runs a…
joelteply Oct 7, 2026
5a06f8b
train: the exact walk checkpoints a recurrent state every few chunks …
joelteply Oct 7, 2026
1ef1a29
train: the exact walk's gradient horizon shrinks to fit the device, a…
joelteply Oct 7, 2026
19d9e80
tests: test-opt-dynamic-accum takes the CPU backend by type (CI's bac…
joelteply Oct 7, 2026
9f7e575
tests: test-grad-leaf and test-opt-dynamic-accum take the CPU backend…
joelteply Oct 7, 2026
fac6962
Merge pull request #45 from CambrianTech/fix/opt-per-step-accumulators
joelteply Oct 7, 2026
477e7cd
examples: the finetune examples name the exact walk's fields (off) in…
joelteply Oct 7, 2026
b8c1f93
tests: a CONCAT gradient case consumed through a permute + transpose …
joelteply Oct 7, 2026
7b90bd1
train: the exact walk resets its horizon to the request each window; …
joelteply Oct 7, 2026
95b41b0
Merge pull request #40 from CambrianTech/train/walk-on-head
joelteply Oct 7, 2026
10292b5
Merge remote-tracking branch 'origin/feat/props-weight-residency' int…
joelteply Oct 7, 2026
ba5af84
Merge pull request #46 from CambrianTech/fix/concat-backward-contiguous
joelteply Oct 7, 2026
5e3961b
Merge pull request #47 from CambrianTech/train/walk-exact-gradient
joelteply Oct 7, 2026
1b7b5a7
Merge pull request #44 from CambrianTech/fix/metal-acc-copies-every-r…
joelteply Oct 7, 2026
6c77b04
train: the training context keeps no recurrent rollback slots, and th…
joelteply Oct 7, 2026
7c96fb9
tests: a hybrid exact walk's state restores leave no non-consecutive …
joelteply Oct 7, 2026
f45bb19
Merge pull request #48 from CambrianTech/fix/exact-walk-rollback-slots
joelteply Oct 7, 2026
802d4a2
fix(train): the exact walk rewinds the cache before retrying a refuse…
joelteply Oct 10, 2026
49ee77f
docs(train): say where a horizon retry recomputes walk_grad_from
joelteply Oct 10, 2026
e2c7690
Merge pull request #49 from CambrianTech/fix/exact-walk-retry-rewinds
joelteply Oct 10, 2026
24aae1f
tests: per-layer recompute under the exact walk takes the same step i…
joelteply Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 35 additions & 2 deletions .devops/cann.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,28 @@
# Define the CANN base image for easier version updates later
ARG CHIP_TYPE=910b
ARG CANN_BASE_IMAGE=quay.io/ascend/cann:8.5.0-${CHIP_TYPE}-openeuler24.03-py3.11
ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A

# ==============================================================================
# BUILD STAGE
# Compile all binary files and libraries
# ==============================================================================
ARG NODE_VERSION=24

FROM docker.io/node:$NODE_VERSION AS web

ARG APP_VERSION

WORKDIR /app/tools/ui

COPY tools/ui/package.json tools/ui/package-lock.json ./
RUN npm ci

COPY tools/ui/ ./
RUN LLAMA_BUILD_NUMBER="$APP_VERSION" npm run build

FROM ${CANN_BASE_IMAGE} AS build

# -- Install build dependencies --
Expand All @@ -23,6 +40,8 @@ WORKDIR /app
# -- Copy project files --
COPY . .

COPY --from=web /app/tools/ui/dist tools/ui/dist

# -- Set CANN environment variables (required for compilation) --
# Using ENV instead of `source` allows environment variables to persist across the entire image layer
ENV ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
Expand Down Expand Up @@ -55,6 +74,7 @@ RUN mkdir -p /app/lib && \
RUN mkdir -p /app/full && \
cp build/bin/* /app/full/ && \
cp *.py /app/full/ && \
cp -r conversion /app/full/ && \
cp -r gguf-py /app/full/ && \
cp -r requirements /app/full/ && \
cp requirements.txt /app/full/
Expand All @@ -67,6 +87,19 @@ RUN mkdir -p /app/full && \
# ==============================================================================
FROM ${CANN_BASE_IMAGE} AS base

ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A
ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp
ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp
LABEL org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.version=$APP_VERSION \
org.opencontainers.image.revision=$APP_REVISION \
org.opencontainers.image.title="llama.cpp" \
org.opencontainers.image.description="LLM inference in C/C++" \
org.opencontainers.image.url=$IMAGE_URL \
org.opencontainers.image.source=$IMAGE_SOURCE

# -- Install runtime dependencies --
RUN yum install -y libgomp curl && \
yum clean all && \
Expand Down Expand Up @@ -112,7 +145,7 @@ ENTRYPOINT ["/app/tools.sh"]
# ==============================================================================
FROM base AS light

COPY --from=build /app/full/llama-cli /app/full/llama-completion /app
COPY --from=build /app/full/llama /app/full/llama-cli /app/full/llama-completion /app

ENTRYPOINT [ "/app/llama-cli" ]

Expand All @@ -123,7 +156,7 @@ FROM base AS server

ENV LLAMA_ARG_HOST=0.0.0.0

COPY --from=build /app/full/llama-server /app
COPY --from=build /app/full/llama /app/full/llama-server /app

HEALTHCHECK --interval=5m CMD [ "curl", "-f", "http://localhost:8080/health" ]

Expand Down
43 changes: 38 additions & 5 deletions .devops/cpu.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,23 @@
ARG UBUNTU_VERSION=24.04
ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A

FROM ubuntu:$UBUNTU_VERSION AS build
ARG NODE_VERSION=24

FROM docker.io/node:$NODE_VERSION AS web

ARG APP_VERSION

WORKDIR /app/tools/ui

COPY tools/ui/package.json tools/ui/package-lock.json ./
RUN npm ci

COPY tools/ui/ ./
RUN LLAMA_BUILD_NUMBER="$APP_VERSION" npm run build

FROM docker.io/ubuntu:$UBUNTU_VERSION AS build

ARG TARGETARCH

Expand All @@ -13,6 +30,8 @@ WORKDIR /app

COPY . .

COPY --from=web /app/tools/ui/dist tools/ui/dist

RUN if [ "$TARGETARCH" = "amd64" ] || [ "$TARGETARCH" = "arm64" ]; then \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=OFF -DLLAMA_BUILD_TESTS=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON; \
else \
Expand All @@ -27,16 +46,30 @@ RUN mkdir -p /app/lib && \
RUN mkdir -p /app/full \
&& cp build/bin/* /app/full \
&& cp *.py /app/full \
&& cp -r conversion /app/full \
&& cp -r gguf-py /app/full \
&& cp -r requirements /app/full \
&& cp requirements.txt /app/full \
&& cp .devops/tools.sh /app/full/tools.sh

## Base image
FROM ubuntu:$UBUNTU_VERSION AS base
FROM docker.io/ubuntu:$UBUNTU_VERSION AS base

ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A
ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp
ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp
LABEL org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.version=$APP_VERSION \
org.opencontainers.image.revision=$APP_REVISION \
org.opencontainers.image.title="llama.cpp" \
org.opencontainers.image.description="LLM inference in C/C++" \
org.opencontainers.image.url=$IMAGE_URL \
org.opencontainers.image.source=$IMAGE_SOURCE

RUN apt-get update \
&& apt-get install -y libgomp1 curl \
&& apt-get install -y libgomp1 curl ffmpeg \
&& apt autoremove -y \
&& apt clean -y \
&& rm -rf /tmp/* /var/tmp/* \
Expand Down Expand Up @@ -71,7 +104,7 @@ ENTRYPOINT ["/app/tools.sh"]
### Light, CLI only
FROM base AS light

COPY --from=build /app/full/llama-cli /app/full/llama-completion /app
COPY --from=build /app/full/llama /app/full/llama-cli /app/full/llama-completion /app

WORKDIR /app

Expand All @@ -82,7 +115,7 @@ FROM base AS server

ENV LLAMA_ARG_HOST=0.0.0.0

COPY --from=build /app/full/llama-server /app
COPY --from=build /app/full/llama /app/full/llama-server /app

WORKDIR /app

Expand Down
50 changes: 43 additions & 7 deletions .devops/cuda.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,47 @@
ARG UBUNTU_VERSION=24.04
# This needs to generally match the container host's environment.
ARG CUDA_VERSION=12.8.1
ARG GCC_VERSION=14
# Target the CUDA build image
ARG BASE_CUDA_DEV_CONTAINER=nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}
ARG BASE_CUDA_DEV_CONTAINER=docker.io/nvidia/cuda:${CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION}

ARG BASE_CUDA_RUN_CONTAINER=nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION}
ARG BASE_CUDA_RUN_CONTAINER=docker.io/nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION}

ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A

ARG NODE_VERSION=24

FROM docker.io/node:$NODE_VERSION AS web

ARG APP_VERSION

WORKDIR /app/tools/ui

COPY tools/ui/package.json tools/ui/package-lock.json ./
RUN npm ci

COPY tools/ui/ ./
RUN LLAMA_BUILD_NUMBER="$APP_VERSION" npm run build

FROM ${BASE_CUDA_DEV_CONTAINER} AS build

ARG GCC_VERSION
# CUDA architecture to build for (defaults to all supported archs)
ARG CUDA_DOCKER_ARCH=default

RUN apt-get update && \
apt-get install -y gcc-14 g++-14 build-essential cmake python3 python3-pip git libssl-dev libgomp1
apt-get install -y gcc-${GCC_VERSION} g++-${GCC_VERSION} build-essential cmake python3 python3-pip git libssl-dev libgomp1

ENV CC=gcc-14 CXX=g++-14 CUDAHOSTCXX=g++-14
ENV CC=gcc-${GCC_VERSION} CXX=g++-${GCC_VERSION} CUDAHOSTCXX=g++-${GCC_VERSION}

WORKDIR /app

COPY . .

COPY --from=web /app/tools/ui/dist tools/ui/dist

RUN if [ "${CUDA_DOCKER_ARCH}" != "default" ]; then \
export CMAKE_ARGS="-DCMAKE_CUDA_ARCHITECTURES=${CUDA_DOCKER_ARCH}"; \
fi && \
Expand All @@ -32,6 +54,7 @@ RUN mkdir -p /app/lib && \
RUN mkdir -p /app/full \
&& cp build/bin/* /app/full \
&& cp *.py /app/full \
&& cp -r conversion /app/full \
&& cp -r gguf-py /app/full \
&& cp -r requirements /app/full \
&& cp requirements.txt /app/full \
Expand All @@ -40,8 +63,21 @@ RUN mkdir -p /app/full \
## Base image
FROM ${BASE_CUDA_RUN_CONTAINER} AS base

ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A
ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp
ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp
LABEL org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.version=$APP_VERSION \
org.opencontainers.image.revision=$APP_REVISION \
org.opencontainers.image.title="llama.cpp" \
org.opencontainers.image.description="LLM inference in C/C++" \
org.opencontainers.image.url=$IMAGE_URL \
org.opencontainers.image.source=$IMAGE_SOURCE

RUN apt-get update \
&& apt-get install -y libgomp1 curl \
&& apt-get install -y libgomp1 curl ffmpeg \
&& apt autoremove -y \
&& apt clean -y \
&& rm -rf /tmp/* /var/tmp/* \
Expand Down Expand Up @@ -77,7 +113,7 @@ ENTRYPOINT ["/app/tools.sh"]
### Light, CLI only
FROM base AS light

COPY --from=build /app/full/llama-cli /app/full/llama-completion /app
COPY --from=build /app/full/llama /app/full/llama-cli /app/full/llama-completion /app

WORKDIR /app

Expand All @@ -88,7 +124,7 @@ FROM base AS server

ENV LLAMA_ARG_HOST=0.0.0.0

COPY --from=build /app/full/llama-server /app
COPY --from=build /app/full/llama /app/full/llama-server /app

WORKDIR /app

Expand Down
70 changes: 57 additions & 13 deletions .devops/intel.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
ARG ONEAPI_VERSION=2025.3.3-0-devel-ubuntu24.04
ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A

## Build Image

FROM intel/deep-learning-essentials:$ONEAPI_VERSION AS build
ARG NODE_VERSION=24

ARG GGML_SYCL_F16=OFF
FROM docker.io/node:$NODE_VERSION AS web

ARG APP_VERSION

WORKDIR /app/tools/ui

COPY tools/ui/package.json tools/ui/package-lock.json ./
RUN npm ci

COPY tools/ui/ ./
RUN LLAMA_BUILD_NUMBER="$APP_VERSION" npm run build

FROM docker.io/intel/deep-learning-essentials:$ONEAPI_VERSION AS build

ARG GGML_SYCL_F16=ON
ARG LEVEL_ZERO_VERSION=1.28.2
ARG LEVEL_ZERO_UBUNTU_VERSION=u24.04
RUN apt-get update && \
Expand All @@ -19,9 +36,12 @@ WORKDIR /app

COPY . .

COPY --from=web /app/tools/ui/dist tools/ui/dist

RUN if [ "${GGML_SYCL_F16}" = "ON" ]; then \
echo "GGML_SYCL_F16 is set" \
&& export OPT_SYCL_F16="-DGGML_SYCL_F16=ON"; \
&& export OPT_SYCL_F16="-DGGML_SYCL_F16=ON" \
&& export SYCL_PROGRAM_COMPILE_OPTIONS="-cl-fp32-correctly-rounded-divide-sqrt"; \
fi && \
echo "Building with dynamic libs" && \
cmake -B build -DGGML_NATIVE=OFF -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DLLAMA_BUILD_TESTS=OFF ${OPT_SYCL_F16} && \
Expand All @@ -33,18 +53,42 @@ RUN mkdir -p /app/lib && \
RUN mkdir -p /app/full \
&& cp build/bin/* /app/full \
&& cp *.py /app/full \
&& cp -r conversion /app/full \
&& cp -r gguf-py /app/full \
&& cp -r requirements /app/full \
&& cp requirements.txt /app/full \
&& cp .devops/tools.sh /app/full/tools.sh

FROM intel/deep-learning-essentials:$ONEAPI_VERSION AS base

ARG IGC_VERSION=v2.20.5
ARG IGC_VERSION_FULL=2_2.20.5+19972
ARG COMPUTE_RUNTIME_VERSION=25.40.35563.10
ARG COMPUTE_RUNTIME_VERSION_FULL=25.40.35563.10-0
ARG IGDGMM_VERSION=22.8.2
FROM docker.io/intel/deep-learning-essentials:$ONEAPI_VERSION AS base

ARG BUILD_DATE=N/A
ARG APP_VERSION=N/A
ARG APP_REVISION=N/A
ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp
ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp
LABEL org.opencontainers.image.created=$BUILD_DATE \
org.opencontainers.image.version=$APP_VERSION \
org.opencontainers.image.revision=$APP_REVISION \
org.opencontainers.image.title="llama.cpp" \
org.opencontainers.image.description="LLM inference in C/C++" \
org.opencontainers.image.url=$IMAGE_URL \
org.opencontainers.image.source=$IMAGE_SOURCE

#Following versions are for multiple GPUs, since 26.x has known issue:
# https://github.com/ggml-org/llama.cpp/issues/21747,
# https://github.com/intel/compute-runtime/issues/921.
#ARG IGC_VERSION=v2.20.5
#ARG IGC_VERSION_FULL=2_2.20.5+19972
#ARG COMPUTE_RUNTIME_VERSION=25.40.35563.10
#ARG COMPUTE_RUNTIME_VERSION_FULL=25.40.35563.10-0
#ARG IGDGMM_VERSION=22.8.2


ARG IGC_VERSION=v2.34.4
ARG IGC_VERSION_FULL=2_2.34.4+21428
ARG COMPUTE_RUNTIME_VERSION=26.18.38308.1
ARG COMPUTE_RUNTIME_VERSION_FULL=26.18.38308.1-0
ARG IGDGMM_VERSION=22.10.0
RUN mkdir /tmp/neo/ && cd /tmp/neo/ \
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/$IGC_VERSION/intel-igc-core-${IGC_VERSION_FULL}_amd64.deb \
&& wget https://github.com/intel/intel-graphics-compiler/releases/download/$IGC_VERSION/intel-igc-opencl-${IGC_VERSION_FULL}_amd64.deb \
Expand All @@ -58,7 +102,7 @@ RUN mkdir /tmp/neo/ && cd /tmp/neo/ \
&& dpkg --install *.deb

RUN apt-get update \
&& apt-get install -y libgomp1 curl \
&& apt-get install -y libgomp1 curl ffmpeg \
&& apt autoremove -y \
&& apt clean -y \
&& rm -rf /tmp/* /var/tmp/* \
Expand Down Expand Up @@ -97,7 +141,7 @@ ENTRYPOINT ["/app/tools.sh"]
FROM base AS light

COPY --from=build /app/lib/ /app
COPY --from=build /app/full/llama-cli /app/full/llama-completion /app
COPY --from=build /app/full/llama /app/full/llama-cli /app/full/llama-completion /app

WORKDIR /app

Expand All @@ -109,7 +153,7 @@ FROM base AS server
ENV LLAMA_ARG_HOST=0.0.0.0

COPY --from=build /app/lib/ /app
COPY --from=build /app/full/llama-server /app
COPY --from=build /app/full/llama /app/full/llama-server /app

WORKDIR /app

Expand Down
Loading
Loading