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)

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.

Downloads last month
20
GGUF
Model size
3B params
Architecture
qwen2
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for openamer-max/openamer-max-phone

Base model

Qwen/Qwen2.5-3B
Adapter
(1,499)
this model

Space using openamer-max/openamer-max-phone 1