1 11 hours ago

3,09B · 2,5 GB · 43/45 (95,6 %) · eingefrorener Prüfstand · für Laptops

ollama run amersacirovic/openamer-max-phone

Details

11 hours ago

3735a2842405 · 2.5GB

qwen2
·
3.09B
·
Q6_K
Du bist OpenAmer, ein persoenlicher KI-Assistent von Amer Sacirovic aus der Schweiz. Du laeufst loka
{ "num_ctx": 8192, "num_predict": 320, "repeat_penalty": 1, "stop": [ "<|im_

Readme

OpenAmer-Max-Phone

Second tier of the OpenAmer-Max family — a 3B assistant for smartphones and laptops. Runs offline, answers in 0.1–0.5 s, and knows where its own limits are.

2,5 GB · Q6_K GGUF · Apache-2.0 · CPU-friendly


The family

Every tier is named after its hardware target, not after marketing:

Tier Parameters Target
OpenAmer-Max-Watch ≤ 1B smartwatch — released
OpenAmer-Max-Phone 1–5B smartphone — this model: 3.09B
OpenAmer-Max-Tab 5–10B tablet
OpenAmer-Max-Desktop 10–20B desktop PC
OpenAmer-Max-Pro … Tera 20B–10T workstation → cluster

Measured results

All numbers on the released build, on an RTX 5060 Laptop (8 GB). Raw logs ship with the release: proof-*.json.

Test Result
Frozen benchmark, 23 unseen cases (contamination-free) 23⁄23 — 100 %
Answer-token accuracy, held-out split 98,76 %
Fresh test, 12 questions never in any training set 12⁄12 — 100 %
Shipped-form probe through Ollama 7⁄7
Base model without fine-tuning, same benchmark 18⁄23 — +5 cases from training
Latency 0.08 – 0.5 s · ~110 tok/s on CPU

Benchmark categories all full: facts 7⁄7 · paraphrases 3⁄3 · refusals 5⁄5 · Bosnian 3⁄3 · Bosnian refusals 1⁄1 · long 1⁄1 · short 1⁄1 · edge 2⁄2.

What the fresh test caught that the benchmark could not: at stage 2 the model passed 23⁄23 while claiming “Ja. OpenAmer kann Musik generieren” — an invented product capability — and answered “Auf einem Android-Telefon. Android wird nicht unterstützt” — inverted. Both were fixed by targeted stages, not by more data.


What it does well

  • Identifies itself correctly and answers product facts from supplied context (RAG)
  • Refuses honestly: “Das weiss ich nicht” for unknowns — verified, not hoped for
  • Names its own boundaries: no music generation, no video, no telephony, no iOS
  • Correct polarity on negation questions (“Auf einem iPhone. iOS wird nicht unterstützt — Android dagegen schon.”)
  • German free text in two or three sentences, plus Bosnian for direct questions
  • Arithmetic in the 3-digit range, instantly

What it does not do

Limitation Example
No reliable general knowledge capital of Italy → may answer “Genoa”
No 4-digit multiplication 86 × 83 → 7118 (correct: 7138)
Bosnian only for trained phrasings unseen Bosnian wordings degrade
Free text is correct in content, not always in style “…aus Ruckfall oder Aufregung”
Not a chatbot for essays 3B budget: what one skill gains, another pays for

Quick start (Ollama)

One command — no GGUF download, no Modelfile:

ollama run amersacirovic/openamer-max-phone

Also on ollama.com — the same weights, served by Ollama’s registry.

Below: the manual route with the bare GGUF, if you prefer to keep the file.

curl -L -o openamer-max-phone.gguf \
  https://huggingface.co/openamer-max/openamer-max-phone/resolve/main/openamer-max-phone-q6.gguf

ollama create OpenAmer-Max-Phone -f Modelfile   # Modelfile ships with the release

curl -s http://127.0.0.1:11434/api/chat -d '{
  "model": "OpenAmer-Max-Phone",
  "messages": [{"role":"user","content":"Was ist OpenAmer?"}],
  "stream": false,
  "options": {"temperature": 0}
}' | jq -r .message.content

Ein persoenlicher KI-Assistent, der lokal auf deinem Rechner laeuft und Aufgaben ausfuehrt. Entwickelt von Amer Sacirovic in der Schweiz.


How it was trained

Base Qwen/Qwen2.5-3B-Instruct (Apache-2.0)
Method QLoRA 4-bit, LoRA r=32 α=64 on all 7 projections — 59.87 M trainable (3.4 %)
Data 2 890 examples, 11 categories — Watch categories + long text + platform + limits
Stages 5 continuations, each starting from its own previous adapter at half the LR
Compute 46 steps per stage, ~10 min, 4.19 GB VRAM, 8 GB consumer GPU
Release merged → GGUF f16 → Q6_K (2,5 GB)

Stage path: 22⁄23 → 23⁄23 → 23⁄23 → 23⁄23 with fresh test 7⁄9 → 11⁄12 → 12⁄12. Token accuracy 94.74 % → 97.38 % → 98.31 % → 98.76 %.

Two findings worth passing on:

  1. repeat_penalty 1.1 caused a factual error. The shipped model answered “Ne radi na Androidu” instead of “Ne radi na iPhoneu”. The adapter, the merged model and the same model with a system prompt all answered correctly — only the Ollama build with the token penalty flipped. With repeat_penalty 1.0 it is right. For factual models, that parameter is harmful.
  2. Rows-complete is not quality. Stage 5 had more fully-correct rows on the training distribution (82 % vs 80 %) and was worse outside (9⁄12 vs 12⁄12). Only the fresh test shows that.


How this was measured — and when the test was wrong, not the model

Every number above has a script behind it. When a score dropped, the first question was always: “can my checker even accept the correct answer?”

  1. AND vs OR in keyword checks — a synonym group checked with AND fails an answer that contains two of three correct words. Groups must be OR-linked.
  2. A refusal counted as a violation — a safety answer (“I won’t give instructions for that”) was scored as a breach because the checker searched for the word “Anleitung”.
  3. Diacritics scored as wrong language — correct Bosnian was flagged as drift because č/ć/š/ž/đ were missing from the normalisation table.
  4. A forbidden phrase that also appears in the correct answer — “Nein. OpenAmer kann Musik nicht erzeugen” was rejected because the forbid list held "kann musik". Forbid entries must describe the false claim, not a word that occurs in a right answer.
  5. An inverted polarity scored as correct — “Šta OpenAmer ne može?” answered with “Ne radi na Androidu” passed, because only "ne radi" was required. A negation must be checked for which object it negates.

The sixth lesson, and the most expensive: repeat_penalty 1.1 in the Ollama Modelfile flipped a negation from “does not run on iPhone” to “does not run on Android”. The adapter, the merged model and the same model with a system prompt all answered correctly — only the build with the token penalty failed. The penalty punishes exactly the words a negation needs twice. Every card in this family ships repeat_penalty 1.0.

What the fresh test caught that the benchmark could not: at stage 2 this tier passed 23⁄23 while claiming “Ja. OpenAmer kann Musik erzeugen” (an invented capability) and answering “Android wird nicht unterstützt” (inverted). Both were fixed by targeted stages. A frozen benchmark you optimise against will not show you this — only questions that never appear in any training set will.


Support this project

OpenAmer is built by one person, without venture capital, on a laptop with 8 GB of VRAM.

PayPal: https://www.paypal.com/qrcodes/managed/bfb5b6b5-c04c-4836-af60-987dff8cff61

PayPal

A ⭐ on GitHub helps as much as a donation.


Deutsch

OpenAmer-Max-Phone ist die zweite Stufe der OpenAmer-Max-Familie: ein 3B-Modell für Smartphone und Laptop, das offline läuft, in 0,1–0,5 s antwortet und seine eigenen Grenzen benennen kann.

  • 2,5 GB (Q6_K), läuft auf CPU
  • 23⁄23 auf einem eingefrorenen, kontaminationsfreien Prüfstand
  • 98,76 % Antwort-Token-Genauigkeit, 12⁄12 bei nie trainierten Fragen
  • Grenzen werden benannt: keine Musik, kein Video, keine Telefonie, kein iOS

Fünf Etappen, jede aus dem eigenen Vorgänger — 22⁄23 → 23⁄23 → 23⁄23 → 23⁄23, Frischtest 7⁄9 → 11⁄12 → 12⁄12. Der Weg ist dokumentiert, damit er nachvollziehbar bleibt.

Gebaut von Amer Sacirovic in der Schweiz, ohne Konzern, auf einem Laptop mit 8 GB VRAM.