DuckDB analizza oltre 50.000 dataset archiviati nell’Hugging Face Hub

DuckDB analizza 50.000+ dataset nell'Hugging Face Hub.

L’Hugging Face Hub è dedicato a fornire accesso aperto a dataset per tutti e a fornire agli utenti gli strumenti per esplorarli e comprenderli. Puoi trovare molti dei dataset utilizzati per addestrare modelli di linguaggio (LLM) di grandi dimensioni popolari come Falcon, Dolly, MPT e StarCoder. Ci sono strumenti per affrontare l’equità e il bias nei dataset come Disaggregators e strumenti per visualizzare gli esempi all’interno di un dataset come il Dataset Viewer.

Una anteprima del dataset OpenAssistant con il Dataset Viewer.

Siamo lieti di condividere che abbiamo recentemente aggiunto un’altra funzionalità per aiutarti ad analizzare i dataset sul Hub; puoi eseguire query SQL con DuckDB su qualsiasi dataset memorizzato sul Hub! Secondo l’indagine StackOverflow Developer del 2022, SQL è il terzo linguaggio di programmazione più popolare. Volevamo anche un sistema di gestione di database (DBMS) veloce progettato per eseguire query analitiche, ed è per questo che siamo entusiasti di integrarci con DuckDB. Speriamo che questo consenta a un numero ancora maggiore di utenti di accedere e analizzare i dataset sul Hub!

TLDR

Il server dei dataset converte automaticamente tutti i dataset pubblici sul Hub in file Parquet, che puoi vedere facendo clic sul pulsante “Convertito automaticamente in Parquet” in cima a una pagina del dataset. Puoi anche accedere all’elenco degli URL dei file Parquet con una semplice chiamata HTTP.

r = requests.get("https://datasets-server.huggingface.co/parquet?dataset=blog_authorship_corpus")
j = r.json()
urls = [f['url'] for f in j['parquet_files'] if f['split'] == 'train']
urls
['https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00000-of-00002.parquet',
 'https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00001-of-00002.parquet']

Crea una connessione a DuckDB, installa e carica l’estensione httpfs per consentire la lettura e la scrittura di file remoti:

import duckdb

url = "https://huggingface.co/datasets/blog_authorship_corpus/resolve/refs%2Fconvert%2Fparquet/blog_authorship_corpus/blog_authorship_corpus-train-00000-of-00002.parquet"

con = duckdb.connect()
con.execute("INSTALL httpfs;")
con.execute("LOAD httpfs;")

Una volta connesso, puoi iniziare a scrivere query SQL!

con.sql(f"""SELECT horoscope, 
    count(*), 
    AVG(LENGTH(text)) AS avg_blog_length 
    FROM '{url}' 
    GROUP BY horoscope 
    ORDER BY avg_blog_length 
    DESC LIMIT(5)"""
)

Per saperne di più, consulta la documentazione.

Dal dataset a Parquet

I file Parquet sono colonnari, il che li rende più efficienti da memorizzare, caricare e analizzare. Questo è particolarmente importante quando si lavora con grandi dataset, che stiamo vedendo sempre di più nell’era dei LLM. Per supportare ciò, il server dei dataset converte automaticamente e pubblica qualsiasi dataset pubblico sul Hub come file Parquet. L’URL dei file Parquet può essere recuperato con l’endpoint /parquet.

Analizza con DuckDB

DuckDB offre prestazioni super impressionanti per l’esecuzione di query analitiche complesse. È in grado di eseguire una query SQL direttamente su un file Parquet remoto senza alcun overhead. Con l’estensione httpfs, DuckDB è in grado di eseguire query su file remoti come dataset memorizzati sul Hub utilizzando l’URL fornito dall’endpoint /parquet. DuckDB supporta anche la query di più file Parquet, il che è davvero comodo perché il server dei dataset suddivide i grandi dataset in chunk più piccoli da 500 MB.

Guardando avanti

Sapere cosa c’è all’interno di un dataset è importante per lo sviluppo dei modelli perché può influire sulla qualità del modello in molti modi! Consentendo agli utenti di scrivere ed eseguire qualsiasi query SQL sui dataset del Hub, questa è un’altra modalità per consentire l’accesso aperto ai dataset e aiutare gli utenti a essere più consapevoli dei contenuti dei dataset. Siamo entusiasti che tu possa provarlo e non vediamo l’ora di scoprire quali insight la tua analisi porterà alla luce!