一行程式碼互動式探索您的 Hugging Face 資料集
Hugging Face 的 datasets 庫不僅提供了對超過 7 萬個公開可用資料集的訪問,還為自定義資料集提供了非常方便的資料準備流水線。
Renumics Spotlight 允許您建立互動式視覺化來識別資料中的關鍵叢集。因為 Spotlight 能夠理解 Hugging Face 資料集中的資料語義,您只需一行程式碼即可開始。
import datasets
from renumics import spotlight
ds = datasets.load_dataset('speech_commands', 'v0.01', split='validation')
spotlight.show(ds)
Spotlight 允許利用模型結果(如預測和嵌入)來更深入地理解資料段和模型失敗模式。
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}))
資料洞察是幾乎所有機器學習開發階段中非常重要的一項任務,但它也可能非常耗時。
“在機器學習的所有活動中,手動檢查資料的價值與聲望比可能是最高的。”——Greg Brockman
Spotlight 幫助您從兩個維度使資料洞察更具可擴充套件性:建立和維護自定義資料洞察工作流,以及找到相關的待洞察資料樣本和叢集。在以下部分中,我們將展示一些基於 Hugging Face 資料集的示例。
Spotlight 🤝 Hugging Face 資料集
datasets 庫有幾個特性使其成為處理機器學習資料集的理想工具:它將表格資料(如元資料、標籤)與非結構化資料(如影像、音訊)儲存在同一個 Arrows 表中。Datasets 還透過特徵(如影像、音訊)和額外的特定任務元資料來描述重要的資料語義。
Spotlight 直接在 datasets 庫之上執行。這意味著無需為資料視覺化和洞察複製或預處理資料集。Spotlight 將表格資料載入到記憶體中,以實現高效的、客戶端的資料分析。記憶體密集型的非結構化資料樣本(如音訊、影像、影片)按需延遲載入。在大多數情況下,資料型別和標籤對映直接從資料集中推斷。在這裡,我們用一行程式碼視覺化 CIFAR-100 資料集。
ds = datasets.load_dataset('cifar100', split='test')
spotlight.show(ds)
在資料型別不明確或未指定的情況下,Spotlight API 允許手動分配它們。
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)})
利用模型結果進行資料洞察
探索原始非結構化資料集通常只能獲得很少的見解。利用模型結果,如預測或嵌入,可以幫助發現關鍵的資料樣本和叢集。Spotlight 有多種視覺化選項(例如相似性圖、混淆矩陣),它們專門利用模型結果。
我們建議將您的預測結果直接儲存在 Hugging Face 資料集中。這不僅能讓您利用 datasets 庫的批處理能力,還能保留標籤對映。
我們可以使用 transformers 庫來計算 CIFAR-100 影像分類問題的嵌入和預測。我們透過 pip 安裝這些庫。
pip install renumics-spotlight datasets transformers[torch]
現在我們可以計算資料擴充內容。
import torch
import transformers
device = 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)
如果您不想執行完整的推理過程,也可以下載 CIFAR-100 的預計算模型結果來跟隨本教程。
ds_results = datasets.load_dataset('renumics/spotlight-cifar100-enrichment', split='test')
ds_enriched = datasets.concatenate_datasets([ds, ds_results], axis=1)
我們現在可以使用這些結果在 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)

自定義資料洞察工作流
視覺化佈局可以在圖形使用者介面 (GUI) 中進行互動式更改、儲存和載入:您可以選擇不同的元件型別和配置。Inspector 元件允許表示多模態資料樣本,包括文字、影像、音訊、影片和時間序列資料。
您也可以透過 Python API 定義佈局。這個選項對於構建自定義資料洞察和整理工作流特別有用,包括探索性資料分析 (EDA)、模型除錯和模型監控任務。
結合資料問題元件,Python API 提供了一種很好的方式,將現有指令碼(例如資料質量檢查或模型監控)的結果整合到一個可擴充套件的資料洞察工作流中。
在 Hugging Face Hub 上使用 Spotlight
您可以直接在本地的自然語言處理 (NLP)、音訊、計算機視覺 (CV) 或多模態資料集上使用 Spotlight。如果您想在 Hugging Face Hub 上展示您的資料集或模型結果,您可以使用 Hugging Face Spaces 為其啟動一個 Spotlight 視覺化。
我們已經為 Hub 上的許多熱門 NLP、音訊和 CV 資料集準備了示例空間。您可以簡單地複製其中一個空間,並在 HF_DATASET
變數中指定您的資料集。
您可以選擇性地選擇一個包含模型結果和其它配置選項的資料集,如資料切分、子集或資料集修訂版本。

下一步是什麼?
使用 Spotlight,您可以建立互動式視覺化並利用資料擴充來識別 Hugging Face 資料集中的關鍵叢集。在本部落格中,我們已經看到了一個音訊機器學習和一個計算機視覺的例子。
您可以直接使用 Spotlight 來探索和整理您的 NLP、音訊、CV 或多模態資料集。
- 安裝 Spotlight:pip install renumics-spotlight
- 檢視文件或在 Github 上提交問題。
- 加入 Discord 上的 Spotlight 社群
- 在 Twitter 和 LinkedIn 上關注我們