Instructions to use cloudcommander/Kvark-Sparkle-27B-MLX-8bit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use cloudcommander/Kvark-Sparkle-27B-MLX-8bit 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("cloudcommander/Kvark-Sparkle-27B-MLX-8bit") config = load_config("cloudcommander/Kvark-Sparkle-27B-MLX-8bit") # 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 cloudcommander/Kvark-Sparkle-27B-MLX-8bit with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "cloudcommander/Kvark-Sparkle-27B-MLX-8bit"
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": "cloudcommander/Kvark-Sparkle-27B-MLX-8bit" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use cloudcommander/Kvark-Sparkle-27B-MLX-8bit 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 "cloudcommander/Kvark-Sparkle-27B-MLX-8bit"
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 cloudcommander/Kvark-Sparkle-27B-MLX-8bit
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use cloudcommander/Kvark-Sparkle-27B-MLX-8bit with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "cloudcommander/Kvark-Sparkle-27B-MLX-8bit"
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 "cloudcommander/Kvark-Sparkle-27B-MLX-8bit" \ --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"
Kvark Sparkle 1.0 27B, MLX 8-bit
An unofficial MLX build of Egzakta/Kvark-Sparkle-1.0-27B for Apple silicon. It is not made or endorsed by Egzakta. The weights are Kvark's, quantised to 8-bit, with its MTP head included. No training, merging or abliteration was done, so Kvark's own safety behaviour is unchanged.
The other builds:
- Smaller and faster:
cloudcommander/Kvark-Sparkle-27B-MLX-AWQ-4.5bit, which also carries the quick evals. - Uncensored twins:
cloudcommander/Kvark-Sparkle-27B-Uncensored-MLX-AWQ-4.5bitandcloudcommander/Kvark-Sparkle-27B-Uncensored-MLX-8bit.
| Base | Egzakta/Kvark-Sparkle-1.0-27B @ bb41d9af, BF16 (a post-train of Qwen/Qwen3.8-27B) |
| Weights | 30.0 GB (27.94 GiB). 8-bit affine, group size 64, in all 505 quantised modules, the MTP head's 7 among them |
| Vision tower | Kvark's, unquantised BF16 |
| MTP head | 1 layer, inline in model-mtp.safetensors (see MTPLX and mlx-lm) |
| Context | 262,144 tokens (config) |
| Architecture | Qwen3_5ForConditionalGeneration, 64 layers, hidden size 5,120 |
Speed
The weights aren't changed for speed. This build gets its speed from its own MTP head, which drafts tokens ahead for the trunk to check, and from Kvark's shorter reasoning.
Decode speed. These are single requests of one greedy 400-token coding prompt on a Mac Studio (M5 Ultra):
| Runtime | Decode | MTP acceptance | Time to first token |
|---|---|---|---|
| oMLX, MTP mode at depth 3, unquantised KV cache | 83.8 tok/s | 0.881 | 0.315 s |
| MTPLX, MTP mode, with the head moved to a sidecar (below) | 53.3 tok/s | ||
| MTPLX, autoregressive (no MTP) | 30.6 tok/s |
The MTPLX figures come from a short 80-token smoke test, not the benchmark prompt. The 4/6 build is about 2.3ร faster with z-lab's DFlash2 drafter, at 192.9 tok/s, but gives up a little precision: its top-1 agreement with this build is 0.959.
Thinking tokens. They weren't counted on this build. On the 4/6 build, with thinking on, the mean answer was 4,480 tokens on LiveCodeBench and 1,253 on MMLU-Pro. A Qwen3.8-27B build at the same recipe took 5,952 and 2,010. Details are on the 4/6 card.
How it was made
- Quantisation. 8-bit affine with group size 64, starting from Egzakta's BF16. The vision tower is left unquantised.
- MTP head. Kvark's card says the head is the base model's, unchanged. It is taken from the BF16 checkpoint, its norms are offset by +1.0 to match MLX's convention, and the 7 projections are quantised to 8-bit g64. Its norm means match an independent Qwen3.8 MTP head to 4 decimals.
- Checks.
- The bit widths are as declared, the vision tower is unquantised, and all 29 MTP tensors are present.
- The tokenizer and chat template match Kvark's.
- All 216 norms match an independent Qwen3.8 8-bit MLX build to within 0.0004.
Usage
With mlx-vlm (tested with 0.7.9):
pip install -U mlx-vlm
python -m mlx_vlm.generate --model cloudcommander/Kvark-Sparkle-27B-MLX-8bit \
--max-tokens 2048 --enable-thinking --prompt "Explain how a hash table handles collisions."
The chat template thinks by default. To turn thinking off through an OpenAI-compatible server, send
"chat_template_kwargs": {"enable_thinking": false}.
With oMLX, put the folder in a model directory and use MTP mode. The speed above used depth 3.
MTPLX and mlx-lm
The MTP head is stored inline as mtp.* tensors. mlx-lm's qwen3_5 loader takes those as the sign of a raw HF
checkpoint and adds +1.0 to every norm, which this build already has, and the output turns to garbage. This was seen
with MTPLX, which loads through mlx-lm. Plain mlx-lm loading should break the same way, but was not tested.
For MTPLX, move the head into a sidecar:
Take the
mtp.*tensors out of the trunk index and into a separatemtp.safetensors, dropping thelanguage_model.prefix.Quantise
mtp.fcto 8-bit g64.In
config.json, pointmlx_lm_extra_tensors.mtp_fileat the sidecar, and add the head contract that MTPLX's own Qwen3.8 builds use:"mlx_lm_extra_tensors": {"mtp_file": "mtp.safetensors"}, "mtplx_mtp_contract": {"base_hidden_variant": "post_norm", "concat_order": "embedding_hidden", "hidden_variant": "post_norm", "mtp_position_mode": "local", "mtp_quant_group_size": 64, "mtp_quant_mode": "affine"}Also drop the per-module
mtp.*entries from thequantizationblock.
Set up that way, this build ran on MTPLX at 53.3 tok/s with MTP.
Not tested
- Accuracy evals on this build. None were run. The 4/6 build's quick evals are the nearest evidence.
- Vision. The tower is Kvark's and unquantised, but nothing visual was evaluated.
- Long-context behaviour, languages other than English.
Licence and credits
Apache-2.0, as is every model in its lineage. LICENSE and Egzakta's NOTICE are included unchanged. The only change
to Egzakta's weights is the quantisation described above.
- Qwen Team, Alibaba Group: Qwen3.8-27B, the base model.
- Egzakta / KVARK: Kvark Sparkle 1.0, the post-train these weights are.
Egzakta's card gives this citation for Kvark:
@misc{kvarksparkle2026,
title = {KVARK Sparkle 1.0},
author = {Egzakta AI Lab},
year = {2026},
url = {https://huggingface.co/Egzakta/Kvark-Sparkle-1.0-27B}
}
- Downloads last month
- 28
8-bit