Needle 2 - Het agentische LLM van 14 MB voor kleine apparaten

In benchmarks voor tool-aanroepen en het gebruik van mobiele apparaten presteert Needle 2 vergelijkbaar met grotere modellen zoals FunctionGemma (270M), LFM2.5 (230M) en Apple FM, terwijl Needle 2 factor 5 tot 70 kleiner is en gebruikmaakt van 2-bits precisie in plaats van f16.

Prestaties en Hardware

Needle 2 behaalt de volgende decodeersnelheden:

  • Raspberry Pi 5: 500 tokens/sec.
  • VR-apparaten (zoals Meta Quest 3S en Apple Vision Pro): tussen de 400 en 1.500 tokens/sec.
  • Budgetsmartphones (zoals Samsung A-serie, onder de $200): tussen de 300 en 700 tokens/sec.

Met een piekgebruik van ongeveer 28 MB RAM kan Needle ook draaien op moderne microcontrollers zoals de ESP32-S3. Het model is gelicenseerd onder Apache 2.0 en de gewichten zijn beschikbaar via Hugging Face.

Kernspecificaties

  • Parameters: 45M
  • Prefill (Pi5): 800+ tok/s
  • Decode (Pi5): 500+ tok/s
  • Compressie: CQ2-bit
  • Bestandsgrootte: 14 MB
  • Sessie RAM: 28 MB

---

Onze Visie

AI op apparaten onder de $200 brengen

Edge AI wordt vaak geassocieerd met Macs en pc's, maar de echte 'edge' bestaat uit goedkope hardware. Er zijn meer dan 21 miljard verbonden IoT-apparaten tegenover ongeveer 1,5 miljard pc's. In opkomende markten kosten de meeste telefoons minder dan $200. Needle richt zich specifiek op deze hardware: apparaten zonder GPU of NPU en met slechts enkele honderden MB RAM.

Function Call & Device Use

Voor het bedienen van een lamp is geen frontier-model nodig. Horloges, smart homes en robots stellen hun functies al beschikbaar via getypeerde parameters; de uitdaging is enkel om een informele zin te mappen naar de juiste functie en waarden. Omdat dit geen wereldkennis of open-ended proza vereist, volstaan 45 miljoen parameters daar waar chatmodellen miljarden nodig hebben.

Extractie & Gestructureerde Outputs

Het schema fungeert als de interface. Een schema plus een paragraaf resulteert in getypeerde velden: een enum-veld werkt als classifier en een array-veld verzamelt een lijst in één aanroep. Dit wordt afgedwongen via een contract: elke beurt wordt beantwoord met een call envelope. Een leeg antwoord geldt als weigering. Een op byte-niveau gecompileerde grammatica beperkt elk token, waardoor de parameters volledig kunnen worden benut voor het kiezen van functies en het gronden van argumenten in de woorden van de gebruiker.

Edge-Cloud Samenwerking

Geen enkel klein model kan alles dekken. Needle geeft dit aan in plaats van te gissen: elke respons bevat een geleerde betrouwbaarheidsscore (confidence score). Verzoeken die buiten het onderwerp vallen, resulteren in een lege aanroep. Boven een bepaalde drempelwaarde wordt de actie uitgevoerd; daaronder wordt er opnieuw gevraagd of geëscaleerd naar de cloud. Hierdoor blijft het standaardpad privé, direct en gratis.

Verliesvrije 2-bits Kwantisatie

Kleine modellen raken vaak beschadigd bij post-hoc kwantisatie. Daarom is Needle 2 vanaf de pretraining tot aan de post-training getraind tegen Cactus Quants (inclusief gewichten, activaties en KV-cache). Het 2-bit model dat wordt ingezet, is exact het model dat is getraind. Dit maakt het mogelijk om 45 miljoen parameters in 14 MB te passen zonder kwaliteitsverlies.

Co-design van Model & Inferentie

Elke architectonische keuze is gebenchmarkt op de doelhardware. Het resultaat is een dependency-vrij C++ binair bestand dat bij startup de CPU analyseert en de juiste kernels kiest. De tokenizer, het model en de grammatica-compiler zijn hierin verzegeld. Dit ene artefact draait overal: van Cortex-M via x86 tot WebAssembly.

Fine-tunen op Mac/PC

Omdat elk product een eigen set tools heeft, is Needle klein genoeg om lokaal te hertrainen. Met het beschikbare repo en Python-pakket kan एक model in enkele minuten tot uren worden getuned op een eigen computer, zodat het model de specifieke tools van een apparaat spreekt in plaats van een generieke assistent te zijn.

---

Productietoepassing

Needle is klaar voor productie in producten die een minimale RAM-voetafdruk, lage latentie, privacy en offline betrouwbaarheid vereisen. Pebble gebruikt Needle lokaal in de Index 01-app om gesproken verzoeken om te zetten in acties zonder afhankelijkheid van een netwerkverbinding.

"De Pebble Index Ring heeft geen scherm. Wanneer je ertegen spreekt, moet de actie gewoon gebeuren, elke keer weer, met of zonder internetverbinding. We draaien Cactus Needle lokaal in de app in plaats van te vertrouwen op de cloud. De footprint van het model is minuscuul en de prestaties laten ons nooit in de steek."
Eric Migicovsky, Founder, Pebble

---

Architectuur

Het Simple Attention Network

Needle 2 is gepre-traind op een propriëtair corpus van 115 miljard tokens en post-traind op 38 miljard tokens met compacte redeneringssporen. Ter vergelijking: LFM2.5-230M is getraind op 19 biljoen tokens (ongeveer 120x meer), maar de evaluaties tonen aan dat beide modellen elkaar in resultaten afwisselen.

De architectuur is ontworpen om capaciteit te winnen zonder bandbreedte te verbruiken:

  • Hadamard MLP: Vervangt gebruikelijke dense projecties door een vaste Walsh-transformatie en geleerde diagonalen, waardoor channel mixing bijna geen parameters kost.
  • Engrams: Verplaatst wereldkennis uit de stack naar gehashte n-gram tabellen die per token slechts enkele rijen lezen. Dit is cruciaal voor apparaten waar elke megabyte vanuit flashgeheugen leest ten koste gaat van latentie en batterijduur.
  • Multi-lane Residual Streams: Geeft een netwerk van 27 lagen (512 breed) de routeringsflexibiliteit van een veel breder netwerk.

Geheugensysteem en Engine

Het geheugen is ontworpen voor apparaten met een vaste hoeveelheid RAM:

  • Sliding Window: Een window van 256 tokens zorgt ervoor dat de KV-cache begrensd blijft, ongeacht de sessielengte.
  • Permanent Sinks: De systeemprompt en tool-declaraties zijn vastgepind als permanente sinks, zodat het model zijn tools nooit kan "vergeten".

De snelheid van de engine komt voort uit efficiëntie:

  1. Geen decompressie in RAM: 2-bit codes worden uitgebreid binnen vectorregisters en gefuseerd in integer dot products. De rekenpaden blijven end-to-end int8.
  2. Grammatica-optimalisatie: Omdat de matcher weet welke tokens legaal zijn voordat de logits bestaan, berekent de engine alleen scores voor kandidaat-rijen. Dit slaat tot 98% van de vocabulaireprojectie over bij structurele tokens.
  3. CPU-optimale kernels: De binary selecteert automatisch de beste kerneltier (SDOT, NEON, AVX2, RISC-V vectors, wasm SIMD of scalar).

Energie-efficiëntie

Op on-device silicon kost het verplaatsen van een byte uit flash of DRAM orders van grootte meer dan een multiply-accumulate operatie. Needle reduceert zowel FLOPs als bytes per token. Een conventionele transformer van dezelfde breedte en diepte verbruikt 164 MFLOPs per token; Needle verbruikt er slechts 70. De engine zorgt ervoor dat bij het decoderen van een token de 14 MB blob maximaal één keer wordt gelezen.

Rekenkracht per token

ModelParametersMatmul-actiefMFLOPs / token
Needle 245M35M70
Same-shape transformer, dense MLP82M82M164
Transformer bij matched params43M43M87
LFM2.5 230M230M230M460
FunctionGemma 270M270M270M540
Apple FM~3B~3B~6,000

Opmerking: Berekend met 2 FLOPs per multiply-accumulate over matmul-actieve parameters. Het verschil tussen de twee kolommen van Needle is de 'engram': 8M parameters gelezen via gather, wat geen rekenkracht kost.

Microcontrollers (MCU)

Door het begrensde sessiegeheugen zijn microcontrollers nu bereikbaar. De RAM-voetafdruk van Needle 2 is een deterministisch plafond van 28 MB. Dit past op MCU-onderdelen met extern RAM, zoals de ESP32-P4 (met 32MB PSRAM) of STM32H7 en NXP i.MX RT boards met SDRAM.

---

Evaluatie

De evaluatie is uitgevoerd op vijf publieke benchmarks voor function calling: Google's Mobile Actions, DroidCall, de Seal-Tools (in-domain en out-of-domain) en BFCL v4 single-turn. Er is gescoord op ordered strict exact match. Alle Needle 2 cijfers zijn gemeten via de C++ engine in productconfiguratie (CQ2-bit, tool retrieval aan, 256-token window).

Vergelijkingskader

Er zijn twee asymmetrieën in deze vergelijking:

  1. Precisie: Baselines gebruiken f16, terwijl Needle CQ2-bit gebruikt. Dit bevoordeelt de baselines.
  2. Scope: Needle is specifiek getraind voor agentische tool-aanroepen, terwijl baselines algemene taalmodellen zijn (chat, proza). Dit bevoordeelt Needle.

Resultaten: Mobile Actions (961 rijen)

ModelAccuracyName acc.Non-empty1-call2-call
LFM2.5 230M (f16)69.193.098.976.155.0
FunctionGemma 270M (f16)64.087.398.973.046.2
Needle 2 (CQ2-bit)63.798.399.471.348.4
Apple FM (on-device)57.694.295.564.543.8

Resultaten: DroidCall test split (200 rijen)

ModelAccuracyName acc.Non-empty1-call2-call
FunctionGemma 270M (f16)17.537.559.522.70.0
Needle 2 (CQ2-bit)17.036.547.522.10.0
LFM2.5 230M (f16)11.021.522.514.30.0

Resultaten: Seal-Tools In-domain (700 rijen)

ModelAccuracyName acc.1-call2–3-call4+-call
Needle 2 (CQ2-bit)32.664.963.021.814.6
LFM2.5 230M (f16)26.945.454.517.110.4
FunctionGemma 270M (f16)16.356.047.04.52.1

Resultaten: Seal-Tools Out-of-domain (654 rijen)

ModelAccuracyName acc.1-call2–3-call4+-call
Needle 2 (CQ2-bit)28.758.756.427.115.4
LFM2.5 230M (f16)17.035.042.613.79.8
FunctionGemma 270M (f16)15.648.950.011.06.3

BFCL v4 Single-turn (3,641 rijen)

Needle is niet getraind voor algemene function calling, maar op consumentenapparatuur (smart home, mobile, wearables, TV, auto). Desondanks presteert het bij eenvoudige Python-aanroepen bijna gelijk aan FunctionGemma (een model dat 6x groter is) en behoudt het een well-formed rate van 93,4% over alle rijen.

CategorieApple FMLFM2.5 230MFunctionGemma 270MNeedle 2 (CQ2)
Simple73.363.248.140.8
— Python86.885.562.361.2
— Java67.048.038.029.0
— JavaScript66.056.044.032.0
Multiple84.078.560.057.0
Parallel65.064.036.530.0
Parallel multiple52.051.530.522.5
Live simple70.545.033.736.8
Live multiple45.947.825.227.9
Live parallel50.043.818.825.0
Live parallel multiple58.345.825.029.2
Relevance100.068.881.281.2
Irrelevance28.377.772.160.8
Overall61.760.846.142.6
Well-formed rate95.094.2100.093.4