Esplora interattivamente il tuo dataset di Huggingface con una sola riga di codice.

Esplora interattivamente il tuo dataset di Huggingface con un solo comando.

La libreria Hugging Face datasets non solo fornisce accesso a oltre 70.000 dataset disponibili pubblicamente, ma offre anche pipeline molto comode per la preparazione dei dati per dataset personalizzati.

Renumics Spotlight ti consente di creare visualizzazioni interattive per identificare cluster critici nei tuoi dati. Poiché Spotlight comprende la semantica dei dati all’interno dei dataset di Hugging Face, è possibile iniziare con una sola riga di codice:

import datasetsfrom renumics import spotlightds = datasets.load_dataset('speech_commands', 'v0.01', split='validation')spotlight.show(ds)

Spotlight consente di sfruttare i risultati del modello come previsioni e embedding per ottenere una comprensione più approfondita dei segmenti di dati e delle modalità di errore del modello:

ds_results = datasets.load_dataset('renumics/speech_commands-ast-finetuned-results', 'v0.01', split='validation')ds = datasets.concatenate_datasets([ds, ds_results], axis=1)spotlight.show(ds, dtype={'embedding': spotlight.Embedding}, layout=spotlight.layouts.debug_classification(embedding='embedding', inspect={'audio': spotlight.dtypes.audio_dtype}))

L’ispezione dei dati è un compito molto importante in quasi tutte le fasi dello sviluppo di apprendimento automatico, ma può richiedere molto tempo.

“L’ispezione manuale dei dati ha probabilmente il rapporto valore-prestigio più alto tra tutte le attività nell’apprendimento automatico.” – Greg Brockman

Spotlight ti aiuta a rendere l’ispezione dei dati più scalabile su due dimensioni: impostare e mantenere flussi di lavoro personalizzati per l’ispezione dei dati e trovare campioni di dati e cluster rilevanti da ispezionare. Nelle sezioni seguenti mostriamo alcuni esempi basati sui dataset di Hugging Face.

Spotlight 🤝 Datasets di Hugging Face

La libreria dataset ha diverse funzionalità che la rendono uno strumento ideale per lavorare con dataset di apprendimento automatico: archivia dati tabulari (ad esempio, metadati, etichette) insieme a dati non strutturati (ad esempio, immagini, audio) in una tabella comune. I dataset inoltre descrivono importanti semantica dei dati attraverso le feature (ad esempio, immagini, audio) e metadatai specifici per il compito.

Spotlight funziona direttamente sulla libreria dataset. Ciò significa che non è necessario copiare o pre-elaborare il dataset per la visualizzazione e l’ispezione dei dati. Spotlight carica i dati tabulari in memoria per consentire un’analisi efficiente dei dati lato client. I campioni di dati non strutturati ad alta intensità di memoria (ad esempio, audio, immagini, video) vengono caricati in modo pigro su richiesta. Nella maggior parte dei casi, i tipi di dati e i mapping delle etichette sono dedotti direttamente dal dataset. Qui, visualizziamo il dataset CIFAR-100 con una sola riga di codice:

ds = datasets.load_dataset('cifar100', split='test')spotlight.show(ds)

Nei casi in cui i tipi di dati sono ambigui o non specificati, l’API di Spotlight consente di assegnarli manualmente:

label_mapping = dict(zip(ds.features['fine_label'].names, range(len(ds.features['fine_label'].names))))spotlight.show(ds, dtype={'img': spotlight.Image, 'fine_label': spotlight.dtypes.CategoryDType(categories=label_mapping)})

Sfruttare i risultati del modello per l’ispezione dei dati

Esplorare dataset non strutturati grezzi spesso produce poche informazioni. Sfruttare i risultati del modello come previsioni o embedding può aiutare a individuare campioni di dati e cluster critici. Spotlight offre diverse opzioni di visualizzazione (ad esempio, mappa di similarità, matrice di confusione) che utilizzano specificamente i risultati del modello.

Raccomandiamo di archiviare direttamente i risultati delle tue previsioni in un dataset di Hugging Face. Ciò ti consente non solo di approfittare delle capacità di elaborazione batch della libreria dataset, ma mantiene anche i mapping delle etichette.

Possiamo utilizzare la libreria transformers per calcolare embedding e previsioni sul problema di classificazione delle immagini CIFAR-100. Installiamo le librerie tramite pip:

pip install renumics-spotlight datasets transformers[torch]

Ora possiamo calcolare l’arricchimento:

import torchimport transformersdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")model_name = "Ahmed9275/Vit-Cifar100"processor = transformers.ViTImageProcessor.from_pretrained(model_name)cls_model = transformers.ViTForImageClassification.from_pretrained(model_name).to(device)fe_model = transformers.ViTModel.from_pretrained(model_name).to(device)def infer(batch):    images = [image.convert("RGB") for image in batch]    inputs = processor(images=images, return_tensors="pt").to(device)    with torch.no_grad():        outputs = cls_model(**inputs)        probs = torch.nn.functional.softmax(outputs.logits, dim=-1).cpu().numpy()        embeddings = fe_model(**inputs).last_hidden_state[:, 0].cpu().numpy()    preds = probs.argmax(axis=-1)    return {"prediction": preds, "embedding": embeddings}features = datasets.Features({**ds.features, "prediction": ds.features["fine_label"], "embedding": datasets.Sequence(feature=datasets.Value("float32"), length=768)})ds_enriched = ds.map(infer, input_columns="img", batched=True, batch_size=2, features=features)

Se non desideri eseguire l’intero processo di inferenza, puoi scaricare invece i risultati del modello pre-calcolati per CIFAR-100 per seguire questo tutorial:

ds_results = datasets.load_dataset('renumics/spotlight-cifar100-enrichment', split='test')ds_enriched = datasets.concatenate_datasets([ds, ds_results], axis=1)

Ora possiamo utilizzare i risultati per esplorare in modo interattivo campioni di dati rilevanti e cluster in Spotlight:

layout = spotlight.layouts.debug_classification(label='fine_label', embedding='embedding', inspect={'img': spotlight.dtypes.image_dtype})spotlight.show(ds_enriched, dtype={'embedding': spotlight.Embedding}, layout=layout)

Personalizzazione dei flussi di ispezione dei dati

È possibile modificare, salvare e caricare in modo interattivo i layout di visualizzazione nell’interfaccia grafica: è possibile selezionare diversi tipi di widget e configurazioni. Il widget Inspector consente di rappresentare campioni di dati multimodali, compresi dati di testo, immagini, audio, video e serie temporali.

È anche possibile definire layout tramite l’API di Python. Questa opzione è particolarmente utile per la creazione di flussi di ispezione e curatela dei dati personalizzati, compresi EDA, debugging del modello e attività di monitoraggio del modello.

In combinazione con il widget dei problemi dei dati, l’API di Python offre un ottimo modo per integrare i risultati di script esistenti (ad esempio, verifiche di qualità dei dati o monitoraggio del modello) in un flusso di ispezione dei dati scalabile.

Uso di Spotlight sull’Hugging Face hub

È possibile utilizzare Spotlight direttamente nel proprio dataset NLP, audio, CV o multimodale locale. Se si desidera mostrare il proprio dataset o i risultati del modello nell’Hugging Face hub, è possibile utilizzare gli spazi Hugging Face per avviare una visualizzazione di Spotlight.

Abbiamo già preparato spazi di esempio per molti dataset NLP, audio e CV popolari nell’Hugging Face hub. È possibile duplicare semplicemente uno di questi spazi e specificare il proprio dataset nella variabile HF_DATASET.

È possibile scegliere facoltativamente un dataset che contenga i risultati del modello e altre opzioni di configurazione come suddivisioni, subset o revisioni del dataset.

Cosa fare dopo?

Con Spotlight è possibile creare visualizzazioni interattive e sfruttare gli arricchimenti dei dati per identificare cluster critici nei propri dataset Hugging Face. In questo blog, abbiamo visto un esempio di ML audio e un esempio di computer vision.

È possibile utilizzare Spotlight direttamente per esplorare e curare il proprio dataset NLP, audio, CV o multimodale: