Downloads · 30 days
193
33% of all-time downloads
ericflo/qwen3-0.6b-summarizer
qwen3-0.6b-summarizer is a summarization model from ericflo. Use it when you need a shorter version of a longer text. It is set up for llama-cpp-python. The card lists the license as apache-2.0.
A one-sentence summarizer fine-tuned from Qwen3-0.6B using LoRA distillation. Feed it any text, get back a concise one-sentence summary.
Downloads · 30 days
193
33% of all-time downloads
All-time downloads
584
Public
Repo size
1.8 GB
Likes
0
Public
Click a slice to open those files.
.gguf1.8 GB · 99%
From the Hugging Face model README
A one-sentence summarizer fine-tuned from Qwen3-0.6B using LoRA distillation. Feed it any text, get back a concise one-sentence summary.
Trained by distilling 6,720 high-quality summaries generated by Gemini Flash into Qwen3-0.6B. The model learns to compress markdown text (chat logs, task descriptions, bug reports, planning notes) into clear, information-dense one-liners.
Input: "Eric wants to reorganize how Cloud Eric handles project planning loops.
Currently the planning task runs every 30 minutes and creates sub-tasks,
but it often creates duplicates because it does not check what tasks are
already running or what PRs are already open. The fix should add a dedup
check that reviews pending tasks and recent GitHub PRs before creating
anything new."
Output: "Cloud Eric planning bug fix — current task creates duplicates because
it lacks a dedup check for pending tasks and open PRs."
375 characters in, 124 out — 67% compression while preserving the root cause and fix.
from llama_cpp import Llama
llm = Llama("qwen3-0.6b-summarizer-q8_0.gguf", n_ctx=512, n_threads=8, verbose=False)
text = "Your text to summarize here..."
prompt = f"Summarize in one sentence:\n{text}\n\nSummary:"
output = llm(prompt, max_tokens=80, temperature=0.3, stop=["\n", "<|im_end|>"])
print(output["choices"][0]["text"])
./llama-cli -m qwen3-0.6b-summarizer-q8_0.gguf \
-p "Summarize in one sentence:\nYour text here\n\nSummary:" \
-n 80 --temp 0.3
Apply the LoRA weights to the base model:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# Load base model
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-0.6B", torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-0.6B")
# Load and apply LoRA weights (see lora_weights/best_distill.pt)
# Or use the pre-merged GGUF files directly with llama-cpp-python
text = "Your text here"
prompt = f"Summarize in one sentence:\n{text}\n\nSummary:"
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=80, temperature=0.3)
print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
| File | Size | Description |
|---|---|---|
qwen3-0.6b-summarizer-q8_0.gguf | 610 MB | Recommended. Q8_0 quantized, best speed/quality tradeoff. |
qwen3-0.6b-summarizer-f16.gguf | 1.1 GB | Full F16 precision. Slightly better quality, slower. |
lora_weights/best_distill.pt | 8.8 MB | Raw LoRA weights (PyTorch). Apply to base Qwen3-0.6B. |
training/training_metrics.json | 789 KB | Full training metrics (per-step loss, LR, grad norms). |
training/training_charts.png | 157 KB | Training loss curves visualization. |
training/gpu_distill.py | 18 KB | Training script (for reproduction). |
training/merge_and_export.py | 10 KB | LoRA merge + GGUF export script. |
| Metric | Value |
|---|---|
| Inference speed (CPU, 8 threads) | 3-5 seconds per summary (~7 tok/s) |
| Inference speed (GPU) | <0.5 seconds per summary |
| Model load time | 0.6s (Q8_0) |
| Average output length | ~30 tokens |
| Max recommended input | ~2,000 characters |
| Validation loss | 1.136 |
LoRA distillation from Gemini 3 Flash Preview outputs. The base Qwen3-0.6B is frozen; only LoRA adapters (rank=16, alpha=32) on q_proj and v_proj across all 28 attention layers are trained.
The model was trained with this exact prompt template:
Summarize in one sentence:
{text}
Summary:
Use this format for best results. The model outputs a single sentence and stops.

Best validation loss of 1.136 at epoch 3. Mild overfitting begins at epoch 4.
We tried five approaches before settling on distillation:
| Approach | Val Loss | Quality |
|---|---|---|
| Prefix tuning (embedding → soft tokens) | 1.15-1.24 | Hallucinated entity names |
| LoRA + embedding projection | 1.14-1.16 | Better but still imprecise on details |
| Text distillation (this model) | 1.14 | Near-verbatim reproduction |
The key insight: embedding vectors don't encode specific details (PR numbers, app names, exact error messages). By training directly on raw text, the model can see and reproduce those details. The distillation approach produces summaries that are nearly indistinguishable from the Gemini originals.
From the validation set (unseen during training):
| Reference (Gemini) | Generated (This Model) |
|---|---|
| Batch deployment — merged seven branches into clouderic including FolkReel query fixes, desktop/mobi... | Batch deployment — merged seven branches for clouderic including folkreel query field fixes, desktop... |
| FolkReel planning cycle — reviewed project state and strategic focus on AI-led interview elicitation... | FolkReel planning cycle — reviewed project state to prioritize interview elicitation and the iterati... |
| Bug fix for Claude configuration error — adding symlink-on-startup logic to the Go binary to ensure... | Claude configuration fix — adding symlink-on-startup logic to Go binary and running tests to resolv... |
| WebUI Next planning cycle — enforcing a tight 10-minute loop to address subpar product quality... | WebUI Next planning cycle — enforcing a short cadence to address poor visual design and interaction... |
Apache 2.0 (same as the base Qwen3-0.6B model).