Repository navigation
Sync master with upstream (2026-11-02) - #172
Merged
Merged
Conversation
) * sycl: fix CONV_2D wrong results for non-contiguous input The kernel indexes the `input` as a contiguous [W, H, C, N] tensor, but supports_op claimed the op for any layout. A non-contiguous (e.g. `CWHN` permuted) input was read with the wrong element offsets, silently producing wrong results. Gate the CONV_2D op on `input` and `kernel` contiguity, matching the CUDA backend contract, and assert input contiguity in the op. `test-backend-ops -b SYCL0 -o CONV_2D`: goes from 16 failures to 0, none. ```text 2006/2006 tests passed Backend SYCL0: OK Backend 2/2: CPU Skipping 2/2 backends passed OK ``` Assisted-by: pi (unsloth/Qwen3.8-27B-GGUF:Q4_K_M via llama.cpp) * sycl : CONV_2D cwhn=1 support Make the SYCL backend compute `GGML_OP_CONV_2D` correctly for `cwhn=1` (CWHN channel-order) inputs and kernels, so the previously failing test- backend-ops CONV_2D cases pass on SYCL instead of being skipped or miscomputed. - Implement CWHN layout support in `ggml/src/ggml-sycl/conv2d.cpp` (`ggml_sycl_op_conv2d`). - Update SYCL `supports_op` for `GGML_OP_CONV_2D` in `ggml/src/ggml-sycl/ggml-sycl.cpp` to accept both layouts. Assisted-by: pi (Greatjedi/Qwen3.8-27B-Intel-Arc-Tuned-GGUF via llama.cpp) * sycl docs : update ops for SYCL
) * server : support typed content input for rerank endpoint Assisted-by: Opencode/Qwen3.8 27B * server : address rerank multimodal review findings - reject multimodal rerank input when the model has no rerank chat template (images were silently dropped) - translate handle_media download/base64 failures to 400 instead of 500 - reject negative top_n with 400 instead of letting resize throw - fix comment typos, redundant comments, indentation and trailing whitespace - README: document that TEI input accepts the same shape as Jina; drop stray blank line Assisted-by: opencode * Trimmed README --------- Co-authored-by: timothywang21 <timothywang21@users.noreply.github.com>
…e-type (ggml-org#23343) * nemotron : support non-standard GQA, BPE tokenizer and domyn-small pre-type * gguf-py : write Metaspace prepend_scheme as GGUF metadata * vocab : parse metaspace prepend_scheme into enum, rename key * vocab : use metaspace prepend_scheme in detokenize, add TODOs for other tokenizers * vocab : use constant for metaspace escaped space --------- Co-authored-by: Martin Cimmino <martin.cimmino@domyn.com>
…patibility (ggml-org#30828) std::aligned_alloc is unavailable on Android bionic below API 28 (Termux targets API 24); use posix_memalign like ggml.c does.
* Multi-column on Intel XMX matrix engines refactored Multi-column (2 to 80 activation columns) mul_mat_vec_q for reordered K-quant and Q8_0 weights on the Intel XMX matrix engines (int8 DPAS, ESIMD), for the SYCL backend. It targets speculative decoding verification (2 to 8 tokens per step) and short prompt batches (9 to 80 tokens). Three types also use it for a single column (Q2_K, Q3_K, Q8_0). * Fixed regression bug real bug found: the first version produced NaN whenever the row count wasn't a multiple of 4 * Removed GGML_TYPE_Q8_0 activation * rewritten xmx_mul_mat 64-byte alignment and 16-byte pitch check on the activations * Implemented fused gate/up kernel One launch computes up * act(gate) for both FFN weights, reading the activations once and applying SWIGLU or GEGLU in the epilogue. It covers up to 16 columns and works for all six XMX types. * Removed the temporary XMX_NOGLU environment switch * Q2_K min-sum optimization Q2_K weight is d·scl·q − dmin·mc, where scl (the 4-bit scale) and mc (the 4-bit min code) apply to each half of a 32-weight group * Added dispatch check and GRF sweep tg128 on Q4_K_M goes from 26.67 to 28.23 tok/s on the B70 (+5.9%). Q6_K is unchanged. MUL_MAT passes 1727/1727 and MUL_MAT_VEC_FUSION 1361/1361. Perplexity at batch 1 is 5.2064 with XMX and 5.2058 without. * Renamed variables * Added 2 environment variables GGML_SYCL_XMX_MAX_COLS (default 80, any value 0 or higher) and GGML_SYCL_XMX_GLU_MAX_COLS (default 16, range 0 to 16): the largest batch for the fused gate/up kernel. It is clamped to 16 because that is the most the fused kernel is compiled for, so the variable can only lower it. * Update esimd.hpp 1. All five quant structs were repeating the same boilerplate, so I moved it into shared pieces. 2. A new helper xmx_term does one DPAS, converts it to float and scales it per row. The four branches are now one or two lines each, and the shared Cb += z * d8r is written once. The refactor passes all three op tests. MUL_MAT_VEC_FUSION is 1369/1369, MUL_MAT is 2281/2281 (the count includes your uncommitted f32 tests) and MUL_MAT_ID is 937/937.
qwen4exp published the hc-wide residual [n_embd, hc, n_tokens] as t_layer_inp, but the drafter reads layer inputs as [n_embd, n_tokens] rows: llama_context sizes each embd_layer_inp buffer as n_embd * n_batch and the DFlash encoder input is n_extract * n_embd wide. Evaluating a DFlash draft over a qwen4exp target therefore aborts on the first request in llama_context::extract_layer_inputs. Collapse the streams with a plain mean before exposing them, as deepseek4 already does for its hyper-connection residual, and build the mean only for the layers a drafter actually requested. Assisted-by: pi:llama.cpp/ggml-org/Qwen3.8-Flash-Next-GGUF (MacBook, M5 Max, 128GB)
* glm5 : avoid sel_mask_2d input * cont : avoid new_pool_flat input
Signed-off-by: tc-mb <tianchi_cai@icloud.com>
* opencl: add Adreno depthwise conv2d Assisted-by: OpenCode * opencl: use local program for depthwise conv2d Assisted-by: OpenCode * opencl: use singed type for args --------- Co-authored-by: Li He <lih@qti.qualcomm.com>
…l-org#30994) * server: realtime API: send complete after committed audio drains * server: realtime API: complete a commit at its end row Completion is triggered when the stream runs dry, which is a timing proxy: audio appended while the tail drains leaks into the committed item, a final commit before the drain merges both items, and back to back commits collapse into one. mtmd_audio_stream_flush() records the row count at the end of the flushed audio (mtmd_audio_stream_get_n_rows_flushed), next to the rows produced so far (mtmd_audio_stream_get_n_rows). The slot keeps a FIFO of these end rows and completes each commit once every row up to it is decoded. --------- Co-authored-by: Pascal <admin@serveurperso.com>
Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
…l-org#30684) Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
…INARY_NX` (back-to-back ADDs, etc) (ggml-org#30843) * hex-fusion: support for GELU+MUL, REPEAT+GET_ROWS and BINARY_NX (back-to-back ADD/MUL/...) * hex-fusion: factor out fusion logic into separate .h and .cpp and update all related code * hex-fusion: allow for RMS_NORM+MUL fusions for non-contig tensors * hex-fusion: streamline fusion eligibility checks and cover missing corner cases * hex-fusion: streamline fusion flow * hex-opbatch: make n_tensors limit more scalable * hex-bufs: adjust the trace buff sizing * hex-glu: cleanup glu-ops interfaces and add kernel_params * hex-kparams: clean up kparams handling in unary, ssm-conv, and other ops * hex-kparams: update the rest of the ops PAD,DIAG,... to use kparams * hex-unary: add support for collapsing dims * hex-ops: cleanup redundant runtime checks * hex-ops: consistent use of kernel_type in all kparams * hex-fusion: remove redundant check in gdn+cpy * hex-fusion: further streamlining of fusion rules and code * hex-fusion: cleanup naming * hex-opfmt: cleanup op formatting * hex-fusion: bump fusion lookahead to 64 * hex-fusion: fuse SSM_CONV+SILU * hex-fusion: fix hvx register spills in fused ssm_conv+silu * hex-fusion: add more GLU fusions * hex-fusion: remove duplicate checks and use ggml-common helpers * hex-kparams: refactor kparams into htp-kparams.h/cpp * hex-fusion: fix binary-nx fusion regression * hex-kparams: another pass at cleaning up kparams (removing unused, etc) * hex-kparams: streamling nameing and move _check_ wrappers into .h * hex-kparams: templetize htp_kparams_check_<op> to reduce code bloat * hex-ops: de-duplicate op dispatch switches * hex-kparams: trim down exposed kparams calls * hex-kparams: simplify type casting of kparams structs * hex-fence: de-dup fence tensor construction * hex-opbatch: simplify tensor shape init/checks * hex-mm: cleanup leftovers of the original QK defines * hex-fa: fix stack overflow on older npu firmware * hex-ctx: move dma_caches into ops_ctx
* vocab : fix Nemotron-3.5-Embed tokenization * Update src/llama-vocab.h Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co> * rename * Update src/llama-vocab.cpp Co-authored-by: Daniel Bevenius <daniel.bevenius@gmail.com> --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co> Co-authored-by: Daniel Bevenius <daniel.bevenius@gmail.com>
* spec : add probabilistic sampling for DFlash2 drafts * spec : apply review suggestions --------- Co-authored-by: Pranesh Gonegandla <pgonegandla@nvidia.com>
* remove python from tests * add behavior and backend ctest labels * add behavior check workflow [no ci]
* fix time overflow * use double
Run npm audit fix, then bump the remaining vulnerable packages within their current majors: storybook 10.6.2, vitest 4.1.12, vite 7.3.7, @modelcontextprotocol/sdk 1.32.1, dompurify 3.4.17, mermaid 11.17.2, @vite-pwa/assets-generator 1.0.4 and @tailwindcss/typography 0.5.20. Override katex to 0.18.11 and postcss-selector-parser to 7.1.6 since their dependents still pin vulnerable ranges, bump the sharp override to 0.35.5, and pin @storybook/svelte so npm does not resolve the 11.0 alpha through the addon-svelte-csf peer range. Storybook stays on 10.6.2 as 10.6.3 is newer than min-release-age. Assisted by: Claude (Opus 5.5 Medium)
* hex-ceil: add CEIL(f32) op * hex-ceil: add f16 version * hex-ops: update supported ops * hex-ops: update docs with supported ops
Signed-off-by: Adrien Gallouët <angt@huggingface.co>
* qwen4exp : build the QSA selection without the kq_mask * clean * lang * qwen4exp : reshape the fused QSA selection to the kq_mask streams ggml_top_k_mask with a single keep row returns [n_kv, n_tokens], while build_attn_qsa expects the kq_mask layout [n_kv, n_tokens/n_stream, 1, n_stream]. With several streams the shape assert failed at graph reserve. * test the QSA optimization * reword * update build_fused_top_k_mask instead of handwiring * simplify * keep il at the end for consistency
* Correctly gate immintrin.h inclusion when building with clang-cl and avx512bf16 * ggml : explicit vector casts for clang-cl
* jinja: implement map('filter')
* jinja : validate filter keyword arguments
Assisted-by: Codex
ggml-org#31326) * ui: don't reload a loading model on select, prefer it in pre-selection Assisted-by: Claude (Opus 5.5 Medium) * ui: skip hidden models in automatic model selection Assisted-by: Claude (Opus 5.5 Medium) * ui: don't count a model being unloaded as loading Assisted-by: Claude (Opus 5.5 Medium)
…rg#31314) * ui: show interrupted state for tool calls that never returned The chat-level streaming flag was applied to every assistant message, so a tool call left without a result in an earlier message kept spinning while a newer reply streamed. Scope streaming to the last assistant message and mark finished calls without a result as interrupted. Assisted-by: Claude (Opus 5.5 Medium) * ui: mark a shell command stopped before any output as interrupted exec_shell_command creates its result message before running, so stopping it mid-run leaves an empty result instead of none. Assisted-by: Claude (Opus 5.5 Medium)
…#31304) A message queued while a conversation was busy was re-sent through sendMessage, which targets the active conversation, so switching chats before the turn ended delivered it into the wrong one. Re-send only when the owning conversation is active; otherwise keep it queued there and flush it when that conversation is opened again. Assisted-by: Claude (Opus 5.5 Medium)
…31312) Use the popover background, softer border, rounded-xl corners and shadow-md like dropdowns, hover cards and the settings dialog, and match the dialog title line height. Assisted-by: Claude (Opus 5.5 Medium)
The router only removes models it took from the Hugging Face cache, but the models manager offered "Delete from disk" for every model, so a model from --models-preset or --models-dir failed with a "not removable" toast. Read the source and can_remove fields of /models and show the delete action disabled for those models, with a tooltip (a hint line in the mobile drawer) saying how to remove them instead. Assisted-by: Claude (Opus 5.5 Medium)
* sycl: fold q8_0 reorder dmmv into the generic template * sycl: template the dmmv non-K launchers * sycl: template the dmmv K-quant launchers
…#30956) * Update ggml-sycl.cpp Increases -sm tensor prompt eval t/s by +19% with zero PPL change. * Update ggml-sycl.cpp Replace first pair of wait() calls with ext_oneapi_submit_barrier(). The wait() calls was discovered to cause MTP degradation. * Update ggml-sycl.cpp Adding comm_exchange function pointer to switch between 2 and 4 buffer ggml_sycl_comm_exchange versions @ initialization time (versus hot path) controlled by SYCL_ENABLE_DEFAULT_CONTEXTS=1 setting. * Update ggml-sycl.cpp adding back 2nd half of 4-buffer free. * Update ggml-sycl.cpp Removing extra whitespace. * Update ggml-sycl.cpp Excluding Windows until it is validated on Windows.
* vulkan: avoid redundant scans when zeroing skipped rows * vulkan: remove unreachable zero-expert fallback
…g#30146) * vulkan: improve small-n split-K selection on RDNA3 and RDNA4 * Clean up test cases by removing commented code Removed tests as requested
* vulkan: add tensor-parallel all-reduce communication * vulkan: require shared semaphores for tensor communication Assisted-by: Codex * vulkan: reduce directly from shared host buffers Assisted-by: Codex * vulkan: fix ring all-reduce races with 3+ devices Two hazards in the tensor-parallel ring all-reduce made -sm tensor output non-deterministic with three GPUs: - With n = 3, step t's host-slot region starts at t * cels * 2 bytes, which is not a multiple of 32, so consecutive steps' transfer copies share a 32-byte sector of the imported host memory. On NVIDIA the later copy's leading bytes (up to 10 F16 values at the start of every chunk) end up stale in host memory, even when the copies are ordered by a semaphore. Give every step its own 256-byte-aligned region. n = 2 and n = 4 already had aligned regions for the usual sizes, so their layout is unchanged. - A single-shot all-reduce leaves every device's host slot being read by all peers, but the next ring round only ordered its first transfer after nextd, and only from round 2 on. With n >= 3 a device could overwrite its slot while prevd was still summing it. Wait for all peers on the first ring round after a single-shot all-reduce. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * vulkan: fold the tensor-parallel all-reduce into the compute submissions With -sm tensor the meta backend drives every device from one thread and calls graph_compute once per subgraph (two per layer), so decode was bound by the CPU cost of submitting, not by the GPUs: ~1500 vkQueueSubmit per token for a 64-layer model on two GPUs, with the GPUs idle ~40% of the time. - Don't split subgraphs by flops while a communicator is active. The heuristic was tuned for whole graphs and turned each small subgraph into ~5 submits. - Fold the small (single-shot) all-reduce into the compute submissions: the last command buffer of a subgraph stays open, the all-reduce appends the gather copy to it and submits it, then opens the next command buffer with the peer waits and the reduce, which the next subgraph is recorded into. Each subgraph now costs one submit per device. The reserved progress value is attached by whichever path submits the open context. - Alternate between two host slots, placed outside the ring's regions, so the gather no longer needs a WAR wait on the peers' previous reduce. - On synchronize, submit the deferred work of every device in the group first, so the tail of the graph runs on all devices in parallel. - Wait for the transfer queue as well as the compute queue before freeing or reallocating communication buffers, and don't leave a stale cap behind when a reallocation fails. qwen3.5 27B Q8_0 on RTX 4090s, tg128: 2 GPUs 32.2 -> 49.7 t/s, 3 GPUs 20.9 -> 40.0, 4 GPUs 15.0 -> 27.6; pp512 on 2 GPUs 2138 -> 2320. Greedy output is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * - Two-phase all-reduce over shared host memory: write own slot + signal, wait peers + add from their slots - One exported timeline per device, no backend hooks; comm work recorded in the backend compute ctx - F16 wire above 1 MiB, F32 below; small reductions ride with the next graph submit - Double-buffered, grow-only host slots; zero-size splits zeroed - Remove ring, transfer-queue leg, device staging, shrink, Windows shims - comm_init returns nullptr when unsupported; add GGML_VK_COMM_DISABLE - No flops-based submit splitting for graphs below 1 GFLOP [rebased onto the ring all-reduce fix and the folded all-reduce, which this design replaces; their backend hooks are removed here] * add minimal submit split size * replace opaque_fd with sync_fd for spec compliance * add precision check * add semaphore pool * rename env var, add logging if requirements not met * reduce comments * code improvements * vulkan: use posix_memalign for the tensor-parallel host buffers std::aligned_alloc is unavailable on Android bionic below API 28, which upstream switched away from in ggml-org#30828; do the same for the communicator's host slots. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * vulkan: synchronize the tensor-parallel all-reduce through the host Exchanging SYNC_FD semaphores costs a kernel wake-up on every all-reduce: on NVIDIA the waiting GPU starts ~35 us after its peer has finished, which is most of the idle time in a decode step. OPAQUE_FD semaphores avoid that but must not be imported into another physical device. Use only device-local timeline semaphores instead. Each device signals done[i] once its partial sum is in host memory (after a barrier that makes it available to the host), and a bridge thread signals go[i] from the host once all peers of i are done. The waiting side makes the host memory visible with a host-write barrier, since its submit predates the data. The thread spins for up to 200 us on each wait (GGML_VK_ALLREDUCE_SPIN_US) and then blocks, so it is idle when there is no work. This also takes the per-round fd export, dup and import calls off the main thread and drops the VK_KHR_external_semaphore_fd requirement and the binary semaphore pool. Graphs below 1 GFLOP, such as tensor-parallel decode slices, are no longer split into several submits. qwen3.5 27B Q8_0 on RTX 4090s, tg128: 2 GPUs 37.2 -> 45.4 t/s, 3 GPUs 24.1 -> 35.5, 4 GPUs 16.5 -> 27.1; pp512 unchanged. Greedy output is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * use sync_fd on mesa drivers * refactor for readability * move sync_fd semaphore handling to thread, trigger mesa submit threads * move allreduce functions to new cpp file * clean comments * smaller fixes, code improvements --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Ruben Ortlam <rortlam@redhat.com>
…tforms (ggml-org#31437) * ggml : use `vm_allocate` instead of `posix_memalign` on iOS * ggml : use vm_allocate on all Apple platforms, run test-host-buffer-release by default
Signed-off-by: Aaron Teo <aaron.teo1@ibm.com>
ggml-org#31249) The note under 'Run the inference' still said that the CANN backend only supports FP16/Q4_0/Q8_0 models, while the DataType table in the same file, and ggml-cann.cpp (BF16 is enabled for MUL_MAT, GET_ROWS, CPY and CONT for every non-310P device), say otherwise. Spell out the per-device support and mark BF16 as unsupported on 310P instead of leaving the cell empty. GGML_CANN_NO_PINNED is read by ggml-cann.cpp when allocating host buffers and when advertising the host_buffer device capability, but it was not documented, so the escape hatch for a failing pinned host allocation was not discoverable. Signed-off-by: li-lizhe <147392333@qq.com>
…ggml-org#29510) * llama : use llm_attn_mask and kv_rows for unified attention Assisted-by: dsh:llama.cpp/ggml-org/DeepSeek-V4-Flash-Vision-Exp-GGUF (Mac Studio, M2 Ultra, 192GB) Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> * cont : optimize `get_seq_cells` * llama : build the kv_rows lists from per-sequence cell bitmaps Keep a bitmap over the cells for each sequence (the transpose of `seq`), updated in seq_pos_inc/dec, and build the cell lists by walking its set bits. The lists stay in cell order, cells shared by several sequences go to every list, and nothing has to be rebuilt when cells are removed. Also leave out of the lists the cells that the SWA hides from every token of the slice (standard and chunked SWA). * cont : make get_kv_rows_p_min private * cont : minor metal * llama : use kv_rows for every ubatch of a unified cache A ubatch made of equal-length runs with a single sequence each (f.ex. the drafts of several slots) now splits into per-sequence slices. Any other ubatch (interleaved, uneven or coupled sequences) becomes a single slice over the cells of all its sequences instead of falling back to the dense KQ mask, so the graph keeps the topology of the reserved graph. * llama : merge get_kv_rows_seq_ids and get_kv_rows_p_min into get_kv_rows_slices Assisted-by: dsh:llama.cpp/ggml-org/GLM-5.3-Flash-GGUF (Mac Studio, M5 Ultra, 256GB) --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
* model : add AR-only Clover MoE support Add GGUF conversion, model loading, and causal hybrid attention for Clover, reusing shared attention, recurrent-state, MoE, and LoRA helpers. * Update tests/test-llama-archs.cpp Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co> * convert : filter Clover tensors using filter_tensors * clover : use the standard ssm_a tensor name --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@huggingface.co>
…#31429) * feat: support PocketTTS voices with no voice cloning The kyutai/pocket-tts-without-voice-cloning weights ship predefined voices as the backbone KV state after the voice prompt. The converter turns each state back into the prompt embeddings and stores them in the mmproj (voice.<name>), the zeroed voice encoder is left out, and the "voice" field of /tts and --tts-voice select one of them. A speaker reference is rejected when the model has no voice encoder. Assisted-by: Claude Fable 5.1 * convert : pocket-tts voices never fail the conversion, log the drift of the state The voice states shipped by Kyutai are not always the ones the pack's weights give for the prompt: italian, german and spanish match within the bf16 rounding, english_2026-04 is 2% off and french 20% (its layer 0 state comes from other weights), while the reference loads them as is and they still sound like the same voice. The converter now re-prompts the backbone with the recovered embeddings, compares the whole state and logs the distance per voice, warning above 5%. A state that does not belong to the weights at all is skipped, so the packs of kyutai/pocket-tts convert too. Assisted-by: Claude Fable 5.1 * mtmd : list the predefined voices, expose them in GET /props mtmd_gen_audio_info gains n_voices and mtmd_gen_audio_voice_name() the names, with the voices worded as a feature of any audio generation model. The server lists them under "voices" in /props when the model ships some. Assisted-by: Claude Fable 5.1 * server : an unknown voice is a bad request A model with predefined voices answers 400 naming the voice instead of 500 "failed to process TTS prompt". A model without them ignores "voice" with a warning, as the other audio generation models do. Assisted-by: Claude Fable 5.1 * refactor api * fix conversion * small renaming * fix lint * tts : a model with predefined voices speaks with the first one by default Without a voice prompt such a model only produces near silence. When neither a voice nor a speaker reference is given, llama-tts and the server now take the first predefined voice and say so in the log, as the LFM3-Audio template does with its default voice. Assisted-by: Claude Fable 5.1 * mtmd : one comment per voice accessor, converter states the rule only The clip.h comment described clip_gen_get_voice but sat above all three functions; the converter comment quoted the drift measured per pack, which goes stale with the next upload of the weights. Assisted-by: Claude Fable 5.1 * clean up redundant code and comments * mtmd: match the LFM3-Audio voice name case-insensitively The tts chat template lowers the voice name, so Male speaks with the male voice; the voice lookup lowers it the same way and names the bitmap after the canonical voice. --------- Co-authored-by: Xuan Son Nguyen <son@huggingface.co> Co-authored-by: Pascal <admin@serveurperso.com>
Signed-off-by: Aaron Teo <aaron.teo1@ibm.com>
Co-Authored-By: Claude Code <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge upstream master through
29c720eaf(423 commits).Preserve the fork README and
GGML_HIP_UNSAFE_MATHdefault OFF. Includes vision fix7bd180830.Validation with ROCm 10.1.0a20260822 on gfx1151:
Not tested: gfx1150/gfx1153 or full performance parity.
CLI compatibility:
--no-mmapis replaced by--load-mode none.Generated with Claude Code