qwen0.5b-int4-Octuma
Built with Qwen.
Qwen/Qwen2.5-0.5B-Instruct cuantizado a INT4 con
Octuma: 0.99 GB → 0.52 GB
(1.91x mas chico) perdiendo 3.73% de calidad.
Incluye las dos formas de usarlo: qwen0.5b-int4.gguf para llama.cpp y Android, y
la carpeta .tq para PyTorch.
Calidad medida
Perplejidad en wikitext-2 test, 20 ventanas de 2048 tokens,
todo medido dentro de llama.cpp con llama-perplexity para que la
comparacion sea de tu a tu.
| Formato | Perplejidad | Calidad perdida | Tamaño |
|---|---|---|---|
| F16 (original) | 12.2523 | — | 0.99 GB |
| llama.cpp Q4_K_M | 12.5750 | +2.63% | 0.40 GB |
| Octuma INT4 (este modelo) | 12.7096 | +3.73% | 0.52 GB |
| llama.cpp Q4_0 | 13.8665 | +13.17% | 0.35 GB |
En este tamaño, llama.cpp Q4_K_M rinde mejor (+2.63% contra +3.73%) y ocupa menos. La ventaja de Octuma aparece en modelos mas grandes: en Qwen2.5-3B la relacion se invierte. La tabla esta aqui para que se vea, no para esconderla.
Las perplejidades solo se comparan entre si cuando salen del mismo motor y el mismo corpus. Cada motor trocea y promedia distinto, asi que no contrastes estos numeros con los de otra ficha sin revisar como se midieron.
La comparativa de los tres tamaños esta en
runs/COMPARATIVA_GGUF.md.
Como usarlo
llama.cpp (tambien en Android)
hf download Imanol11/qwen0.5b-int4-Octuma --local-dir qwen0.5b
llama-cli -m qwen0.5b/qwen0.5b-int4.gguf -p "Hola"
PyTorch
pip install "octuma[hf]"
from huggingface_hub import snapshot_download
from transformers import AutoConfig, AutoModelForCausalLM, AutoTokenizer
from octuma.export.tq import load_quantized
ruta = snapshot_download("Imanol11/qwen0.5b-int4-Octuma")
cfg = AutoConfig.from_pretrained(ruta)
modelo = load_quantized(AutoModelForCausalLM.from_config(cfg), ruta)
tok = AutoTokenizer.from_pretrained(ruta)
En PyTorch el modelo cuantizado genera mas lento que el original: Octuma
desempaqueta los 4 bits en cada multiplicacion sin un kernel dedicado. Para
velocidad, usa el .gguf con llama.cpp.
Como se hizo
octuma quantize Qwen/Qwen2.5-0.5B-Instruct
octuma export <carpeta> --out qwen0.5b-int4.gguf
python scripts/verify_gguf.py <carpeta> qwen0.5b-int4.gguf
GPTQ + AWQ con grupos de 32 pesos, calibrado con wikitext-2/train. Octuma cuantiza por grupos con punto cero, reparte el error de redondeo entre las columnas pendientes (GPTQ) y escala los canales segun su importancia en las activaciones (AWQ).
Historial
El .gguf publicado aqui antes del 2026-09-20 estaba degradado: tenia tres
metadatos mal escritos (rope.freq_base, el pre-tokenizador y el
eos_token_id). Los pesos siempre estuvieron bien; el archivo actual los
reescribe correctamente. Si lo descargaste antes de esa fecha, vuelve a
bajarlo.
El 2026-10-07 se re-exporto con Octuma 0.1.5, sin recuantizar: los pesos y
la perplejidad son los mismos. Cambian tres metadatos: el archivo ya trae la
plantilla de chat (tokenizer.chat_template), se anuncia como Q4_1 en vez
de F16, y los metadatos de la carpeta .tq pasan de tinyq.json a
octuma.json. El .gguf pesa 2 560 bytes mas y su SHA-256 es otro.
Licencia
Los pesos derivan de Qwen/Qwen2.5-0.5B-Instruct, bajo Apache 2.0; la copia del original va en LICENSE. El codigo de Octuma es MIT.
Los archivos de pesos estan modificados respecto al original: cuantizados a INT4 con Octuma.