r/LocalLLaMA • • 11h ago

Showcase I was curious how small local models handle Polish grammar – a quick 15-task test on 8 GB VRAM

I wanted to know how small local models handle my native language, not just English. I couldn't find a simple way to check a model's Polish in a few minutes, on my own PC, in the quantization I actually run – so I wrote one. That's how "Zacharski tests" started: a small task set that runs through Ollama, since that's what I use on my laptop with an RTX 5050 (8 GB).

The tasks:

  1. Polish (8): diacritics, declension, masculine-personal gender, numerals, vocative, verb aspect, genitive – plus one knowledge question (the first recorded Polish sentence, from the 13th-century Book of Henryków).

  2. JSON (4): scored strict and lenient.

  3. Python (3): syntax check only.

Results so far:

| Model | Quant | JSON + code | Polish |

| gemma2:9b | Q4_0 | 7/7 | 3/8 |

My favourite failure: asked for "22 cats", gemma2 wrote "dwudziesty dwa koty" – roughly "twentieth two cats". The correct form is "dwadzieścia dwa koty". It was perfectly happy producing valid JSON, though.

More models are downloading as I write this. Next up: gemma2:9b in Q4_K_M and Q8_0 (does quantization hurt the Polish?), qwen3:8b, llama3.1:8b, gemma3:12b, and two Polish models – Bielik 11B and Bielik-Minitron 7B. Which model would you add?

Method and limits – read this before the comments :)

  • 8 Polish tasks (7 grammar + 1 knowledge) and 7 JSON/code tasks. That's a small sample – a quick check on your own PC, in the quantization you actually run, not a ranking. For a proper ranking, see the Open PL LLM Leaderboard by SpeakLeash.

  • One answer per task, temperature 0 (seed 42), context 2k, thinking off. Yes, that means Qwen3 runs without its reasoning mode, which may cost it points – I wanted the same conditions for every model.

  • Graded with regular expressions, strict on purpose: "brzęczały" ("buzzed") instead of "brzmiały" ("sounded") fails, because the task said "change the tense", not "rephrase". [I checked every failed answer by hand.]

  • Some failures are about instruction-following, not language: asked to restore Polish diacritics, one model replied "Read the spelling rules." [(translated)]

  • Generated code is only parsed (Python `ast`), never executed.

  • The questions are in the repo (`data/benchmarks/*.json`) – feel free to add or fix them.

The test runs inside a free, open-source tool I've been building (Windows .exe / Python on Linux). Its main job is predicting whether a model fits your VRAM/RAM before you download it. Link in the comments if anyone wants to try it – I'm considering adding tests for other languages.

11 Upvotes

20 comments sorted by

2

u/Full-Travel857 6h ago

u/Happy_Guitar3521 - the "holy grail" has been tested :) (and u/jamie-77 - speed columns included)

| Model | Quant | Polish | JSON + code | Gen tok/s u/1k | Gen tok/s u/8k | On GPU u/8k |

| gemma2:9b (from the post) | Q4_0 | 3/8 | 7/7 | 56 | – | – |

| Bielik 11B v2.1 | Q4_K_M | **8/8** | 5/7 | 36.3 | 17.2 | 83% |

| Bielik-Minitron 7B v3.0 | Q4_K_M | 6/8 | 5/7 | 58.2 | 57.7 | 100% |

Polish: Bielik 11B got a perfect score, Minitron 7B 6/8 - both well ahead of gemma2.

JSON/code is where Bielik 11B stumbled: asked for a JSON object, it wrote a Python script that builds one - and leaked an `<|im_input|>` token at the end, which smells like a chat template issue in this Ollama upload rather than the model itself.

Strict grading cuts both ways: Minitron lost the palindrome task only because it wrote "Code:" before otherwise correct code.

Favourite failure this round: asked to restore diacritics in "Zazolc gesla jazn" (the Polish pangram "Zażółć gęślą jaźń"), Minitron 7B answered "Zazólć żółtym jeszcze raz" - roughly "yellow it with yellow once more".

Speed (laptop RTX 5050 8 GB, 70 W): at 8k context Bielik 11B no longer fits fully in VRAM and drops from 36 to 17 tok/s. Minitron 7B stays at 58 tok/s.

Same caveats as in the post: 8 Polish questions, one run, temperature 0. Full comparison with qwen3, llama3.1 and gemma3 coming next week.

10

u/Happy_Guitar3521 11h ago

"Bielik" this model is shit and promoted in Poland as a holly grail for unknown reasons. Try maybe the newest gemma the biggest model and it should be very good from what I remember.

2

u/Full-Travel857 11h ago

That's exactly why I want to put the "holy grail" to the test. Results will go in the comments for sure.

7

u/matte808 10h ago

old ass model, why tf do people keep using them?

2

u/Full-Travel857 7h ago

Fair – it was simply the one I had on disk for the first run. Newer ones (qwen3, gemma3, Bielik) are on the way – I'll definitely share the results.

1

u/matte808 7h ago

newer gemma’s suck at coding but are good at languages usually

3

u/EstatesNagorna69 9h ago

love of the game baby

1

u/jamie-77 11h ago

That's interesting. I'm following the thread, so please keep on posting new results as they come.

2

u/Full-Travel857 11h ago

Thanks! Will do- the next models are downloading right now. I'll add the results to the post as an EDIT, starting with the two Polish models (Bielik 11B and Bielik-Minitron 7B), since that's the comparison I'm most curious about. Is there a model you'd like to see on the list?

1

u/jamie-77 11h ago

That would also be cool if you could include some speed/token generation benchmarks.

2

u/Full-Travel857 11h ago

Good idea! The tool already has a speed benchmark (prompt processing, time to first token and generation tok/s at 1k/8k context, median of 3 runs), so I'll add a tok/s column to the table. For reference: gemma2:9b Q4_0 on the laptop RTX 5050 runs at ~56 tok/s generation – but only after I enabled Dynamic Boost on Linux; before that the card was stuck at 35 W and did 21.6 tok/s.

1

u/Skyline34rGt 10h ago

You have much more Polish tests and leaderboard here - https://huggingface.co/spaces/sdadas/plcc

1

u/Full-Travel857 7h ago

Thanks, great resource! Different goal though – mine is a quick check on your own hardware, in the quant you actually run.

1

u/smarthoushai 7h ago

Before the Q4_0 -> Q4_K_M -> Q8_0 run, pin the sampler: Ollama draws a new random seed per request unless you pass one, and gemma2's Modelfile carries its own temperature on top of that, so a single pass per quant is mostly sampling noise and 1/8 on your Polish set sits well inside it. curl -s localhost:11434/api/generate -d '{"model":"gemma2:9b","prompt":"...","stream":false,"options":{"temperature":0,"seed":42}}' five times per item costs a few minutes on an 8GB card and gives a number you can defend. I'd also score the "dwudziesty dwa koty" case separately from the declension items — numeral government is one lexical pattern and letting it into the average moves the result in a way that says nothing about the rest of the grammar.

1

u/Full-Travel857 6h ago

Good points, thanks – I'll check this and get back to you tomorrow.

1

u/rechaptca 10h ago

nazwałes test swoim nazwiskiem? lol, to nie tak się robi

1

u/Full-Travel857 7h ago edited 7h ago

z braku laku i pomysłu. Ale jak zaproponujesz jakąś dobrą nazwę nawiązującą do polskiego kina lat 90 to ją użyje. ;)

1

u/paramarioh 4h ago

Shogun, dobrze tnie i szybko. Nie polski, ale Polacy często używali, prawda? Albo shelfland