Baidu lancia Unlimited OCR: un modello 3B che mantiene costante la cache KV per documenti lunghi
I modelli OCR end-to-end tradizionali rallentano man mano che l’output cresce. Ogni token generato si aggiunge alla cache KV, la memoria aumenta e la generazione diventa più lenta. Parsing di decine di pagine? Impraticabile. Baidu Unlimited OCR risolve il problema con un’architettura che mantiene la memoria costante, indipendentemente dalla lunghezza dell’output.
Unlimited OCR è un modello Mixture-of-Experts da 3 miliardi di parametri, di cui solo 500 milioni attivi durante l’inferenza. Sostituisce l’attenzione del decoder con Reference Sliding Window Attention (R-SWA), che mantiene la cache KV di dimensione costante. Il modello gestisce decine di pagine in un unico forward pass con una lunghezza massima di 32K token. Su OmniDocBench v1.5 raggiunge 93,23 punti, superando il baseline DeepSeek OCR di 6,22 punti. È stato ottenuto tramite continue-training su DeepSeek OCR, non da zero.
Come funziona Unlimited OCR
Unlimited OCR parte da DeepSeek OCR come baseline, mantenendo il DeepEncoder e il decoder Mixture-of-Experts. Il MoE ha 3B parametri totali ma ne attiva solo 500M all’inferenza.
Il DeepEncoder è il motore di compressione: combina un SAM-ViT con attenzione a finestra e un CLIP-ViT con attenzione globale. Alla connessione applica una compressione di 16× sui token: un’immagine PDF da 1024×1024 pixel diventa solo 256 token visivi. Meno token in input significa un prefill più piccolo.
Il DeepEncoder supporta nativamente cinque modalità di risoluzione; Unlimited OCR ne mantiene due:
- Base: 1024×1024 per documenti multi-pagina
- Gundam: risoluzione dinamica per pagine singole
R-SWA: la cache KV che non cresce
La novità è la Reference Sliding Window Attention (R-SWA). Nell’attenzione multi-testa standard, la cache KV cresce linearmente con il numero di token generati T: CMHA(T) = Lm + T. Memoria e latenza aumentano senza limite.
R-SWA rompe questo legame. Ogni token generato ha accesso a tutti i token di riferimento (token visivi e prompt) e agli ultimi n token di output (con n predefinito a 128). Tutto ciò che è più vecchio viene rimosso. La cache diventa una coda fissa di dimensione Lm + n, costante.
Con n = 128, anche dopo migliaia di token generati la cache rimane della stessa dimensione. Il rapporto tra cache R-SWA e cache MHA tende a zero per output lunghi: risparmio di memoria fino al 78%.
Il team paragona il meccanismo a un soft forgetting (oblio morbido): una persona che copia un libro guarda la fonte e le ultime parole scritte, non rilegge tutto. I token visivi non subiscono mai aggiornamenti di stato, evitando la progressiva sfocatura tipica delle attenzioni lineari.
