Instructions to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4 # Run inference directly in the terminal: llama cli -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4 # Run inference directly in the terminal: llama cli -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4 # Run inference directly in the terminal: ./llama-cli -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4 # Run inference directly in the terminal: ./build/bin/llama-cli -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Use Docker
docker model run hf.co/emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
- LM Studio
- Jan
- vLLM
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "emwesoft/GLM-5.3-NVFP4-MTP-GGUF" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "emwesoft/GLM-5.3-NVFP4-MTP-GGUF", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
- Ollama
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with Ollama:
ollama run hf.co/emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
- Unsloth Desktop
- Pi
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with Docker Model Runner:
docker model run hf.co/emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
- Lemonade
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Run and chat with the model
lemonade run user.GLM-5.3-NVFP4-MTP-GGUF-NVFP4
List all available models
lemonade list
- Hermes Agent
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
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 emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use emwesoft/GLM-5.3-NVFP4-MTP-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4
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 "emwesoft/GLM-5.3-NVFP4-MTP-GGUF:NVFP4" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
GLM-5.3 753B — NVFP4 GGUF with MTP head
Native GGUF of incoai/GLM-5.3-NVFP4, the
vendor's ModelOpt NVFP4 repack of zai-org/GLM-5.3,
including block 78 (the MTP / NextN head) so the checkpoint's own head can drive speculative
decoding. The NVFP4 trunk is kept as NVFP4 — not a requantisation.
465 GB, 11 shards. block_count 79, nextn_predict_layers 1, 1974 tensors,
225 NVFP4 tensors (identical to the no-MTP file — the trunk is not upcast).
Using the MTP head — read this
blk.78's experts are BF16, not NVFP4: 27 tensors, 18.54 GiB, roughly 3.7x a normal
NVFP4 routed bank (5.06 GiB). If you use -ot with a CPU catch-all, pin block 78 to a GPU
before the catch-all — -ot is first-match-wins, so otherwise blk.78 lands on CPU and every
drafted token pays a CPU MoE pass, which is worse than not speculating.
-ot 'blk\.(...|78)\.ffn_.*_exps.*=CUDA1,\.ffn_.*_exps.*=CPU'
--spec-type draft-mtp --spec-draft-n-max 3
Related repos
| Without MTP | emwesoft/GLM-5.3-NVFP4-GGUF — 20 GB smaller, no block 78 |
| DFlash2 drafters | emwesoft/GLM-5.3-DFlash2-GGUF — the alternative to the MTP head |
Engine requirements
llama.cpp with glm-dsa + GGML_TYPE_NVFP4. Three fixes are not yet upstream:
- jinja numeric attribute access (
obj.0) — GLM-5.3's chat template usesm.content.0.output. Without it the template throws,caps_get()swallows it,supports_tool_callsreports false, and every tool call comes back as plain text. glm-dsalayer-input exposure — DFlash needsres->t_layer_inp[il]; without it attaching a drafter aborts on the first decode withGGML_ASSERT(t_layer_inp[il] != nullptr).- Whitespace tolerance before
</tool_call>— a stray newline makes the streaming parser recognise a tool call then lose it, aborting fromcompute_diffs.
Measured throughput
2x RTX PRO 6000 Blackwell + 4x RTX 3090 + 251 GB RAM, 400K context, -t 36 -tb 40,
experts partly CPU-resident (the weights do not fit in 288 GB of VRAM):
| config | acceptance | decode |
|---|---|---|
MTP head, n-max 3 |
74.9% (mean len 3.24) | 9.3-12.2 tok/s |
DFlash2 Q8_0, n-max 4 |
67.7% (mean len 3.69) | 7.6-12.8 tok/s |
| no speculation | - | ~10 tok/s |
Throughput is prompt-dependent because acceptance is. Threads matter: on a 24-core/48-thread
CPU, -t 48 collapsed decode to 0.5 tok/s — the ggml threadpool busy-spins and starves the CUDA
submission thread. Leave headroom.
Sampling
From generation_config.json: temperature 1.0, top_p 0.95. The template exposes
low/high/max reasoning effort only; anything else becomes max, and thinking cannot be
disabled.
- Downloads last month
- -
4-bit
8-bit
16-bit