AI locale

TensorFold: il motore che rende gli LLM locali 2–3× più veloci — senza che cambi un solo token

TensorFold: il motore che rende gli LLM locali 2–3× più veloci — senza che cambi un solo token

Mercoledì sera Ash Hart pubblica su X: «I didn't imagine it to blow up like this». Tre giorni prima il suo progetto TensorFold aveva superato le 800 stelle su GitHub. Lo stesso giorno esce la versione 0.6.1 — la dodicesima release in cinque giorni. Quella che era nata come un esperimento da fine settimana «per rendere Qwen 27B più veloce» è diventato il motore di inferenza a crescita più rapida della scena AI locale. La ragione è una promessa che nessun altro mantiene in questa forma: TensorFold è più veloce, senza che cambi un solo byte dell'output.

Cos'è TensorFold?

TensorFold è un motore di inferenza open source (Apache-2.0) che serve LLM locali dietro un endpoint compatibile OpenAI — su Apple Silicon (Metal/MLX) come su GPU NVIDIA, DGX Spark inclusa. Basta un comando:

bash
pip install git+https://github.com/ashhart/TensorFold.git
tensorfold serve Vontra/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-MLX-4bit --context 65536

Il server scarica il modello da Hugging Face, costruisce kernel Metal o CUDA specifici per famiglia ed espone /v1/chat/completions. Qualsiasi client OpenAI — agenti di coding, SDK, curl — funziona senza modifiche.

Dietro il progetto c'è Ash Hart, architetto indipendente di sistemi AI dal Regno Unito, che ha sviluppato anche MCDMA (Metal-CUDA Direct Memory Access) e Imprint. Lavora al progetto insieme a un impiego a tempo pieno, ormai supportato da due nomi noti della scena: MiaAI-Lab e Volatile Markets sono entrati ufficialmente nel team centrale.

Il tratto distintivo: decoding assistito identico al byte

Il guadagno di velocità arriva dal decoding speculativo: un piccolo modello di bozza (DFlash2 o una testa MTP) anticipa diversi token, e il modello grande li verifica in blocco attraverso «lane» — più righe di bozza in un solo forward pass. In sé non è una novità; anche vLLM fa MTP.

La novità è il contratto di accuratezza. TensorFold garantisce che una risposta assistita sia identica al byte alla stessa richiesta senza bozze. Per questo il progetto scrive kernel propri esatti per riga: i bit di una riga non possono dipendere da quante righe condividono il passaggio di verifica. Il campionamento è keyed — il token alla posizione p è derivato in modo deterministico da seed, posizione e ID del token. La formula del recipe book: «Drafted decoding writes the same bytes as serial decoding. Drafts change speed only.»

Ogni release lo verifica empiricamente: ogni risposta assistita viene confrontata byte per byte con la stessa richiesta con "draft": false. Il server riporta un hash token_sha e min_rows per ogni risposta. Per provarlo di persona, inviate due volte lo stesso prompt — una volta con e una senza bozze — e confrontate le uscite.

I numeri

Su DGX Spark (GB10) TensorFold si colloca da 1,6 a 3 volte sopra vLLM con MTP a seconda del modello — misurato attraverso lo stesso client OpenAI, mediana su cinque seed:

ModelloSparksvs. vLLM (MTP=3)
Qwen3.8-27B + DFlash212,70–3,05×
Qwen3.8-27B + DFlash221,94–2,49×
Qwen3.8 Flash Next11,60–1,79×
Qwen3.8 Flash Next21,74–2,24×
GLM-5.3-Flash21,78–2,06×

In concreto: GLM-5.3-Flash su due Sparks decodifica a 63 tok/s; Qwen3.8-27B su un solo Spark raggiunge 58,3 tok/s di prosa single-stream e 220 tok/s a 8 stream. Su un M3 Ultra (senza le unità tensoriali del M5), Qwen3.8-27B è passato da 27 fino a 131–160 tok/s.

Da tenere presente: non è un trucco di quantizzazione. Stessi checkpoint 4-bit, stessa qualità — il motore semplicemente estrae di più da ogni lettura dei pesi.

La community fa il resto

Che distingue TensorFold da progetti comparabili è il ritmo e l'apertura. Solo negli ultimi giorni: supporto RTX 40 (Ada), RTX PRO 6000 Blackwell con checkpoint NVFP4, API Responses, metriche Prometheus, il passaggio ad Apache-2.0 — e un flusso di PR della community ringraziati singolarmente per nome nelle release notes.

MiaAI-Lab ha pubblicato un'intera collezione di ricette su TensorFold: GLM-5.3-Flash EXL3 su 2× DGX Spark (con 1M di contesto, 4 stream, un pool KV da 2,9M token), Qwen3.8-27B su un solo Spark, e secondo i suoi annunci presto ricette per 3× e 4× Sparks per DeepSeek v4.1 Flash. Ogni ricetta arriva con una pagina dedicata e numeri misurati — e abbiamo già aggiunto la ricetta GLM-5.3-EXL3 al nostro database di ricette Local-AI.

Il nostro test di robustezza: un cluster 2× GB10 (ASUS GX10) attraverso uno switch MikroTik CRS504 invece del cavo diretto, GPU limitate a 2.200 MHz, riproduzione dei numeri del README con sparkDash. Risultato: decoding entro ±5% dal riferimento, output strutturato a 2 e 4 stream addirittura +11–14% sopra, prefill entro il 3–5%, 1M di contesto completo. I numeri delle ricette si riproducono quindi anche fuori dall'hardware originale — uno switch al posto del cavo non costa quasi nulla.

I limiti onesti

Tre cose da sapere:

La concorrenza è il compromesso. Un benchmark della community di WescheNex1q lo dice sobriamente: a 16 richieste parallele su uno Spark vLLM batte chiaramente TensorFold (253 contro 62 tok/s aggregati); su una singola richiesta vince TensorFold (83 contro 57). TensorFold è il motore mono-utente più veloce esistente — per un server di team con decine di agenti simultanei vLLM resta la scelta. Le release attuali lavorano esattamente su questo punto (prompt che si riempiono durante i round di decoding, priorità in background), ma la battaglia è aperta.

Il prefill non accelera sui Mac. Il guadagno di velocità vive nel decoding; su Apple Silicon la velocità di prefill è comparabile agli altri motori. Su CUDA la situazione è molto migliore grazie ai CUDA graph e all'ottimizzazione dei kernel (fino a 1,27× vLLM sui prompt lunghi).

Un maintainer con un lavoro a tempo pieno. Sette release in 34 ore nel weekend di lancio — impressionante, ma anche un bus factor di 1. L'ingresso di MiaAI-Lab e Volatile Markets è la risposta diretta, e le PR della community continuano ad arrivare. Per la produzione significa comunque: bloccare le versioni, leggere i changelog.

Un altro punto spesso trascurato: TensorFold misura la propria qualità. Per i checkpoint NVFP4 il progetto pubblica la concordanza top-1 contro un forward di riferimento fp32 (92,9% nella matematica del checkpoint contro il 93,0% di vLLM) — invece di celebrare solo i tok/s. Coerente per un progetto la cui intera promessa è «same bits».

Per chi è TensorFold?

  • Possessori di DGX Spark e Mac: guadagno netto, con lo stesso server e lo stesso output su entrambe le piattaforme. Su una configurazione a 2 Sparks, GLM-5.3-Flash gira con 1M di contesto su hardware consumer.
  • Utenti di agenti di coding: argomenti delle tool call in streaming, API Responses, cache dei prompt (prompt da 18k reinviati: da secondi a meno di 0,1 s) — esattamente ciò che servono ai loop degli agenti.
  • Operatori di server di team: aspettate ancora un po' o tenete vLLM. Il lavoro sulla concorrenza è in corso ma non finito.

TensorFold sta mostrando quanto velocemente l'inferenza locale può avanzare quando qualcuno scrive i kernel di persona invece di configurare i default di un framework. Nel 2025 la scena AI locale ha imparato a far girare i modelli in locale. Nel 2026 sta imparando a farli girare veloci — e TensorFold ne è l'esempio più visibile. Quali checkpoint e quali ricette esistono per quale hardware lo mostra il nostro hub Local-AI con il suo database pubblico di ricette — misurazioni verificate invece di numeri di marketing.

FAQ

TensorFold è un modello o un motore? Un motore. TensorFold sostituisce il server di inferenza (vLLM, SGLang o ollama, per esempio) e carica checkpoint esistenti da Hugging Face. Il modello stesso — Qwen3.8-27B, GLM-5.3-Flash, Nemotron 3.5 Lightning, Qwen3.8 Flash Next — resta invariato; i pesi, e con loro l'intelligenza, sono esattamente gli stessi che su qualsiasi altro server. Cambia solo il modo in cui i kernel li calcolano.

Com'è possibile che un decoding accelerato sia identico al byte? Il trucco sta nella verifica: il modello di bozza solo indovina, il modello grande controlla e tiene solo i token indovinati che avrebbe scelto da solo. TensorFold scrive kernel in cui una riga del batch produce gli stessi bit di un decoding passo a passo, e rende il campionamento deterministico da seed, posizione e ID del token. Il risultato viene confrontato automaticamente con il decoding senza bozze a ogni release; il server riporta inoltre un hash del token per ogni risposta.

Serve una DGX Spark? No. TensorFold gira su Apple Silicon (dal M1 al M5, ogni generazione coperta da kernel propri) e su GPU NVIDIA dalla serie RTX 40 alla RTX PRO 6000 Blackwell passando per la DGX Spark (GB10). Su Mac basta un pip install; su Linux gira al meglio nel container PyTorch di NVIDIA. I numeri di ricetta più spettacolari vengono dalla community Spark, ma una singola RTX 4090 fa già girare Qwen3.8-27B con DFlash2 in una finestra di contesto da 40k.

E la qualità con la quantizzazione? I checkpoint che TensorFold usa (MLX 4-bit, EXL3/TR3 4bpw, NVFP4) sono creati da terzi e indipendenti dal motore. TensorFold non li tocca — lo stesso file di checkpoint dà la stessa qualità che sotto vLLM. Il progetto si misura anche da solo: con NVFP4, la concordanza top-1 contro un riferimento fp32 è del 92,9% (vLLM: 93,0%), e del 98,9% in modalità full precision. Chi vuole la qualità massima usa --precision full sugli stessi pesi.

Posso usare TensorFold per più utenti contemporaneamente? Entro certi limiti. Il focus è su pochi stream a bassa latenza — da 4 a 8 sessioni parallele sono il punto ideale su DGX Spark, e le ricette sono tarate su quello. Con decine di richieste simultanee l'aggregato perde attualmente contro vLLM, il cui continuous batching è ottimizzato per l'alta densità. Le release attuali («prompts fill inside the decode rounds», priorità in background) lavorano proprio su questo collo di bottiglia, e il divario si restringe di release in release.

Come si installa su una DGX Spark? La via più comoda è una ricetta della community pronta all'uso: MiaAI-Lab mantiene un setup Docker (ghcr.io) che configura TensorFold con il parallelismo tensoriale su due Sparks, la rete RoCE e il pool KV — basta inserire le proprie credenziali SSH in un local.sh e lanciare start.sh. A mano: avviate il container PyTorch di NVIDIA, installate TensorFold via pip, caricate i checkpoint con tensorfold pull, poi avviate rank 1 (per primo) e rank 0 su entrambe le Sparks. I runbook per agenti AI nel repository descrivono ogni passo in modo che anche un agente di coding possa portare avanti l'installazione da solo.

Sources

Un tema per il Suo team? Parliamone 30 minuti.

Valutiamo cosa funziona davvero nella Sua azienda — in concreto, senza valanghe di slide.

Senza impegno · 30 minuti · Offerta entro 48 h