JANG
The GGUF for MLX
Cuantización de precisión mixta para MLX en Apple Silicon.
La cuantización estándar de MLX aplica el mismo ancho de bits a todas las capas. A bits bajos (2-3), las capas de atención se degradan primero — la salida colapsa en bucles de repetición o secuencias degeneradas. JANG asigna anchos de bits variables por tensor según la sensibilidad: la atención obtiene más bits, el MLP menos.
Los modelos permanecen cuantizados en la memoria GPU y se descuantizan sobre la marcha usando los kernels nativos quantized_matmul de MLX — sin expansión float16, sin penalización de velocidad. El formato está basado en safetensors. El cuantizador y el runtime son de código abierto bajo Apache 2.0.
Anchos de bits variables según la sensibilidad de la capa
La cuantización estándar aplica el mismo ancho de bits a todos los tensores. Las capas de atención (~12% de los parámetros) son más sensibles a la pérdida de precisión que las capas MLP — cuando se cuantizan demasiado agresivamente, las puntuaciones de atención se aplanan, la codificación posicional se degrada y la salida degenera.
JANG clasifica los tensores en niveles de sensibilidad y asigna anchos de bits en consecuencia. Las capas de atención obtienen 5–8 bits mientras que el MLP se comprime a 2–4 bits. El costo adicional: ~0.3 bits en promedio.
JANG vs MLX — side by side
Each JANG model compared against the closest MLX method by size. 50-question MMLU, thinking disabled, temp 0.0. Apple M4 Max 128 GB.
Qwen3.5-122B-A10B — ~4 bits — NEW
Qwen3.5-122B-A10B — ~2 bits
Qwen3.5-35B-A3B — ~4 bits
Qwen3.5-35B-A3B — ~2 bits
Qwen3.5-122B-A10B — JANG_1L — 200-question MMLU
All scores verified from HuggingFace model cards. Download: JANG_4K · JANG_2S · JANG_1L
Más resultados 7B
JANG_3L (3.6 bits)
3-bit
JANG_3M (3.4 bits)
3-bit
JANG_3L (3.6 bits)
3-bit
JANG_2M (2.7 bits)
2-bit
JANG_4L (4.5 bits)
4-bit
JANG_2S (2.5 bits)
2-bit
Modelos más pequeños (1B–3B)
JANG_3M (3.4 bits)
3-bit
JANG_2S (2.5 bits)
2-bit
JANG_4S (4.1 bits)
4-bit
JANG_4L (4.5 bits)
4-bit
JANG (4.12 bits)
4-bit
JANG_4S (4.1 bits)
4-bit
JANG a 3.37 bits supera a 4-bit
Qwen2.5-3B · “What is 2+2?” · Logit MSE vs bf16 reference · Lower is better
Apple M4 Max · 107 GB unified memory · affine quantization · group_size=64
JANG a 3.37 bits (MSE 11.10) supera a a 4.00 bits (MSE 11.31) — 16% menos bits con mejor calidad.
Todos los modelos probados
| Model | Params | Architecture | Pruebas | Modo de fallo |
|---|---|---|---|---|
| Mistral-7B | 7B | Mistral GQA 4:1, sliding window | 13 | 3-bit → number sequences, 4b → loops |
| TinyLlama-1.1B | 1.1B | Llama GQA 8:1 | 11 | 4-bit → topic derail |
| SmolLM2-1.7B | 1.7B | Llama MHA | 11 | 3-bit → number sequences |
| Phi-2 | 2.7B | Phi MHA, GELU MLP | 9 | 2-bit → empty output |
| Qwen2.5-7B | 7B | Qwen GQA 4:1 | 9 | 3-bit → repetition loop |
| Qwen2.5-3B | 3B | Qwen GQA 8:1 | 6 | 4-bit → echo/loop |
| Qwen3.5-4B | 4B | Hybrid: 24 linear + 8 full attn | 6 | 2-bit → 0/6 correct |
Todas las pruebas: Apple M4 Max · 107 GB memoria unificada · MLX cuantización afín · group_size=64 · mismo tokenizador · misma plantilla de prompt · 45 experimentos · 8 modelos · Qwen3.5-9B descargado, pruebas pendientes
JANG_{bits}{size}
11 perfiles predefinidos desde ultra-comprimido hasta casi sin pérdidas. S = Small (máxima compresión), M = Medium (equilibrado), L = Large (mejor calidad).
| Profile | MLP | Attention | Embed | lm_head | Avg Bits |
|---|---|---|---|---|---|
| JANG_1L | 2-bit | 8-bit | 8-bit | 8-bit | ~2.2 |
| JANG_2S | 2-bit | 6-bit | 4-bit | 6-bit | ~2.5 |
| JANG_2M | 2-bit | 8-bit | 4-bit | 8-bit | ~2.7 |
| JANG_2L | 2-bit | 8-bit | 6-bit | 8-bit | ~2.9 |
| JANG_3S | 3-bit | 4-bit | 4-bit | 6-bit | ~3.1 |
| JANG_3M | 3-bit | 6-bit | 4-bit | 6-bit | ~3.4 |
| JANG_3L | 3-bit | 8-bit | 4-bit | 8-bit | ~3.6 |
| JANG_4S | 4-bit | 5-bit | 4-bit | 6-bit | ~4.1 |
| JANG_4M | 4-bit | 6-bit | 4-bit | 6-bit | ~4.2 |
| JANG_4L | 4-bit | 8-bit | 4-bit | 8-bit | ~4.5 |
| JANG_6M | 6-bit | 8-bit | 6-bit | 8-bit | ~6.2 |
Motor de inferencia Swift + Metal
14 kernels GPU Metal personalizados. Carga mmap sin copia. Descuantización fusionada para decodificación y prefill.
Dequant + GEMV
Fused dequantization + matrix-vector multiply for single-token decode. All bit widths (2, 3, 4, 5, 6, 8) in one kernel.
Dequant + GEMM
Fused dequantization + matrix-matrix multiply for prompt prefill. Tiled for Apple GPU threadgroup memory.
GQA Attention
Grouped-query attention decode + causal prefill. Supports standard, sliding window, and hybrid architectures.
RMSNorm + RoPE
Fused normalization and rotary position embedding. Traditional and non-traditional RoPE variants.
SwiGLU
Fused SiLU activation + element-wise multiply for gated feed-forward networks.
Quantized Embedding
Direct embedding lookup from quantized weights. No full-table dequantization needed.
Convierte cualquier modelo
Herramientas Python para convertir modelos de HuggingFace a formato .jang. Elige un perfil, selecciona tu método de cuantización y listo. Soporta RTN, búsqueda de cuadrícula MSE-óptima y cuantización GPTQ (guiada por Hessiana).
6+ familias de arquitectura: Llama, Qwen, Gemma, Phi, Mistral, Mamba/SSM, MoE, y modelos híbridos incluyendo Qwen 3.5.
Ejecuta modelos más grandes con menos RAM
JANG_3M ahorra 25% vs 4-bit con calidad comparable en modelos 7B+. Cabe modelos en memoria unificada que antes no cabían.
Modelos pre-cuantizados en HuggingFace
Listos para descargar. Compatible con vMLX Engine / MLX Studio vía el cargador JANG.
Ejecuta modelos JANG en MLX Studio
MLX Studio tiene soporte nativo JANG con API compatible con OpenAI, caché de prefijos, caché KV paginado, cuantización KV (q4/q8), batching continuo y 20+ herramientas de codificación agéntica. Carga cualquier modelo .jang y sírvelo localmente — compatible con Cursor, Continue, Aider y cualquier cliente API OpenAI. Potenciado por vMLX Engine, ahora de código abierto — pip install vmlx.