gallery: group QAT, APEX and cross-backend builds under their base entry#10983
Merged
Conversation
Second variant-grouping sweep. QAT and APEX builds are now treated as quantization techniques rather than distinct weights, per maintainer ruling, so they group with their base entry instead of standing alone. Adds 15 new families: quantization and serving-config pairs for llama-3.2-1b/3b-instruct, dolphin-2.9-llama3-8b, phi-2-chat, ideogram-4, meta-llama-3.1-8b-instruct, omnivoice-cpp and qwen3-tts-cpp; the gemma-3 4b/12b/27b QAT families; and three cross-backend pairs (silero-vad plus its sherpa-onnx build, and the vibevoice TTS and ASR builds shared between the vibevoice-cpp and crispasr backends). The cross-backend pairs are the first entries that meaningfully exercise engine-preference ranking during auto-selection. Restructures four gemma-4 families (31b-it, 26b-a4b-it, e2b-it, e4b-it). Those bare entries were skipped by the first sweep, which left a QAT build as parent by default. The bare entry is what installs when nothing else fits, so it reclaims the parent slot and the former parent becomes a plain target. Every pre-existing relationship is preserved; nothing is dropped and nothing nests. gemma-4-12b-it has no bare entry, so it is left as is. qwen3-tts-cpp is a YAML anchor with nine merging children, so the five children that did not already override variants get an explicit empty list to stop them inheriting the parent's. Abliterated builds stay excluded: abliteration edits the weights to remove refusal behaviour, which makes them a different model rather than another build of the same one. Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
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.
What this does
A second pass over the gallery grouping alternative builds of the same model under a single entry, following #10943 which added the mechanism.
63 entries now declare variants, covering 90 targets, up from 52 and 62. Only
gallery/index.yamlchanges: 46 insertions, 8 deletions.Two rulings that reverse the first sweep
The first sweep excluded QAT and APEX builds, on the theory that quantization-aware training and APEX produce genuinely different weights. They are quantization techniques over the same weights, so they belong with their base. That correction is most of this diff.
Not extended to
-abliterated, of which six exist with base siblings. Abliteration modifies the weights to remove refusal behaviour, so it is a different model, consistent with the already-excludedheretic-uncensoredfinetunes.What was grouped
Quantization and config pairs
dolphin-2.9-llama3-8b+:Q6_K·phi-2-chat+:Q8_0·ideogram-4-iq4nl-ggml+-q8_0-ggml·llama-3.2-1b-instruct:q4_k_m+:q8_0·llama-3.2-3b-instruct:q4_k_m+:q8_0·meta-llama-3.1-8b-instruct+:grammar-functioncall+:Q8_grammar-functioncallThe
:suffix is LocalAI's own convention for a config variant of the same weights, and was missed entirely by the first sweep, which grouped on name prefixes.Gemma, now that QAT counts
New:
gemma-3-4b-it,gemma-3-12b-it, andgemma-3-27b-it(three members, includinggoogle-gemma-3-27b-it-qat-q4_0-small) each gain their QAT build.Restructured:
gemma-4-26b-a4b-it,gemma-4-31b-it,gemma-4-e2b-itandgemma-4-e4b-ithad a QAT build acting as parent because the bare entry was excluded. The bare entry now takes over, per the rule that the parent is the bare-named entry when one exists. No existing variant relationship was dropped, and nothing was renamed or re-pointed.APEX
gemma-4-26b-a4b-it-apexandqwen3.6-35b-a3b-apexjoin their bases.qwen3.5-35b-a3b-apexandnemotron-3-nano-omni-30b-a3b-reasoning-apexhave no base entry and stay standalone.Cross-backend pairs
silero-vad+silero-vad-sherpa·vibevoice-cpp+vibevoice-tts-crispasr(TTS) ·vibevoice-cpp-asr+vibevoice-crispasr(ASR)These matter out of proportion to their number: almost nothing in the gallery previously exercised the engine-preference ranking added in #10943. TTS and ASR are kept strictly separate, verified by model filename rather than by name.
Gaps closed
omnivoice-cpp+-hq(Q8_0 vs BF16, the same shape as the already-groupedmoss-tts-cpp-v1_5andced-*pairs) andqwen3-tts-cpp+-0.6b-base-q4, which the first sweep missed only because the parent is namedqwen3-tts-cpprather thanqwen3-tts-cpp-0.6b-base, while four identical pairings in the same family were caught.Deliberately not grouped
whisper-1andwhisper-basehave an identical sha256 onggml-base.bin, so this is an alias rather than an alternative build. Grouping would hide the name OpenAI-compatible clients literally send, and ranking would have no basis to choose between them since fit, engine, feature and size are all equal. Worth addressing as an aliasing question, separately.-abliteratedpairs, as above.mistralai_mistral-small-3.1-24b-instruct-2503+-multimodal.gemma-3-270m-it-qatandgemma-3-1b-it(no siblings), the3nentries (different architecture), and all finetunes.One claim that did not survive checking
The
vibevoiceASR pair was expected to be byte-identical. It is not: same filename, different uploaders, different sha256 (mudler/...vscstr/...). They are two independent q4_k conversions of the same source. Still alternative builds of the same weights, so still grouped, but the stronger claim was wrong. Thesilero-vadpair genuinely is byte-identical.Merge anchor hazard
qwen3-tts-cppdefines&qwenttscpp_gallerywith nine merge children. Four already overridevariants; the other five would have inherited the new list, producing one self-reference and four nesting violations. Each got an explicitvariants: [], matching the neighbouring&mossttscpp_galleryprecedent. Every other touched entry was verified to be a plain list item.Verification
Independently re-parsed: 1274 entries, 63 parents, 90 targets, with no duplicate target, no nesting, no self-reference, no missing target, and every target independently installable. A resolved-entry diff confirms the entry set is unchanged and every non-
variantsfield is byte-identical, with only the intended entries changing.core/gallery314 passed / 9 skipped,core/http/routes50 passed,make lint0 issues.Assisted-by: Claude:claude-opus-4-8 [Claude Code]