AtomicoLabs Logo

AtomicoLabs

Back to blog
AI Research· AtomicoLabs Research

AtomicoPIIFilter 1.0: a 70M on-device model that beats Grok on PII spans

A bilingual DeBERTa-v3-xsmall encoder hits exact-span F1 0.897 English and 0.939 Spanish — above Grok 4.5 High on the same evals. The English-only predecessor did not clear the bar. Bilingual data did.

AtomicoPIIFilter 1.0: a 70M on-device model that beats Grok on PII spans
Photo: Towfiqu barbhuiya / Unsplash

Prefer the full version? Download the whitepaper (PDF). Methodology, per-type tables, hybrid decode, ONNX parity, and the exact claim bounds are there. HTML: WP-2026-02.

The claim

On our held-out exact-span PII evals, AtomicoPIIFilter 1.0 exceeds Grok 4.5 High:

EvalGrok 4.5 HighAtomicoPIIFilter 1.0
English (n=400)0.8930.897
Spanish (n=300)0.8950.939

The model is a ~70M DeBERTa-v3-xsmall token classifier, not a hosted LLM. It runs as a BIO tagger plus a regex union (email, phone, IPv4, IBAN, Luhn cards).

That is a real result. It is also a bounded one: in-house evals, exact character spans, PERSON still hard. The whitepaper states the bound in section 7.

Why this architecture

We ran a size ladder first. Generative specialists failed to clear Grok:

  • SmolLM2-135M: F1 0.504
  • Qwen2.5-0.5B: F1 0.871
  • English-only encoder: F1 0.865 — close to 0.5B, still under 0.893

The encoder was the right shape (no JSON, no sampling, 512-token pass). English-only weights were not enough. We froze that checkpoint as an immutable fallback, then trained a new bilingual run.

English F1 by model class

What bilingual training changed

English did not regress. It went up (0.865 → 0.897), which also cleared the gate of frozen − 0.01. Spanish landed at 0.939 against a 0.80 target and a 0.895 Grok bar.

The Spanish lift is not “it finally learned names.” PERSON is essentially tied with Grok (0.782 vs 0.786). The gain is recall on localized structure — ADDRESS and DATE_DOB — and fewer misses overall (96 FN vs Grok’s 206).

Exact-span micro-F1

PERSON is still the problem

On English, Grok still leads PERSON (0.855 vs 0.845). ADDRESS recall is the biggest leak (FN 138). CREDIT_CARD and IBAN have too little gold to rank models; those types are why the regex/Luhn union exists.

English per-type F1

On-device status

  • ONNX: 50/50 span parity vs PyTorch on a 50-example English slice.
  • Core ML: blocked. DeBERTa relative attention hits sqrt(int32). We are not pretending that export worked.
  • iOS harness: regex hybrid + BIO decode + highlight/substitute UI, with 20 EN + 20 ES bundled examples.

Weights stay in the lab repo. The product path is ONNX Runtime Mobile until we ablate a DistilBERT backbone for Core ML.

Read the paper

Full protocol, tables, and caveats: AtomicoPIIFilter 1.0 whitepaper (WP-2026-02).

Questions: c@atomicolabs.com.

From the lab

Latest insights

View all posts