Интерактивно изучайте набор данных Huggingface с помощью одной строки кода

Учите набор данных Huggingface интерактивно - всего одной строкой кода

The Hugging Face библиотека датасетов не только предоставляет доступ к более чем 70 тысячам общедоступных датасетов, но также предлагает очень удобные конвейеры подготовки данных для настраиваемых датасетов.

Renumics Spotlight позволяет создавать интерактивные визуализации для выявления важных кластеров ваших данных. Поскольку Spotlight понимает семантику данных в датасетах Hugging Face, вы можете начать с одной строки кода:

import datasetsfrom renumics import spotlightds = 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}))

Проверка данных – очень важная задача на всех этапах разработки ML, но это также может быть очень трудоемким.

“Ручная проверка данных, вероятно, имеет высшее соотношение ценности к престижности по сравнению с другими активностями в машинном обучении.” — Грег Брокман

Spotlight помогает вам сделать проверку данных масштабируемой в двух аспектах: настройке и поддержке настраиваемых рабочих процессов проверки данных и поиске релевантных примеров данных и кластеров для проверки. В следующих разделах мы покажем некоторые примеры на основе датасетов Hugging Face.

Spotlight 🤝 Датасеты Hugging Face

Библиотека датасетов имеет несколько функций, которые делают ее идеальным инструментом для работы с ML датасетами: она сохраняет табличные данные (например, метаданные, метки) вместе с неструктурированными данными (например, изображения, аудио) в общей таблице Arrows. Datasets также описывает важные семантики данных через функции (например, изображения, аудио) и дополнительные метаданные, специфичные для задачи.

Spotlight работает непосредственно поверх библиотеки датасетов. Это означает, что нет необходимости копировать или предварительно обрабатывать датасет для визуализации и проверки данных. Spotlight загружает табличные данные в память, чтобы обеспечить эффективную аналитику данных на стороне клиента. Образцы данных с большим потреблением памяти (например, аудио, изображения, видео) загружаются лениво по требованию. В большинстве случаев типы данных и отображения меток выводятся непосредственно из датасета. Здесь мы визуализируем датасет CIFAR-100 с помощью одной строки кода:

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

В случаях, когда типы данных неоднозначны или не указаны, API Spotlight позволяет присвоить их вручную:

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. Это позволяет не только использовать возможности пакетной обработки библиотеки датасетов, но и сохранять сопоставления меток.

Мы можем использовать библиотеку transformers для вычисления вложений и прогнозов по проблеме классификации изображений CIFAR-100. Мы устанавливаем библиотеки через pip:

pip install renumics-spotlight datasets transformers[torch]

Теперь мы можем рассчитать обогащение:

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)

Если вы не хотите выполнять полное вывод, вы также можете загрузить предварительно вычисленные результаты модели для 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)

Пользовательские рабочие процессы по проверке данных

Визуальные макеты могут быть интерактивно изменены, сохранены и загружены в пользовательский интерфейс: Вы можете выбрать разные типы виджетов и конфигурации. Виджет-инспектор позволяет представлять мультимодальные образцы данных, включая текст, изображение, звук, видео и временные ряды.

Вы также можете определять макеты через Python API. Эта опция особенно полезна для создания пользовательских процессов проверки и обработки данных, включая EDA, отладку моделей и задачи мониторинга моделей.

В сочетании с виджетом проблем данных, Python API предлагает отличный способ интеграции результатов существующих скриптов (например, проверки качества данных или мониторинга моделей) в масштабируемый рабочий процесс проверки данных.

Использование Spotlight на платформе Hugging Face

Вы можете использовать Spotlight непосредственно с локальными наборами данных NLP, звуковых, CV или мультимодальных. Если вы хотите продемонстрировать свой набор данных или результаты модели на платформе Hugging Face, вы можете использовать пространства Hugging Face для запуска визуализации Spotlight.

Мы уже подготовили примеры пространств для многих популярных наборов данных NLP, аудио и CV на платформе. Вы можете просто дублировать одно из этих пространств и указать свой набор данных в переменной HF_DATASET.

Вы также можете выбрать набор данных, содержащий результаты модели и другие параметры конфигурации, такие как разделы, поднаборы или ревизии набора данных.

Что дальше?

С помощью Spotlight вы можете создавать интерактивные визуализации и использовать обогащение данных для определения критических кластеров в вашем наборе данных Hugging Face. В этом блоге мы рассмотрели примеры работы с аудио и компьютерным зрением.

Вы можете использовать Spotlight напрямую для изучения и организации вашего NLP, аудио, CV или мультимодального набора данных: