I modelli generativi locali sono spesso associati a notebook potenti, GPU dedicate, decine di gigabyte di memoria e miliardi di parametri. Needle 2 offre un approccio completamente differente: si basa su soli 45 milioni di parametri, un singolo binario da 14 MB e circa 28 MB di RAM per una sessione completa.
Il progetto è sviluppato da Cactus Compute ed è pensato soprattutto per tre compiti precisi: tool calling, controllo dei dispositivi ed estrazione strutturata dei dati. Non vuole quindi competere con ChatGPT, Claude o Gemini nella generazione di testi aperti e nella conoscenza generale. L’obiettivo di Needle 2 è molto più circoscritto: interpretare una richiesta in linguaggio naturale e capire quale funzione invocare, con quali parametri, direttamente su dispositivi che normalmente sarebbero considerati troppo piccoli per ospitare un modello generativo.
Per accendere una lampada, impostare un termostato o ordinare a un piccolo robot di spostarsi non serve un modello capace di discutere di storia, scrivere codice complesso o rispondere a domande enciclopediche. Serve soprattutto tradurre una frase potenzialmente ambigua in una chiamata strutturata e affidabile.
Needle 2: 14 MB per un modello da 45 milioni di parametri
Cactus distribuisce Needle 2 come modello aperto con licenza Apache 2.0; i pesi sono disponibili anche su Hugging Face, mentre codice, motore di inferenza e strumenti per il fine-tuning si trovano nel repository GitHub.
Il modello completo occupa appena 14 MB e utilizza una quantizzazione denominata CQ2-bit, sviluppata dalla stessa società. Una sessione completa richiede indicativamente 28 MB di RAM. Cactus afferma di aver effettuato l’addestramento tenendo conto fin dall’inizio della quantizzazione: l’idea è evitare il forte degrado che modelli molto piccoli possono subire quando vengono quantizzati soltanto alla fine del processo.
All’avvio, il runtime identifica la CPU e seleziona le primitive più appropriate: Cactus dichiara supporto per ARM64, x86-64, ARMv7, RISC-V e WebAssembly, con esecuzione su Windows, Linux, Android, piattaforme Apple e Raspberry Pi. Il modello può quindi lavorare offline: una volta disponibile il binario, l’inferenza non richiede connessioni ai server Cactus o ad altri servizi cloud.
I numeri sulle prestazioni
Cactus dichiara per Raspberry Pi 5 prestazioni nell’ordine dei 500-800 token/s; su dispositivi VR come Meta Quest 3S e Apple Vision Pro la velocità dichiarata varia tra circa 400 e 1.500 token/s, mentre su smartphone economici della famiglia Samsung Galaxy A è indicato un intervallo approssimativo di 300-700 token/s.
Needle 2 genera prevalentemente strutture molto brevi. Un modello che deve restituire qualcosa come ciò che segue ha esigenze profondamente diverse da un LLM che deve produrre centinaia di parole di risposta:
{
"tool": "set_temperature",
"temperature": 22
}
Il risultato interessante è piuttosto un altro: la latenza necessaria per interpretare un comando e trasformarlo in un’azione può diventare estremamente bassa anche su CPU poco potenti.
Il modello è adatto anche i microcontrollori
L’obiettivo dichiarato da Cactus non sono soltanto smartphone e Raspberry Pi. La scheda pubblicata su Hugging Face indica che il modello può raggiungere anche microcontrollori come ESP32-P4; gli sviluppatori riportano inoltre esperimenti della comunità su ESP32-S3 con un footprint nell’ordine degli 11 MB in configurazioni specifiche.
Anche in questo caso, il modello è progettato principalmente per selezionare strumenti e compilare parametri: Needle 2 non deve “conoscere il mondo”. Deve bensì limitarsi ad accertare quale funzione corrisponde all’intenzione dell’utente e quali valori inserire nei relativi campi.
Per domotica, indossabili, piccoli robot, sistemi automotive o dispositivi embedded, Needle 2 può diventare un partner preziosissimo capace di massimizzare le abilità di ciascun dispositivo.
Anche l’estrazione dei dati diventa una tool call
La stessa architettura è utilizzata per un altro caso interessante: trasformare testo libero in dati strutturati.
Supponiamo di avere un testo contenente i dettagli su una fattura, l’importo e la scadenza: partendo dalla definizione di uno schema composto da cliente, importo e data_scadenza, Needle 2 può restituire i valori strutturati.
Cactus sottolinea che internamente non esiste una modalità separata dedicata all’estrazione: viene semplicemente dichiarato un unico strumento il cui lo schema rappresenta il record da ottenere. Poiché la grammatica consente soltanto quella chiamata, la struttura dell’output diventa vincolata per costruzione.