Tre ore e mezzo, cento turni, due conversazioni e un grafico in scala logaritmica: è quanto basta per vedere dove si rompe, oggi, un LLM locale a contesto esteso. L'esperimento gira su un MacBook Pro M5 Max con 128 GB di memoria unificata, usa llama.cpp b10686 con Metal, 12 thread e batch 2048, e un modello Qwen3.8-Flash-Next da 78,9 GB in quantization a 2 bit, spingendo il context slot fino a 358.400 token via YaRN, partendo da una finestra nativa di 262.144 token.

Il dato immediato è che l'hardware regge più del previsto. Pesi e KV completa da 350K token stanno sotto il limite di 96 GB di memoria assegnata alla GPU, senza bisogno di hack di sistema. La curva verde del prompt processing mostra due comportamenti distinti: i cold prefill completi scendono da 1.561 token/s al primo checkpoint a circa 318 token/s a 111K token; i turni normali, che sfruttano il prefix reuse, processano solo il delta e si muovono tra 77 e 854 token/s fino a 169K token. La generazione, la curva rossa, scende in modo pulito: circa 30–35 token/s a contesto piccolo, 21 a 45K, 13–15 tra 100K e 125K, 11,5 a 169K. L'unica anomalia è un calo a 7,7 token/s intorno a 140K, causato dalla modalità Low Power di macOS.

I numeri di decode non vanno letti come velocità base del modello: sono throughput effettivo con spec decode ngram-mod attivo, con un tasso di accettazione delle bozze tra 0 e 81 per cento a seconda del contenuto. Il prefill più lungo, 333 secondi per un prompt da 105K, è avvenuto una sola volta dopo una pausa di circa venti minuti che aveva ridotto lo slot al solo prefisso di sistema da 5,5K. Negli altri turni, con il riuso del prefisso, il prefill si riduce a pochi secondi. La capacità massima dello slot non è mai stata riempita: il punto più profondo raggiunto è stato 169.425 token. La seconda conversazione si è fermata a circa 125K token quando è stata interrotta la cattura.

Il punto critico non è però la velocità, ma la qualità. Superati i 100K token, il modello ha cominciato a confondere i messaggi dell'utente con il proprio output precedente, un problema di role confusion peggiorato con l'uso. L'autore ha escluso la quantization della KV, perché girava in fp16, e l'estrapolazione rope, perché i turni peggiori erano ben sotto la finestra nativa di 262K token. Restano due sospetti: la quantization a 2 bit del modello e la qualità long-context di un modello preview.

È un segnale strutturale, non un semplice aneddoto da forum. Fino a poco tempo fa il vincolo per l'inference locale era la memoria e la larghezza di banda; questo test mostra che, su hardware di fascia alta consumer, il collo di bottiglia si sposta sulla robustezza del modello compresso e sulla capacità di mantenere ruoli conversazionali distinti a fine contesto. Si può avere uno slot da 350K token, ma il valore pratico crolla se il modello inizia a rispondere al posto dell'utente.

Per chi valuta deployment self-hosted, la lezione è netta: non basta confrontare GB di memoria o token/s dichiarati. Serve testare il comportamento oltre 100K token con quantization aggressiva, perché è lì che emergono difetti che nessun benchmark sintetico di velocità cattura. AI-RADAR mette a disposizione nella sezione /llm-onpremise una serie di framework analitici per valutare questi trade-off, senza ridurli a una singola metrica.

C'è anche un rovescio hardware. Il fatto che un portatile con memoria unificata riesca a tenere in memoria pesi e KV completa di 350K token senza hack di sistema porta la sperimentazione long-context in un segmento molto più accessibile. Ma la compressione a 2 bit, necessaria per far stare modelli da 79 GB, diventa il primo indiziato dei difetti qualitativi. Questo spiega perché molti ambienti enterprise preferiscono quantizzazioni più conservative o modelli più piccoli con finestre native, anche a costo di più hardware: la prevedibilità conta più del contesto massimo dichiarato.

Resta da capire se il problema osservato sia risolvibile con un checkpoint finale di Qwen3.8-Flash-Next in quantization a 2 bit o se il modello preview stesso non sia addestrato per restare coerente oltre le 100K token. La risposta non arriverà dal grafico, ma dal comportamento di chi proverà a usare questi modelli per lavoro reale.