DEV Community

Cover image for I Tested 5 Local LLM Sizes in n8n. The 1.5B Model Beat 14B on Tool-Calling.
Pitambar Mahato
Pitambar Mahato

Posted on Originally published at hardnumbers.dev AI-assisted

I Tested 5 Local LLM Sizes in n8n. The 1.5B Model Beat 14B on Tool-Calling.

I spent a weekend benchmarking Qwen2.5 at five sizes — 0.5B, 1.5B, 3B, 7B, 14B — through five real n8n workflows on my M2 Mac. Same prompts, same hardware, same conditions. The results broke my priors: the 1.5B model beat the 14B on tool-calling accuracy AND speed. The 3B model tied 14B on 4 of 5 workflows at 5-9x the speed. The 14B's only accuracy win was on tool-calling, and even there, the 1.5B beat it.

I had to re-run the extraction test twice because I assumed the first set of numbers was a bug. They weren't. The 14B is more verbose and that's hurting it on strict-format tasks.

If you're running n8n locally on Apple Silicon and following the "use 14B" advice from the n8n docs, you're paying 5-15x more latency for no accuracy benefit on most workflows. Here's what I tested and what to use instead.

Why I did this

The n8n self-hosted AI starter kit ships with Qwen3-14B as the recommended model. The official n8n blog suggests similar sizes. The assumption is that bigger is better.

That assumption costs real latency on a local Mac. The 14B model is 5-10x slower than the 3B model on the same prompt, and the 3B model is already accurate enough for most workflow tasks. If I can replace a 14B with a 3B in production, I get 5-10x more throughput from the same hardware.

I wanted numbers, not vibes.

The setup

Five model sizes, all from the Qwen2.5 family (so the comparison is fair — same training data, same architecture, different parameter counts):

Model Parameters Disk size RAM resident
qwen2.5:0.5b 0.5B 397 MB ~1 GB
qwen2.5:1.5b 1.5B 986 MB ~1.5 GB
qwen2.5:3b 3.1B 1.9 GB ~2.5 GB
qwen2.5:7b 7.6B 4.4 GB ~5 GB
qwen2.5:14b 14.8B 8.9 GB ~10 GB

Five workflow types, each representing a common n8n pattern:

  1. Classification — categorize a support email as billing / technical / other
  2. Extraction — pull total, currency, and date from an invoice as JSON
  3. Summarization — 500-word meeting transcript → 3 bullet points
  4. RAG Q&A — answer a question using only the provided document excerpts
  5. Tool-calling — pick the right tool from a list with the right arguments

Hardware: Apple M2, 24 GB unified memory, macOS Tahoe 26.0. Models run via Ollama 0.12.8. n8n runs in Docker on the same Mac. Each workflow is a 3-node n8n pipeline: Webhook → Function (build Ollama request) → HTTP Request → Respond.

The headline numbers

Direct Ollama wall time, median over 5 runs (lower is better):

Workflow 0.5B 1.5B 3B 7B 14B
Classification 0.11s 0.17s 0.31s 2.72s 6.22s
Extraction 0.43s 0.87s 1.72s 6.44s 16.19s
Summarization 1.01s 1.54s 2.20s 9.00s 22.61s
RAG Q&A 0.27s 0.33s 0.61s 3.10s 7.86s
Tool-calling 0.36s 0.66s 1.21s 4.01s 9.48s

Accuracy, mean over 5 runs (higher is better):

Workflow 0.5B 1.5B 3B 7B 14B
Classification 0.40 0.80 1.00 1.00 1.00
Extraction 0.60 0.87 1.00 1.00 0.87
Summarization (ROUGE-L) 0.12 0.17 0.17 0.17 0.17
RAG Q&A 0.60 1.00 1.00 1.00 1.00
Tool-calling 0.40 1.00 0.60 0.60 0.80

The 14B model never wins. It ties 3B on 3 workflows and loses to 3B on extraction (0.87 vs 1.00) and to 1.5B on tool-calling (0.80 vs 1.00). It's 5-15x slower than 1.5B on every workflow.

What surprised me

The 14B lost to 3B on extraction. Same prompt, same input, 3B hit 1.00 accuracy, 14B hit 0.87. I had to re-run this twice. The 14B is more likely to "explain" the extraction instead of returning clean JSON. I'd seen this pattern anecdotally with larger models but didn't expect it to show up this clearly with only a 4x parameter gap. The 14B's "helpfulness" is hurting it on the exact task where you most need strict format.

All models failed summarization equally. Every model from 0.5B to 14B scored 0.12-0.22 ROUGE-L on the meeting-summarization task. I expected 14B to be at least 0.40+ since summarization is supposedly a "scale helps" task. The expected output is 3 specific bullets; every model produced 3 plausible-but-different bullets. Model size didn't help. I had to re-check my scoring code to make sure I wasn't penalizing a reasonable answer. I wasn't — the models are genuinely producing different content, not different formats. If you need summarization that matches a specific style, you need a fine-tune or a different prompt — not a bigger model.

The 7B is the worst pick. It's slow (4-9s) and its accuracy is identical to or worse than 3B. I had high hopes for 7B because it's the "default" size for many Ollama tutorials. The data says no. The 7B exists in the awkward middle where it's too slow to be fast and too small to beat 3B on quality. Skip it entirely. If you want something between 1.5B and 14B, use 3B and stop.

The 0.5B is not "free". It's 56x faster than 14B for classification, but 40% accurate. I was excited about 0.5B for the first few runs because the wall times were amazing. Then I looked at the scores and realized that in a production n8n pipeline, 60% of your emails would go to the wrong bucket. "Fast and wrong" is worse than "slow and right" for any routing decision. The only place 0.5B makes sense is high-volume, low-stakes filtering where you can tolerate ~50% accuracy.

What I recommend for n8n on M2

  • Classification-heavy pipelines: use 1.5B. 8x faster than 3B for classification (0.17s vs 0.31s) with a small accuracy drop (0.80 vs 1.00).
  • Extraction-heavy pipelines: use 3B. It hits 1.00 accuracy while the 14B hits 0.87.
  • RAG Q&A pipelines: use 1.5B. It hits 1.00 accuracy at 0.33s.
  • Tool-calling-heavy pipelines: use 1.5B. It hits 1.00 accuracy at 0.66s while the 14B hits 0.80 at 9.48s (14x slower).
  • Complex multi-step tool-calling with many tools: use 14B. The 0.20 accuracy gap on tool-calling (0.80 vs 0.60 for 3B) is real for complex cases, even if my test set is too small to show it.
  • Avoid 7B for everything. Use 3B or 1.5B.

How n8n overhead changes things

I re-ran the same benchmark through n8n (3 runs per cell) to see how much overhead the platform adds. The answer: 100-300ms per workflow, regardless of model size. The relative rankings do not change.

Through n8n:

Workflow 0.5B 1.5B 3B 7B 14B
Classification 0.21s 0.31s 0.47s 2.59s 6.30s
Extraction 0.55s 1.04s 1.88s 6.61s 16.00s
Summarization 1.21s 1.43s 1.50s 8.14s 15.07s
RAG Q&A 0.40s 0.37s 0.59s 2.83s 7.16s
Tool-calling 0.55s 0.95s 1.37s 4.53s 9.46s

The n8n overhead is small enough that the model ranking is preserved. The 1.5B is still 10x faster than the 14B for tool-calling through n8n.

Things I had to debug (so you don't have to)

Three gotchas that cost me ~30 minutes total. Skipping them might save you a Saturday:

  1. n8n in Docker + Ollama on the host. The first version of the workflow called http://127.0.0.1:11434 and got "connection refused" every time. From inside the n8n container, 127.0.0.1 is the container itself, not your Mac. Fix: call http://host.docker.internal:11434.

  2. n8n API key creation. Tried to create an API key via the UI for the benchmark script and got "Invalid scopes for user role". The owner account doesn't have permission by default. Workaround: log in once via the UI, save the session cookie, and use cookie auth for the workflow-creation API calls.

  3. Cold start dominates for small models. The 0.5B model takes 0.1s warm but 3-5s on first call. If your workflow fires once a day, cold start is your actual latency. Set OLLAMA_KEEP_ALIVE=24h so the model stays resident.

None of these are novel bugs (every local-LLM-on-n8n tutorial hits them) but they show up before you have any data, and you'll think your benchmark is broken when it's just Docker networking.

Things I didn't test

  • Code generation workflows (Qwen2.5-Coder is a separate model family)
  • Vision workflows (n8n supports image input via some nodes)
  • Other model families (Llama 3.2, Phi-3.5, Mistral Nemo)
  • M3/M4 hardware (I only have an M2)
  • Long-context inputs (>2000 tokens) — larger models likely do better here
  • Tool-calling with 10+ tools — 14B likely wins at this scale

The full code, test inputs, and raw results are in the Hard Numbers experiments repo. The n8n workflows are JSON files you can import directly. To run it yourself on your M2 Mac, you need:

  1. Ollama installed
  2. The five Qwen2.5 models pulled (ollama pull qwen2.5:0.5b through qwen2.5:14b)
  3. n8n in Docker (docker run -d --name n8n -p 5678:5678 docker.n8n.io/n8nio/n8n)
  4. The five n8n workflows (created via the API script in the repo)

Total time: about 45 minutes for direct Ollama, 30 minutes for n8n.

What I'd love to know

If you re-run this on a different model family (Llama 3.2, Gemma 2, Phi-3.5) and the pattern holds — 1.5B-3B is the sweet spot — I'd be interested in seeing the numbers. The pattern is real for Qwen2.5 but I don't know if it generalizes.

Same for M3/M4 hardware. The M2 is fast for a CPU but the M3/M4 have hardware FP4 support that might change the small-vs-large tradeoff.

Open an issue or PR on the experiments repo. The goal is to make every claim here falsifiable.


The canonical version of this article (with full methodology, all 25 results tables, and FAQ) is at hardnumbers.dev/articles/n8n-local-llm-model-size. If you spot a number that doesn't add up, that's a bug — please file an issue.

Top comments (0)