sync: Muse Glimmer converter, k-quant passthrough and mmproj bundling - #47
Merged
Conversation
Open-core sync for 0.2.2, computed by tools/sync_public.py (allow-list; tuned quant profiles stay private). CONVERTER - base-arch: new muse_glimmer mapper (HF + GGUF), including the perception tower's canonical `vision.*` naming. The HF and GGUF name tables are pinned to agree by test, so a bundle built from either source is interchangeable. - base-convert: `--kquant-passthrough` copies GGUF Q4_K/Q5_K/Q6_K super-blocks in verbatim (lossless — no dequant/repack round trip), and `--mmproj` folds a companion mmproj GGUF's vision tower into the same bundle, so a GGUF-sourced build is no longer text-only. - base-format: reader support for the above. CATALOG Two rows for basecompute/Muse-Glimmer-30B so `basert pull` resolves it: `default-kquant-dynamic` (what a bare pull gets) and `kquant-17gb`. Both carry real size + sha256; fetch verifies and bails on mismatch. The weights are published at huggingface.co/basecompute/Muse-Glimmer-30B. DELIBERATELY EXCLUDED: the header and binding mirrors. `embed_norm_eps` widens BaseRTModelConfig from 1540 to 1704 bytes. The rust-sys ABI job links the LATEST ENGINE RELEASE (v0.2.1) and compares it against the in-tree mirror, so syncing the headers before a matching engine release fails by construction — 1540 from the binary vs 1704 from source. That half has to follow the 0.2.2 engine release, not lead it. Nothing here touches the ABI: base-convert is pure Rust and links no engine. Verified in this tree: base-convert builds clean and its 23 test suites pass.
prabod
force-pushed
the
sync/muse-glimmer-kquant-0.2.2
branch
from
August 12, 2026 03:23
1b43516 to
780a8c6
Compare
`basert pull basecompute/Muse-Glimmer-30B` failed with no pre-converted .base for quant "q4" in this repo; it offers: 17gb, dynamic A bare pull requests "q4", and the catalog row is only served when the requested bits match. `quant_bits` scans for `q` followed by a digit, so `kquant-dynamic` yielded None — the `q` there is followed by `u` — and resolution fell through to matching by filename tag. These files are named after the upstream GGUFs, whose tags are "dynamic" and "17gb". Renamed the variants to `default-q4k-dynamic` / `q4k-17gb`, which scan to "q4". Only the catalog's variant ids change; the published artifacts are untouched. A test now asserts every catalog quant exposes its bit width. Also carries BASERT_VERSION_PATCH 2. Still no header or binding mirrors — those must follow the 0.2.2 engine release, not lead it.
Version strings only — package.json, setup.py, the two Cargo manifests and BASERT_VERSION_PATCH — so the published packages carry the release they belong to. No struct or signature changes. The header and binding MIRRORS are still deliberately held back: embed_norm_eps widens BaseRTModelConfig from 1540 to 1704 bytes, and the rust-sys ABI job links the latest ENGINE RELEASE (still v0.2.1) to compare against the in-tree mirror. Syncing them before that release exists fails by construction. They follow the 0.2.2 engine release, not lead it.
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.
Open-core sync for 0.2.2, computed by
tools/sync_public.py(allow-list — tuned quant profiles stay private).Without this the public tree cannot build the bundles 0.2.2 is about, and
basert pull basecompute/Muse-Glimmer-30Bcannot resolve at all: the catalog is served from this repo'smain.Converter
muse_glimmermapper (HF + GGUF), including the perception tower's canonicalvision.*naming. The HF and GGUF name tables are pinned to agree by test, so a bundle built from either source is interchangeable.--kquant-passthroughcopies GGUF Q4_K/Q5_K/Q6_K super-blocks in verbatim (lossless: no dequant/repack round trip).--mmprojfolds a companion mmproj GGUF's vision tower into the same bundle, so a GGUF-sourced build is no longer text-only.Catalog
Two rows for
basecompute/Muse-Glimmer-30B:default-kquant-dynamicmuse-glimmer-30B-kquant-dynamic.basekquant-17gbmuse-glimmer-30B-kquant-17gb.baseCatalog::findreturns the first row for an id, so a barepullgets the dynamic build. Both rows carry real size + sha256; fetch verifies and bails on mismatch. Weights are already published at basecompute/Muse-Glimmer-30B (public, Apache-2.0).Headers / bindings
embed_norm_epsplus the Muse Glimmer config fields, mirrored across the C header and the Swift/Rust/Python/Node copies. These are one ABI struct; the mirrors were verified field-for-field and in order againstinclude/baseRT/types.h.Verification
base-convertbuilds clean in this tree and its test suites pass. The corresponding internal work is basecompute/baseRT-internal#302 (merged) and #301.