Image-Text-to-Text
MLX
Safetensors
English
Chinese
glm5_next
gbx-lm
apple-silicon
expert-paging
mixture-of-experts
multimodal
conversational
4-bit precision
Instructions to use GreenBitAI/GLM-5.3-Flash-4bit-paged with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use GreenBitAI/GLM-5.3-Flash-4bit-paged with MLX:
# Make sure mlx-vlm is installed # pip install --upgrade mlx-vlm from mlx_vlm import load, generate from mlx_vlm.prompt_utils import apply_chat_template from mlx_vlm.utils import load_config # Load the model model, processor = load("GreenBitAI/GLM-5.3-Flash-4bit-paged") config = load_config("GreenBitAI/GLM-5.3-Flash-4bit-paged") # Prepare input image = ["http://images.cocodataset.org/val2017/000000039769.jpg"] prompt = "Describe this image." # Apply chat template formatted_prompt = apply_chat_template( processor, config, prompt, num_images=1 ) # Generate output output = generate(model, processor, formatted_prompt, image) print(output) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Pi
How to use GreenBitAI/GLM-5.3-Flash-4bit-paged with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "GreenBitAI/GLM-5.3-Flash-4bit-paged"
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "GreenBitAI/GLM-5.3-Flash-4bit-paged" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use GreenBitAI/GLM-5.3-Flash-4bit-paged with Hermes Agent:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "GreenBitAI/GLM-5.3-Flash-4bit-paged"
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default GreenBitAI/GLM-5.3-Flash-4bit-paged
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use GreenBitAI/GLM-5.3-Flash-4bit-paged with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "GreenBitAI/GLM-5.3-Flash-4bit-paged"
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "GreenBitAI/GLM-5.3-Flash-4bit-paged" \ --custom-provider-id mlx-lm \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
File size: 8,362 Bytes
b87a09e d665bad b87a09e 26af35f b87a09e 562088b b87a09e 562088b 1cf5164 562088b b87a09e 1cf5164 d661569 1cf5164 d661569 1cf5164 70f2b59 1cf5164 13ef472 d661569 1cf5164 d661569 13ef472 d661569 13ef472 1cf5164 3ce9429 1cf5164 3ce9429 1cf5164 3ce9429 1cf5164 b87a09e 9434359 562088b 100862b a118554 3ce9429 a118554 3ce9429 a118554 562088b 3ce9429 562088b 7693666 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | ---
language:
- en
- zh
license: mit
base_model: pipenetwork/GLM-5.3-Flash-MLX-4bit
library_name: mlx
pipeline_tag: image-text-to-text
tags:
- mlx
- gbx-lm
- apple-silicon
- expert-paging
- mixture-of-experts
- multimodal
---
# GLM-5.3-Flash-4bit-paged
Expert-paged build of `pipenetwork/GLM-5.3-Flash-MLX-4bit`. The weights that are read a fraction at a time
live in their own containers, so a machine loads what it needs rather than all
of it.
| file | size | holds |
| --- | --- | --- |
| `model.safetensors` | 5.89 GiB | resident weights |
| `experts.bin` | 159.47 GiB | routed experts |
| `mtp/` | 3.90 GiB | draft head, off by default |
Total 169.27 GiB. Of that, 165.37 GiB is the source build, whose bytes moved into
These containers are not a format `mlx-lm` reads. The model runs on
**`gbx_lm`**, a single signed binary for Apple Silicon; there is nothing to
`pip install`.
containers rather than being copied, and 3.90 GiB is the draft head, which no
published build of this model carries.
## Requirements
**Mac**
| | |
| --- | --- |
| macOS | **15.0 or later** |
| chip | **Apple Silicon** (arm64). There is no Intel build. |
| Python | none -- the binary carries what it needs |
**Linux** (gbx-lm v0.8.1 or later)
| | |
| --- | --- |
| machine | **NVIDIA DGX Spark** (GB10). Other Linux machines are not supported yet. |
| system | arm64, glibc 2.39 or later (DGX OS / Ubuntu 24.04) |
| driver | an NVIDIA driver with CUDA 13 support. No CUDA toolkit is needed: the binary carries the CUDA libraries it uses. |
| Python | none |
On a DGX Spark (128 GB) the model does not fit, so its experts are paged from the SSD.
Memory is not a fixed figure for a paged build, and that is the point of one: it
fills what fits and streams the rest from disk. On a 512 GB Mac Studio with room
to spare this model settles at about **172 GB** resident. A smaller machine holds
less and reads more from disk -- slower, but it runs.
How much slower depends on how far the machine is from holding the experts, and
on how fast its disk is. Each token routes to a few experts; the ones already in
memory cost nothing to reach, and the ones that are not have to be read before
that token can finish. A machine holding most of them waits rarely, one holding
few waits often. We have not measured this across machine sizes and will not
guess a figure: what we can say is that the model answers either way, and that
the wait is the SSD's, not the model's.
## Install
```bash
# upgrading? clear the previous version's unpack directory first
rm -rf ~/.libra/cache/onefile/gbx_lm
# on a DGX Spark, use gbx_lm-linux-arm64.tar.gz in place of gbx_lm-darwin-arm64.tar.gz
curl -fL -o gbx_lm-darwin-arm64.tar.gz 'https://github.com/GreenBitAI/gbx-lm/releases/latest/download/gbx_lm-darwin-arm64.tar.gz' \
&& tar -xzf gbx_lm-darwin-arm64.tar.gz gbx_lm \
&& mkdir -p "$HOME/.local/bin" \
&& mv gbx_lm "$HOME/.local/bin/gbx_lm" \
&& chmod +x "$HOME/.local/bin/gbx_lm"
gbx_lm -h
```
The Mac build is signed with a Developer ID and notarised, so macOS runs it
without the usual detour for a downloaded binary.
**`command not found`** -- `$HOME/.local/bin` is not on your `PATH`:
```bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc # zsh
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bash_profile && source ~/.bash_profile # bash
```
**`Killed: 9`** (Mac) -- a previous version's files are still in the unpack directory,
and macOS refuses to mix two builds. Run the `rm -rf` line above, then try again.
## Run
```bash
gbx_lm --model GreenBitAI/GLM-5.3-Flash-4bit-paged
```
That serves an OpenAI-compatible API on port 11688, which is its default. The
weights download on first use into `~/.libra/cache/models`; set `HF_HOME` to put
them elsewhere, and `HF_TOKEN` if you meet the Hub's rate limits for anonymous
downloads.
```bash
curl http://127.0.0.1:11688/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"GreenBitAI/GLM-5.3-Flash-4bit-paged","messages":[{"role":"user","content":"Hello"}]}'
```
Where the weights fit they are filled from `experts.bin` and the model runs the
stock path at stock speed; where they do not, they stream from disk. Reading
the machine decides that, not a flag.
To override that: `GBX_PAGING=off` holds the experts resident.
Checked at build time, while the source checkpoint was still there to compare against:
- **PASS** layer-wise vs resident — 42 layers x 2 draws exact, 60.93 GiB peak for this gate
Quantization, tokenizer, chat template and licence are unchanged from `pipenetwork/GLM-5.3-Flash-MLX-4bit`.
### Images
The model reads images as well as text. Send them as OpenAI `image_url` parts --
an http(s) URL or a base64 `data:` URL:
```bash
curl http://127.0.0.1:11688/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"GreenBitAI/GLM-5.3-Flash-4bit-paged","messages":[{"role":"user","content":[
{"type":"text","text":"What is in this picture?"},
{"type":"image_url","image_url":{"url":"https://example.com/photo.jpg"}}]}]}'
```
From the command line, `--images` takes one or more files:
`gbx_lm generate --model GreenBitAI/GLM-5.3-Flash-4bit-paged --images photo.jpg --prompt "What is in this picture?" --max-tokens 2048`.
### From the command line
From `gbx_lm` v0.7.1, the binary also runs the model without a server -- one
prompt, or an interactive chat:
```bash
GBX_GLM53_MTP=on gbx_lm generate --model GreenBitAI/GLM-5.3-Flash-4bit-paged --prompt "Hello" --max-tokens 2048
GBX_GLM53_MTP=on gbx_lm chat --model GreenBitAI/GLM-5.3-Flash-4bit-paged --max-tokens 2048
```
`gbx_lm generate -h` and `gbx_lm chat -h` list their options. Keep
`--max-tokens` generous: the default is 100 for `generate` and 256 for `chat`,
and the model's reasoning before it answers counts against it. Leave out
`GBX_GLM53_MTP=on` to run without the draft head.
## Coding agents
The server speaks three wire protocols on the same port, so the tools that
expect a hosted API can be pointed at this one:
| path | for |
| --- | --- |
| `/v1/chat/completions` | anything written against the OpenAI API |
| `/v1/responses` | **Codex** |
| `/v1/messages` | **Claude Code** |
**Codex** -- a provider in `~/.codex/config.toml`:
```toml
[model_providers.gbx]
name = "gbx-lm"
base_url = "http://127.0.0.1:11688/v1"
wire_api = "responses"
```
and a profile in `~/.codex/gbx.config.toml`:
```toml
model_provider = "gbx"
model = "GreenBitAI/GLM-5.3-Flash-4bit-paged"
model_context_window = 1048576
```
**Claude Code** -- `~/.claude/gbx.settings.json`:
```json
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:11688",
"ANTHROPIC_AUTH_TOKEN": "local",
"ANTHROPIC_MODEL": "GreenBitAI/GLM-5.3-Flash-4bit-paged",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "GreenBitAI/GLM-5.3-Flash-4bit-paged"
}
}
```
Both clients ask for a small model for their own background work, so every name
in the settings has to be one this server is serving.
## The draft head
The `mtp/` folder carries the model's own multi-token prediction head, converted
from `zai-org/GLM-5.3-Flash`, so speculative decoding works from this repository
alone. It is off unless asked for:
```bash
GBX_GLM53_MTP=on gbx_lm --model GreenBitAI/GLM-5.3-Flash-4bit-paged
```
**Up to 1.4x, more as the context grows.**
Measured 2026-10-13 with `gbx_lm` v0.8.0 on a 512 GB Mac Studio (M3 Ultra), weights
resident, greedy, thinking off, 256 tokens a reply, decode timed from the first token.
Short prompts: three each of code, prose and chat, three runs each, the median per kind.
Long contexts: a slice of source code and a question about it, the median of three runs.
| prompt | head off | head on | speedup |
|---|---|---|---|
| short, code | 39.5 tok/s | **55.5** | 1.41x |
| short, prose | 39.5 | **45.8** | 1.16x |
| short, chat | 39.5 | **50.8** | 1.29x |
| 3,400-token context | 32.6 | **40.0** | 1.23x |
| 14,000-token context | 32.2 | **43.8** | 1.36x |
| 29,000-token context | 31.4 | **42.5** | 1.35x |
Code gains most and prose least. With more context behind it the head proposes
better -- it accepts about 63% of what it proposes on short prompts and 75-77%
from 14k tokens on.
Every token the head proposes is checked by the model itself, so the reply is the
model's own either way; the head only saves passes over the weights.
|