Un Laboratorio Pratico con FineWeb per Streaming, Filtro, Deduplicazione, Tokenizzazione e Analisi su Ampio Dataset Web
Il dataset FineWeb rappresenta uno degli esempi più avanzati di raccolta di dati da cui si può trarre informazione di valore in contesti di intelligenza artificiale e apprendimento automatico.
Introduzione
In questo tutorial, ci concentreremo sulla struttura e su come analizzare e filtrare il dataset FineWeb, in particolare sulla versione di esempio sample-10BT, senza scaricare l'intero dataset di multi-terabyte.
Preparazione Ambientale
La prima operazione consiste nell'installare tutti i pacchetti necessari per lo streaming, l'analisi, la deduplicazione e la tokenizzazione.
Vengono importati i pacchetti Python necessari per gestire i dati, processare i testi, visualizzare e verificare statistiche:
- datasets – per caricare e streammare il dataset
- datasketch – per la deduplicazione basata su MinHash
- tiktoken – per la tokenizzazione
- pandas e numpy – per la manipolazione dei dati
- matplotlib – per la visualizzazione grafica
Streaming di Dati
Il processo parte dal caricamento del dataset in modo non invasivo:
Carichiamo 3000 documenti da sample-10BT per esaminare il formato, il contenuto e le caratteristiche statistiche. Ogni documento contiene informazioni come URL, lingua, punteggio linguistico e conteggio token. Dopo il download, i dati vengono caricati in un DataFrame pandas per essere esaminati.
Estrazione di Un Campione e Struttura
Un documento esempio mostra chiaramente la tipologia e la struttura dei dati caricati:
- url: link della fonte web
- language: identifica il linguaggio principale
- language_score: punteggio di attendibilità linguistica
- token_count: numero di token
Filtraggio e Qualità
Fin da subito, il dataset è gia stato pulito. Tuttavia, ricalchiamo i filtri di qualità per testare come vengono applicati i criteri di Gopher, C4 e un set personalizzato per testare la struttura e il contenuto.
Implementazione Filtri di Qualità
Gli script verificano le seguenti metriche per i singoli testi:
- Numero di parole comprese tra 50 e 100.000
- Lunghezza media delle parole rientrante tra 3 e 10 caratteri
- Percentuale di simboli (come # e ...) bassa
- Criteri di testo a bulleto e ripetizione lineare
- Assenza di parole comuni
- Struttura simile a un elenco
- Presenza di copie ripetute di linee
I risultati mostrano che quasi tutti i documenti superano le verifiche, confermando che il dataset è gia stato filtrato e pulito.
Rilevamento di Documenti Simili (Deduplicazione)
La deduplicazione è una parte chiave nel processamento di dati web su larga scala. Per approssimarla, utilizziamo la tecnica MinHash.
Shingling e Indicizzazione
I testi vengono convertiti in k-shingles (insiemi di parole consecutive), quindi vengono estratti e rappresentati in modo compresso tramite MinHash. Un MinHashLSH viene utilizzato per rilevare documenti simili.
Per il dataset campionare, il numero di coppie di documenti quasi duplicati è basso, indicando che la deduplicazione del dataset effettivo Fineweb è già molto avanzata.
Verifica del Conteggio di Token
Un aspetto fondamentale per l’addestramento di modelli linguistici è la corretta tokenizzazione. Il set di dati Fineweb include un valore token_count precalcolato, da verificare.
Confronto con il Tokenizzatore GPT-2
Utilizziamo tiktoken, il tokenizzatore open-source utilizzato in GPT-2, per ricalcolare i token dei testi. Vengono confrontati con i valori preesistenti per verificare discrepanze. Si osserva un buon accordo, con un piccolo drift dovuto alla versione del tokenizer.
Analisi Statistica ed Esempi
Un’analisi statistica mostra informazioni dettagliate su documenti e token.
Campionamento per Dominio
Viene estratto un elenco dei 15 domini più frequenti nel campione. Si noti come i risultati riflettono fonti attendibili e testi non distorti.
Inoltre, vengono calcolati valori come caratteri per token per valutare l’efficiente tokenizzazione.
Visualizzazione Dati
Per una comprensione visiva, vengono generati grafici che mostrano la distribuzione del numero di token per documento e la correlazione con caratteristiche come punteggio linguistico.
Conclusione
Questo tutorial fornisce un'implementazione pratica su come analizzare un dataset su vasta scala, come FineWeb, utilizzando tecniche moderne di streaming, filtraggio e deduplicazione senza compromettere i contenuti originali.