Files

155 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

---
license: apache-2.0
base_model: Qwen/Qwen2.5-1.5B-Instruct
tags:
- gen-z
- persona
- lora
- gguf
- llama.cpp
language:
- en
pipeline_tag: text-generation
---
# bestie-genz-qwen2.5-1.5b-lora-gguf 🫶 — a Gen Z persona LLM
**bestie-genz-qwen2.5-1.5b-lora-gguf** is a small, local chat model that answers normal questions *correctly*
but talks like your chronically-online Gen Z best friend. It's
[Qwen2.5-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct) with a
lightweight LoRA adapter that reshapes **tone**, not facts.
Built to run fully offline on a MacBook Air M2 (16GB) via
[llama.cpp](https://github.com/ggml-org/llama.cpp) with Metal acceleration.
> ⚠️ **Slang snapshot:** This model reflects Gen Z slang and tone **as of 2026**.
> Internet language moves fast — some phrasing will feel dated over time. This is
> a point-in-time snapshot, not a living style guide.
---
## What's in this repo
| File | What it is | Size |
|------|-----------|------|
| `bestie-merged-q4_k_m.gguf` | Single-file merged model (base + bestie persona), easiest for LM Studio | ~940 MB |
| `qwen2.5-1.5b-instruct-q4_k_m.gguf` | Base model, quantized to Q4_K_M | ~986 MB |
| `bestie-lora.gguf` | The Gen Z LoRA adapter (kept **separate**, applied at runtime) | ~35 MB |
| `qwen2.5-1.5b-instruct-f16.gguf` | Full-precision base GGUF (optional) | ~2.9 GB |
The LoRA is intentionally **not merged** into the base weights. llama.cpp applies
it at inference time via `--lora`, so you can toggle the persona on/off with the
same base model.
---
## Base model & why
- **Base:** `Qwen2.5-1.5B-Instruct` (Apache-2.0)
- **Why:** Best-in-class reasoning/factuality for a sub-2B model, permissive
license for redistribution, first-class llama.cpp conversion support, and small
enough to LoRA-fine-tune and run on 16GB unified memory.
---
## Quick start (llama.cpp)
**Single merged model (no adapter needed):**
```bash
llama-cli \
-m bestie-merged-q4_k_m.gguf \
-st -n 200 --temp 0.7 \
-p "Why is the sky blue?"
```
**CLI (single response):**
```bash
llama-cli \
-m qwen2.5-1.5b-instruct-q4_k_m.gguf \
--lora bestie-lora.gguf \
-st -n 200 --temp 0.7 \
-p "Why is the sky blue?"
```
**Server (OpenAI-compatible API):**
```bash
llama-server \
-m qwen2.5-1.5b-instruct-q4_k_m.gguf \
--lora bestie-lora.gguf \
--host 127.0.0.1 --port 8080 -c 2048 --alias bestie
```
```bash
curl -s http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"bestie","messages":[{"role":"user","content":"How do I stay motivated to work out?"}]}'
```
---
## Example outputs (base vs. bestie)
**Prompt:** *Why is the sky blue?*
- **Base:** "The sky appears blue because of a phenomenon called Rayleigh
scattering. This happens when light from the sun travels through the Earth's
atmosphere and is scattered..."
- **bestie:** "Bet, quick breakdown: Sunlight splits into colors, blue gets
scattered more. No fluff, just signal."
**Prompt:** *Explain what a black hole is.*
- **Base:** "A black hole is a region of spacetime where gravity is so strong that
nothing, not even light, can escape from it..."
- **bestie:** "Real talk, no BS: A black hole is a region of spacetime with such
strong gravitational pull that nothing, not even light, can escape from it."
**Prompt:** *How do I stay motivated to work out?*
- **bestie:** "Real talk, no BS: Break your workout into manageable 30-minute
sessions, track your progress, and always focus on form over intensity. Progress
over perfection, always."
---
## Intended use
- Casual Q&A, study help, explanations, and everyday assistance with a fun,
informal Gen Z voice.
- Great for demos, personal projects, and learning the LoRA → GGUF → llama.cpp
pipeline.
### Out of scope / limitations
- **Small model (1.5B):** can hallucinate or oversimplify. Verify anything
important.
- **Persona artifacts:** trained on a small (~165-example) dataset, so it
occasionally over-uses signature phrases ("real talk, no BS", "drop your
context") or leaks a stray token. Larger/cleaner data would smooth this out.
- **English only**, informal register — not suitable for formal/professional
writing.
- **Not safety-tuned** beyond the base model's alignment.
---
## Training details
- **Method:** LoRA (PEFT) — the *only* step done in `transformers`/`peft`, since
llama.cpp is inference-only and can't train.
- **Everything else via llama.cpp:** GGUF conversion (`convert_hf_to_gguf.py`),
LoRA→GGUF export (`convert_lora_to_gguf.py`), quantization (`llama-quantize`),
inference (`llama-cli`), and serving (`llama-server`).
- **Data:** ~165 hand-written (prompt, response) pairs — normal questions answered
correctly in an authentic Gen Z voice — plus ~20 validation examples.
- **Hyperparameters:** low rank (small-dataset appropriate), few epochs, tuned for
16GB unified memory on Apple Silicon (MPS).
---
## License
Apache-2.0, inherited from the Qwen2.5-1.5B-Instruct base model.