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 de OBLITERATUS/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 nativa Qwen3_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.
Eficiente — 27.47 GiB en disco (26.9B params, 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 con mlx_vlm.generate y OMLX /v1/chat/completions con image_url.
qwen3_5 es la generación Qwen3-VL / Qwen3.5. La rama de lenguaje usa linear_attention (3/4) + full_attention (1/4) con linear_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/BF16scales & biases por grupo de 64. Pesos en safetensors con tensores compañeros *.scales / *.biases.
¿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.
Origen 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
bash
1pip install -U mlx-vlm # >=0.6.102pip install"transformers>=5.8" pillow
3# Apple Silicon only — MLX
mlx-vlm (recomendado)
python
1from mlx_vlm import load, generate
2from PIL import Image
34# 1. Load — trust_remote_code requerido para Qwen3_55model, processor = load(6"MrMofer/Qwen3-27B-OBLITERATED-MLX-8bit",7 trust_remote_code=True8)9# Local:10# model, processor = load("/tmp/qwen-max-hf-stage", trust_remote_code=True)1112# 2a. Sólo texto13messages =[{"role":"user","content":"Explains photosynthesis in one paragraph."}]14prompt = processor.apply_chat_template(messages, add_generation_prompt=True)15print(generate(model, processor, prompt, verbose=False))1617# 2b. Con imagen — mlx-vlm inserta <|vision_start|><|image_pad|><|vision_end|> automáticamente18image = Image.open("foto.jpg").convert("RGB")19messages =[{20"role":"user",21"content":[22{"type":"image","image": image},23{"type":"text","text":"Describe esta imagen en una palabra."}24]25}]26prompt = processor.apply_chat_template(messages, add_generation_prompt=True)27print(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 uses processor.apply_chat_template. El chat_template.jinja renderiza <|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.
+200–1000 tokens visuales → −15–30% tok/s ese turno
merge_size 2
Multi-imagen / vídeo
+0.4 s por imagen
lineal en tokens visuales
temporal_patch_size 2
BF16 raíz (Qwen3-27B)
~55 GB
2–3 tok/s
8-bit híbrido 2–3× más rápido
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_5 es reciente (5.8.0.dev0 en 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.0
Ver LICENSE para texto completo. Uso comercial permitido con atribución.