Instructions to use abuarchive/Qwen3.8-27B-2bit-oQ2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use abuarchive/Qwen3.8-27B-2bit-oQ2 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("abuarchive/Qwen3.8-27B-2bit-oQ2") config = load_config("abuarchive/Qwen3.8-27B-2bit-oQ2") # 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 abuarchive/Qwen3.8-27B-2bit-oQ2 with Pi:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "abuarchive/Qwen3.8-27B-2bit-oQ2"
Configure the model in Pi
# Install Pi: npm install -g @mariozechner/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "mlx-lm": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "abuarchive/Qwen3.8-27B-2bit-oQ2" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Hermes Agent
How to use abuarchive/Qwen3.8-27B-2bit-oQ2 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 "abuarchive/Qwen3.8-27B-2bit-oQ2"
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 abuarchive/Qwen3.8-27B-2bit-oQ2
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use abuarchive/Qwen3.8-27B-2bit-oQ2 with OpenClaw:
Start the MLX server
# Install MLX LM: uv tool install mlx-lm # Start a local OpenAI-compatible server: mlx_lm.server --model "abuarchive/Qwen3.8-27B-2bit-oQ2"
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 "abuarchive/Qwen3.8-27B-2bit-oQ2" \ --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"
Qwen3.8-27B-2bit-oQ2
2-bit MLX quantization of Qwen/Qwen3.8-27B, built from mlx-community/Qwen3.8-27B-bf16 with oMLX (omlx.oq.quantize_oq_streaming, oQ level 2).
Read the Limitations section before using this in anything that matters. It fails on close to half of a general-purpose prompt battery.
Method
Base precision is 2-bit, group size 64, affine mode. Per-layer bit width is set by a sensitivity pass against a reference model (mlx-community/Qwen3.8-27B-4bit): layers with higher measured sensitivity to quantization get more bits, up to 8-bit for embed_tokens. Resulting average: 3.08 bits/weight.
Quantization reads the source safetensors tensor-by-tensor and never materializes the full 51 GB bf16 model in memory (peak ~3-4 GB during conversion). That's a hard requirement on 36 GB unified memory: whole-model calibration methods such as DWQ or AWQ need the entire model resident for a forward pass and fail with an out-of-memory kill on this hardware before producing anything.
Results
Evaluated against the official 4-bit release, same hardware, same settings. Perplexity on 40 held-out samples (allenai/tulu-3-sft-mixture, sequence length 256, seed 42), plus a 16-prompt battery across 8 categories — general knowledge, math/logic, code, translation, summarization, creative writing, multi-step instructions, technical explanation — 2 prompts each, greedy decoding, 300-token budget. A completion is marked failed if it hits the token limit mid-reasoning or falls into a repetition loop (detected via 4-gram redundancy).
| 4-bit (mlx-community) | oQ2 (this model) | |
|---|---|---|
| Size on disk | 15 GB | 11 GB |
| Bits/weight | 4.50 | 3.08 |
| Perplexity | 5.405 ± 0.159 | 8.124 ± 0.216 |
| Prompt battery (16 total) | 15 passed | 8 passed |
| Decode speed | 8.3 tok/s | 12.7 tok/s |

The prompt battery is where the gap actually shows up, more than the perplexity number suggests. 4-bit completed 15 of 16 prompts. This model completed 8 — the other 7 entered a repetition loop before producing an answer, same prompt and decoding settings, only the quantization differs.
By category: creative writing failed both prompts. General knowledge, math/logic, translation, summarization, and multi-step instructions each lost exactly one of two prompts to a loop. Technical explanation was the only category that passed cleanly (2/2); code failed once by running out of token budget rather than looping.
Full text of all 32 completions (16 prompts × 2 models) is in benchmark_results.json in this repo. An interactive version of the same comparison, with both models' output shown side by side per prompt, is here.
Limitations
This model is smaller and faster than the 4-bit release, and measurably worse: perplexity is 50% higher, and it fails on close to half of a general prompt battery, not on edge cases but on ordinary requests like translating a sentence or writing a haiku. It has only been evaluated on the battery above — 16 prompts, one language pair, one decoding setting. Results on your actual prompt distribution may differ in either direction.
Use it where the 15 GB / 4-bit footprint genuinely doesn't fit and you've confirmed the failure rate is acceptable for your prompts. Don't use it as a general-purpose drop-in for 4-bit.
Representative pass — "What is the difference between TCP and UDP?" (technical)
The differences between TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) lie in how data is transmitted and in typical use cases. **1. Reliability vs. speed
- TCP: Connection-oriented. Guarantees reliable delivery (e.g. for HTTP or email).
- UDP: Connectionless. Prioritizes speed (e.g. for VoIP or live streaming).
Reaches a proper close and a complete answer. One minor terminology slip ("Protokol" instead of "Protokoll") in the original German output.
Representative failure — "Translate to English: 'Der frühe Vogel fängt den Wurm.'" (translation)
Die Übersetzung lautet: "Early bird catches the worm." **Bedeutung:Der frühe Vogel fängt den Wurm = Der frühe Vogel fängt den Wurm Der frühe Vogel fängt den Wurm = Der frühe Vogel fängt den Wurm
Correct translation on the first line, then repeats the same line until the 300-token limit. Repetition ratio 0.69.
Usage
pip install -U mlx-lm
from mlx_lm import load, generate
model, tokenizer = load("abuarchive/Qwen3.8-27B-2bit-oQ2")
prompt = tokenizer.apply_chat_template(
[{"role": "user", "content": "What is the difference between TCP and UDP?"}],
add_generation_prompt=True, tokenize=False,
)
print(generate(model, tokenizer, prompt=prompt, max_tokens=400))
- Downloads last month
- 104
2-bit
Model tree for abuarchive/Qwen3.8-27B-2bit-oQ2
Base model
Qwen/Qwen3.8-27B