Gli n-gram non sono una tecnologia nuova. Sono un concetto storico della modellazione del linguaggio: un n-gram è semplicemente una sequenza di N token consecutivi. Un bigramma ne contiene due, un trigramma tre, quindi in New è un bigramma mentre live in New è un trigramma.

Prima dei moderni LLM gli n-gram venivano già utilizzati nei modelli statistici del linguaggio per osservare quali sequenze comparivano più frequentemente. L'idea, quindi, è vecchia; ciò che è nuovo è il modo in cui viene reinserita dentro architetture neurali moderne. Una delle implementazioni recenti più interessanti prende il nome di DeepSeek Engram, e riprende il concetto di n-gram trasformandolo in una grande memoria neurale interrogabile tramite lookup.

Qwen3.8-Flash-Next porta questa idea dentro la propria architettura, dichiarando esplicitamente di essersi ispirato anche a DeepSeek Engram. Nel modello Qwen vengono utilizzati bigrammi e trigrammi e viene aggiunta una gigantesca tabella di n-gram embedding, per circa 51 miliardi di parametri aggiuntivi.

Il meccanismo, a grandi linee

Durante il training, grazie alla loss e alla backpropagation, i vettori contenuti nella memoria n-gram vengono modificati un numero enorme di volte. Ma cerchiamo di essere più precisi, perché il punto delicato è cosa rappresenti esattamente quel vettore: non un singolo token, come accade nella normale embedding matrix, bensì un pattern locale, quindi un bigramma o un trigramma.

Prendiamo per esempio live in New. Questa sequenza viene trasformata tramite una funzione di hashing e, in forma molto semplificata, possiamo scriverlo così:

live in New → hash → indice della tabella → vettore n-gram

L'hash è deterministico: dato lo stesso n-gram e la stessa funzione di hashing, il risultato sarà sempre lo stesso. Va da sé che non è quindi corretto pensare all'hash come al significato del testo — l'hash serve soltanto a stabilire in quale posizione della tabella andare a cercare.

Dentro quella posizione troviamo un vettore, qualcosa del tipo [0.18, -0.72, 1.31, 0.04, ...], e durante il training quel vettore viene continuamente modificato tramite backpropagation, fino a diventare una rappresentazione molto utile del pattern live in New. Volendo tradurre brutalmente quel vettore in linguaggio umano, potremmo immaginarlo come qualcosa del tipo: "questa combinazione di token compare spesso in contesti nei quali una continuazione molto plausibile è York".

Naturalmente questa è una semplificazione estrema. Nel modello non esiste una cella nella quale sia scritto "dopo New viene York": stiamo sempre parlando di vettori, numeri, funzioni matematiche e rappresentazioni in spazi multidimensionali.

Cosa succede durante l'inferenza

Durante l'inferenza il meccanismo diventa particolarmente interessante. Supponiamo che il modello incontri nuovamente live in New: viene calcolato lo stesso hash utilizzato durante il training, si arriva quindi allo stesso indice, e da quella posizione viene recuperato il vettore n-gram che durante il training è stato aggiornato milioni di volte.

Il punto fondamentale è che il modello non deve ricostruire da zero tutta quell'informazione attraverso costoso calcolo neurale: può recuperare direttamente una rappresentazione già appresa tramite una lookup in memoria. Quel vettore viene poi inserito nel flusso delle rappresentazioni del modello, ed è come se da quel momento in poi i layer successivi se lo ritrovassero a disposizione insieme a tutte le altre informazioni. In Qwen3.8-Flash-Next il modulo n-gram è collocato molto presto nella rete, al layer 2.

Una rappresentazione estremamente semplificata potrebbe quindi essere:

Tokenizzatore
     ↓
Token ID
     ↓
Embedding normale
     ↓
Layer 1
     ↓
Layer 2
     ├── costruzione bigrammi / trigrammi
     │
     ├── hashing
     │
     ├── lookup nella tabella n-gram
     │
     └── recupero dei vettori n-gram
              ↓
     integrazione nel flusso del modello
              ↓
        layer successivi
              ↓
     previsione del prossimo token

Quindi, tornando all'esempio:

live in New
     ↓
hash
     ↓
vettore n-gram appreso
     ↓
layer successivi
     ↓
York

Ma attenzione: il vettore n-gram non contiene la risposta "York". Contiene una rappresentazione matematica del pattern live in New che rende più semplice ai layer successivi arrivare, tra le altre possibilità, proprio a York.

Perché conviene

Il vantaggio principale è il rapporto tra capacità e compute. Una normale parte neurale del modello richiede moltissime moltiplicazioni tra matrici, mentre una tabella di embedding può essere semplicemente interrogata: calcolo l'indice e recupero il vettore. In maniera brutale:

n-gram
  ↓
hash
  ↓
cassetto della memoria
  ↓
vettore già appreso

Qwen3.8-Flash-Next aggiunge in questo modo circa 51 miliardi di parametri di n-gram embedding, ma questi parametri non devono essere tutti attraversati con moltiplicazioni a ogni token. La tabella può inoltre essere mantenuta nella memoria host, e i vettori necessari possono essere prelevati in anticipo mentre il resto del modello continua a calcolare.

Abbiamo quindi una forma di memoria associativa economica che affianca il normale calcolo del modello, e mi sembra che sia questo il concetto più utile da tenere a mente: un piccolo gruppo di token viene trasformato tramite hashing in un indice, in quella posizione si trova un vettore appreso durante il training, e in inferenza quel vettore può essere recuperato a basso costo e fornito ai layer successivi come informazione aggiuntiva sul pattern locale. In altre parole, anziché chiedere alla rete neurale di ricostruire ogni volta da zero anche associazioni locali estremamente comuni, le diamo una grande memoria nella quale alcune di queste informazioni sono già state apprese.


Fonti essenziali

  • Qwen Team, Qwen3.8-Flash-Next: A New Architecture, Towards Ultimate Cost-Efficiency, agosto 2026.
  • Qwen Team, On the Design of Qwen3.8-Next Architecture: Evaluation, Efficiency, and Training Stability, agosto 2026.
  • DeepSeek, Conditional Memory via Scalable Lookup: A New Axis of Sparsity for Large Language Models (Engram), gennaio 2026.