buley commited on
Commit
7158cc1
Β·
verified Β·
1 Parent(s): 9cab64a

Add model card

Browse files
Files changed (1) hide show
  1. README.md +153 -0
README.md ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: other
3
+ license_name: set-before-distribution
4
+ pipeline_tag: image-text-to-text
5
+ tags:
6
+ - multimodal
7
+ - vision-language
8
+ - knot
9
+ - gnosis
10
+ - fat-station
11
+ - sovereign-inference
12
+ - cloudflare-containers
13
+ library_name: gnosis-distributed-inference
14
+ ---
15
+
16
+ # Muse-Glimmer-30B
17
+
18
+ **Muse-Glimmer-30B** is a ~30B-parameter multimodal (vision-language) model distributed in
19
+ the sovereign **`.knot`** format and served by the [Gnosis](https://forkjoin.ai)
20
+ `fat-station` inference runtime. It pairs a Qwen2.5-VL-class perception encoder with a
21
+ Qwen3-class dense text decoder, and is designed to run **CPU-only, scale-to-zero** on
22
+ commodity edge compute (e.g. Cloudflare Containers) with no GPU and no fixed cost.
23
+
24
+ > **License note:** `license: other` is a placeholder. Set the correct license and
25
+ > base-model attribution before wide distribution β€” this card does not assert one.
26
+
27
+ ## Files
28
+
29
+ | File | Role | Notes |
30
+ |---|---|---|
31
+ | `muse-glimmer-30b.knot` | Text decoder | 52-layer dense transformer |
32
+ | `muse-glimmer-30b-mmproj.knot` | Vision encoder + projector | CLIP ViT + 3-layer GELU projector β†’ text hidden space |
33
+
34
+ The `.knot` format is the Gnosis distributed-inference container format: a
35
+ streamable, sharded, tensor-cache-friendly package (quantized weights are demand-streamed
36
+ from object storage and held resident per-shard). It is **not** GGUF or safetensors.
37
+
38
+ ## Architecture
39
+
40
+ ### Text decoder (`muse-glimmer-30b.knot`)
41
+ Qwen3-class dense transformer:
42
+
43
+ | Field | Value |
44
+ |---|---|
45
+ | Layers | 52 |
46
+ | Hidden size | 6656 |
47
+ | Attention | GQA β€” 32 query / 2 KV heads, head_dim 128 |
48
+ | Normalization | RMSNorm + **QK-norm** (per-head query/key norm) |
49
+ | Attention gate | **output gate** β€” `attn_out *= sigmoid(x @ attn_gate)` before `o_proj` |
50
+ | FFN | SwiGLU |
51
+ | Vocabulary | 202048 |
52
+ | RoPE ΞΈ | 500000 |
53
+ | Image token id | 200092 (placeholder positions spliced with vision embeddings) |
54
+
55
+ ### Vision encoder (`muse-glimmer-30b-mmproj.knot`)
56
+ Qwen2.5-VL-class CLIP ViT + projector:
57
+
58
+ | Field | Value |
59
+ |---|---|
60
+ | Layers | 50 |
61
+ | Hidden size | 1536 |
62
+ | Heads | 16 (head_dim 96) |
63
+ | Input | 896Γ—896, patch 14 β†’ 4096 patches |
64
+ | Position | 32Γ—32 learned embeddings, bicubic-interpolated |
65
+ | Attention | 2D-RoPE (ΞΈ 10000), window/full pattern `[w, w, w, f]` |
66
+ | Spatial merge | 2Γ—2 |
67
+ | Projector | 3-layer GELU MLP: 6144 β†’ 4096 β†’ 4096 β†’ **6656** (into the text hidden space) |
68
+
69
+ ### Quantization
70
+ - **Q4_K / Q6_K** β€” attention & FFN weights
71
+ - **F32** β€” token embeddings, norms, biases, and the full vision projector
72
+
73
+ ## Intended use
74
+
75
+ Multimodal understanding β€” describe / reason about images, and vision-grounded text
76
+ generation β€” on sovereign, GPU-free infrastructure. The perception encoder emits dense,
77
+ image-sensitive `[n_tokens Γ— 6656]` embeddings that splice directly into the text decoder's
78
+ hidden space at `image_token_id` positions.
79
+
80
+ ## Serving
81
+
82
+ Served natively by `fat-station` (Rust HTTP inference). Two deployment shapes:
83
+
84
+ - **Single container** (`role=both`) β€” one box serves `/embed`, `/forward`, `/lm-head`,
85
+ `/tokenize`, `/generate`, `/detokenize`.
86
+ - **Sharded mesh** β€” the 52 decoder layers split across N containers (entry / mid / exit),
87
+ coordinated over a lightweight `/embed β†’ /forward β†’ /sample-next` protocol.
88
+
89
+ Vision:
90
+ ```
91
+ POST /glimmer-vision-embed
92
+ { "pixels": [<CHW f32, normalized>], "grid_h": H, "grid_w": W }
93
+ β†’ octet-stream [n_tokens Γ— 6656] f32 embeddings
94
+ ```
95
+
96
+ Text (OpenAI-compatible, via the `aeon-openai-adapter` front):
97
+ ```
98
+ POST /v1/chat/completions
99
+ { "model": "muse-glimmer-30b", "messages": [...], "stream": true|false }
100
+ ```
101
+
102
+ ### Operational notes
103
+ - **`KNOT_HTTP_PIN_ALL=0`** for the vision encoder and for text shards β€” pinning the full
104
+ vision weights resident dequantizes to ~10 GB f32 and OOMs; stream instead.
105
+ - Text shards benefit from a resident **quantized** tensor cache
106
+ (`KNOT_HTTP_TENSOR_CACHE_CAPACITY`) so warm tokens skip re-streaming.
107
+
108
+ ## Performance (measured, CPU)
109
+
110
+ On a 4-shard mesh of scale-to-zero Cloudflare Containers (4 vCPU / 12 GiB each):
111
+
112
+ | Path | Warm | Notes |
113
+ |---|---|---|
114
+ | Text generation | ~3.0 s/token | down from ~42 s/token via resident tensor cache + on-device sampling (~14Γ—) |
115
+ | Vision embed | ~1.5–2.2 s | with a dequantized-weight cache (~25Γ— over cold) |
116
+ | Cold start | ~160 s | full weight stream on wake (accepted tradeoff for scale-to-zero) |
117
+
118
+ Numbers are latency on CPU edge compute, not throughput benchmarks; there are no GPU or
119
+ accuracy benchmarks in this card.
120
+
121
+ ## Limitations & status
122
+
123
+ - **Vision encoder**: admission-gated β€” proven to produce finite, dense, non-degenerate,
124
+ **image-sensitive** embeddings (a gradient vs a checkerboard yield different outputs).
125
+ - **Text decoder**: functional after the attention-output-gate fix (distinct, non-degenerate
126
+ token sequences); a formal generation-quality admission gate is still pending. Treat text
127
+ generation as a **research artifact**, not a production-graded chat model.
128
+ - CPU-first design: high-quality but latency-bound (seconds/token), with multi-minute cold
129
+ starts under scale-to-zero.
130
+ - No safety tuning, RLHF, or content filtering is claimed. No training-data or provenance
131
+ disclosure is made here β€” set attribution and license before distribution.
132
+
133
+ ## Download
134
+
135
+ ```python
136
+ from huggingface_hub import hf_hub_download
137
+
138
+ text = hf_hub_download("forkjoin-ai/muse-glimmer-30b", "muse-glimmer-30b.knot")
139
+ vision = hf_hub_download("forkjoin-ai/muse-glimmer-30b", "muse-glimmer-30b-mmproj.knot")
140
+ ```
141
+
142
+ The knots are also mirrored on the Forkjoin object-storage plane for edge serving.
143
+
144
+ ## Citation
145
+
146
+ ```bibtex
147
+ @misc{muse_glimmer_30b,
148
+ title = {Muse-Glimmer-30B: a sovereign CPU-first vision-language model in the knot format},
149
+ author = {Forkjoin.ai},
150
+ year = {2026},
151
+ url = {https://huggingface.co/forkjoin-ai/muse-glimmer-30b}
152
+ }
153
+ ```