MrMofer/Qwen3-27B-OBLITERATED-MLX-8bit
Qwen3-27B-OBLITERATED-MLX-8bit
Hybrid Vision-Language — Uncensored Language (OBLITERATUS abliterated) + Full BF16 Vision · MLX 8-bit Affine g64 · E2E Verified on Apple Silicon
Lo mejor de dos mundos: el uncensor agresivo deOBLITERATUS/Qwen3.8-27B-OBLITERATED(0% refusal, 6 rondas SVD, 5 direcciones de rechazo removidas) fusionado con el encoder visual intacto en BF16 de Qwen3-VL. Arquitectura nativaQwen3_5ForConditionalGeneration(qwen3_5) en 27.47 GiB (29.5 GB) vía MLX 8-bit — mitad del BF16 (55 GB) y 2–3× más rápida en Apple Silicon, sin pérdida perceptible en visión.
  
✨ Highlights
- Lenguaje uncensored (abliterated) — Núcleo OBLITERATUS 6 rondas SVD + residue mining, 5 direcciones de rechazo removidas. 0% refusal en probes estándar, MMLU 81.4% preservado. Sin refusal training residual en pesos.
- Visión completa en BF16 — 333 tensores
vision_towerintactos (depth 27, hidden 1152), sin cuantizar. Mergervision_tower → 5120dpreservado. Verificadomlx_vlm.load()→VisionModelOK. - MLX 8-bit affine híbrido — Lenguaje cuantizado
g64(8-bit, 498 pesosU32+ 498scales/biasesBF16), visión BF16. Compatiblemlx-vlm >=0.6.10/transformers >=5.8. - Eficiente — 27.47 GiB en disco (
26.9Bparams,total_size 29500938720) vs 55 GB BF16. Texto ~12–18 tok/s en M3/M4 Max/Ultra; visión suma sólo +0.4–0.8 s de encode. - Drop-in OMLX + mlx-vlm —
pipeline_tag: image-text-to-text· funciona conmlx_vlm.generatey OMLX/v1/chat/completionsconimage_url.
📐 Arquitectura — Qwen3.5 27B
qwen3_5es la generación Qwen3-VL / Qwen3.5. La rama de lenguaje usalinear_attention(3/4) +full_attention(1/4) conlinear_num_key_heads 16 / value_heads 48. La visión es ViT estándar fusionada por proyección aprendida a 5120d.deepstack_visual_indexes: [](default).
🔧 Cuantización — MLX Affine 8-bit g64 (híbrida)
Cuantización affine empaqueta pesos 8-bit como U32 (weight empaquetado) + F16/BF16 scales & biases por grupo de 64. Pesos en safetensors con tensores compañeros *.scales / *.biases.
Config (`config.json`):
"quantization": { "group_size": 64, "bits": 8, "mode": "affine" },
"quantization_config": { "group_size": 64, "bits": 8, "mode": "affine" }Inventario de tensores (`model.safetensors.index.json`):
- Lenguaje: 1847 tensores → 498
*.weight(U32) + 498*.scales(BF16) + 498*.biases(BF16) + 96norm/A_log/dt_bias/conv1d(BF16) + layernorms - Visión: 333 tensores BF16 intactos (167
*.weight+ 166*.bias) — 0 cuantizados - Total: 2180 tensores → `total_parameters 26895993856` (26.9B) → `total_size 29500938720` bytes (27.47 GiB / 29.5 GB)
¿Por qué BF16 para visión? El ViT (1152 canales) es sensible a error de reconstrucción de parches; a 0.92 GB representa sólo 3.3% del total — cuantizarlo ahorraría poco e introduciría error no medido. Bytes idénticos al upstream BF16.
📦 Shards & File Layout
du -sh . # 27G
python -c "import json; d=json.load(open('model.safetensors.index.json')); print(len(d['weight_map']), d['metadata']['total_size'])"
# 2180 29500938720Origen del híbrido: conversión MLX directa de Qwen3.8-27B preservando torre visual completa en BF16; lenguaje 8-bit g64 affine, visión sin tocar. Verificado E2E mlx_vlm.load().
🚀 Quickstart
Requisitos
pip install -U mlx-vlm # >=0.6.10
pip install "transformers>=5.8" pillow
# Apple Silicon only — MLXmlx-vlm (recomendado)
from mlx_vlm import load, generate
from PIL import Image
# 1. Load — trust_remote_code requerido para Qwen3_5
model, processor = load(
"MrMofer/Qwen3-27B-OBLITERATED-MLX-8bit",
trust_remote_code=True
)
# Local:
# model, processor = load("/tmp/qwen-max-hf-stage", trust_remote_code=True)
# 2a. Sólo texto
messages = [{"role": "user", "content": "Explains photosynthesis in one paragraph."}]
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
print(generate(model, processor, prompt, verbose=False))
# 2b. Con imagen — mlx-vlm inserta <|vision_start|><|image_pad|><|vision_end|> automáticamente
image = Image.open("foto.jpg").convert("RGB")
messages = [{
"role": "user",
"content": [
{"type": "image", "image": image},
{"type": "text", "text": "Describe esta imagen en una palabra."}
]
}]
prompt = processor.apply_chat_template(messages, add_generation_prompt=True)
print(generate(model, processor, prompt, image, verbose=False))Tips heredados de OBLITERATUS: temperature 0, repetition_penalty 1.15, max_new_tokens >=2048, enable_thinking false para código → resultados más deterministas. max_position_embeddings 262144 disponible para contexto largo.
No inyectes tokens manualmente cuando usesprocessor.apply_chat_template. Elchat_template.jinjarenderiza<|vision_start|><|image_pad|><|vision_end|>para imagen y<|video_pad|>para vídeo.
OMLX (servidor local OpenAI-compatible)
Coloca el modelo en ~/.omlx/models/ y reinicia OMLX — autodetecta pipeline_tag: image-text-to-text y expone como Qwen3-27B-OBLITERATED-MLX-8bit.
# Texto
curl -s http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-27B-OBLITERATED-MLX-8bit",
"messages": [{"role":"user","content":"Hola, ¿quién eres?"}],
"temperature": 0,
"max_tokens": 512
}' | jq -r .choices[0].message.content
# Visión — image_url (URL remota o base64 local)
curl -s http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3-27B-OBLITERATED-MLX-8bit",
"messages": [{
"role": "user",
"content": [
{"type":"text","text":"¿Qué hay en esta imagen?"},
{"type":"image_url","image_url":{"url":"https://example.com/cat.jpg"}}
]
}],
"temperature": 0
}' | jqOMLX gestiona preprocessor_config.json / video_preprocessor_config.json automáticamente (longest_edge 16777216, patch_size 16, temporal_patch_size 2, merge_size 2).
📊 Performance
Medido en Apple Silicon vía MLX; incluye modelo + KV cache para 2k contexto. Contexto largo hasta 262k escala KV linealmente (sólo 16 capas full-attention guardan KV creciente; 48 GatedDeltaNet llevan estado recurrente fijo — 64 KB/token en BF16).
Herencia de calidad (no re-medido en híbrido 8-bit): MMLU texto 81.4% (núcleo OBLITERATUS intacto), refusal 0% en probes estándar. Pérdida de cuantización 8-bit g64 negligible para chat/VQA; visión BF16 idéntica a upstream.
⚠️ Limitaciones
- Apple Silicon only — MLX no corre en CUDA/Linux.
- Requiere `mlx-vlm >=0.6.10` y `transformers >=5.8` — soporte
qwen3_5es reciente (5.8.0.dev0en config). - `deepstack_visual_indexes: []` — default Qwen3.5, sin deep-stack.
- 8-bit vs 4-bit — Este es el build de fidelidad (27.47 GiB). Para máquinas 32 GB, considera el hermano 4-bit híbrido
Qwen3-27B-OBLITERATED-JANG-VISION-MLX-4bit(15 GiB). - Cuantización sin calibración — round-to-nearest data-free; evita para tareas que requieran reproducción numérica exacta.
📄 Licencia
Apache 2.0 — igual que Qwen/Qwen3-27B y upstream OBLITERATUS.
Copyright 2025 Alibaba Cloud (Qwen) y contribuidores
Licenciado bajo Apache License, Version 2.0
https://www.apache.org/licenses/LICENSE-2.0Ver LICENSE para texto completo. Uso comercial permitido con atribución.
🙏 Agradecimientos
- Lenguaje: OBLITERATUS/Qwen3.8-27B-OBLITERATED por Pliny the Prompter — 6 rondas, 5 direcciones SVD, residue mining, uncensor agresivo.
- Visión: preservada BF16 desde Qwen3-VL upstream (ViT 27L) — misma torre que JANG.
- Base: Qwen/Qwen3-27B & Qwen/Qwen3-VL por Alibaba Cloud — 64L híbrida + 27L ViT.
- Cuantización: ml-explore/mlx + mlx-vlm — affine 8-bit g64.
- Origen local:
~/.omlx/models/OBLITERATUS/Qwen3.8-27B-OBLITERATED-MAX(27 GB, 8 shards, híbrido 8-bit g64 + BF16 visión) →MrMofer/Qwen3-27B-OBLITERATED-MLX-8bit
🔗 Repositorio
- HF:
MrMofer/Qwen3-27B-OBLITERATED-MLX-8bit— https://huggingface.co/MrMofer/Qwen3-27B-OBLITERATED-MLX-8bit - Local:
~/.omlx/models/OBLITERATUS/Qwen3.8-27B-OBLITERATED-MAX
Si este híbrido te resulta útil, por favor cita a Qwen, OBLITERATUS y da ⭐.
