57 lines
1.7 KiB
Markdown
57 lines
1.7 KiB
Markdown
|
|
---
|
|||
|
|
license: apache-2.0
|
|||
|
|
base_model: build-small-hackathon/deku
|
|||
|
|
tags:
|
|||
|
|
- gguf
|
|||
|
|
- llama.cpp
|
|||
|
|
- knowledge-distillation
|
|||
|
|
- qwen2
|
|||
|
|
pipeline_tag: text-generation
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Deku — GGUF (llama.cpp)
|
|||
|
|
|
|||
|
|
GGUF builds of [**build-small-hackathon/deku**](https://huggingface.co/build-small-hackathon/deku),
|
|||
|
|
the One for All student: a Qwen2.5-0.5B distilled from 6 teachers via gated CKA
|
|||
|
|
geometry distillation. The LoRA adapter is merged into the base, then converted
|
|||
|
|
with `llama.cpp`'s `convert_hf_to_gguf.py`.
|
|||
|
|
|
|||
|
|
## Files
|
|||
|
|
|
|||
|
|
| File | Size | Use |
|
|||
|
|
|------|------|-----|
|
|||
|
|
| `deku-q8_0.gguf` | ~531 MB | what the Space serves — near-lossless, CPU-friendly |
|
|||
|
|
| `deku-f16.gguf` | ~994 MB | archival full-precision build |
|
|||
|
|
| `gating.npz` | ~22 KB | the teacher-gating head as numpy (`weight` 6×896, `bias` 6) |
|
|||
|
|
|
|||
|
|
## Run
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
llama-cli -m deku-q8_0.gguf -p "Explain gradient descent in one sentence."
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from llama_cpp import Llama
|
|||
|
|
llm = Llama(model_path="deku-q8_0.gguf", n_ctx=2048)
|
|||
|
|
print(llm.create_chat_completion(
|
|||
|
|
messages=[{"role": "user", "content": "Why is the sky blue?"}]
|
|||
|
|
)["choices"][0]["message"]["content"])
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Teacher gating without torch
|
|||
|
|
|
|||
|
|
`gating.npz` lets you reproduce the live "teacher influence" meters from the
|
|||
|
|
[Space](https://huggingface.co/spaces/build-small-hackathon/one-for-all) using
|
|||
|
|
only numpy on a mean-pooled embedding from `llama.cpp`:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
import numpy as np
|
|||
|
|
g = np.load("gating.npz") # g["weight"] (6, 896), g["bias"] (6,)
|
|||
|
|
def gate(emb): # emb: 896-dim pooled embedding
|
|||
|
|
z = g["weight"] @ emb + g["bias"]
|
|||
|
|
e = np.exp(z - z.max())
|
|||
|
|
return e / e.sum() # softmax over the 6 teachers
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Teacher order: `qwen, smollm, phi, gemma, minicpm, nemotron`.
|