Ускорение графического процессора обычно ассоциируется с глубоким обучением. Графические процессоры используются в сверточных нейронных сетях для компьютерного зрения и преобразователях для обработки естественного языка. Они делают это посредством параллельных вычислений, что делает их намного быстрее для определенных задач по сравнению с процессорами.

RAPIDS расширяет использование графических процессоров, привнося в графические процессоры традиционные алгоритмы машинного обучения и обработки данных, такие как t-SNE или XGBoost.

В этой статье сравниваются реализации t-SNE между RAPIDS-cuml (GPU) и Sklearn (CPU): в результате получается 3 секунды против 30 минут.

Аппаратное обеспечение: этот эксперимент был проведен на ПК для обработки данных компанией Digital Storm

t-SNE - это алгоритм для визуализации данных большой размерности. Выше показан пример преобразования 512-мерных векторов из промежуточных активаций CNN в 2-мерные векторы. Каждое изображение в наборе данных CIFAR-10 проходит через классификатор изображений. Активации непосредственно перед последним классификационным слоем добавляются в массив для визуализации. Это делается с помощью следующей строки кода:

from tensorflow.keras.models import Model
intermediate_layer_model = Model(inputs = model.input, 
           outputs = model.get_layer('VisualizationLayer').output)

Последнему плотному слою присвоено имя VisualizationLayer, чтобы индексировать его таким образом

Визуализация t-SNE отлично подходит для получения интуитивного представления о пространстве принятия решений. Другой подход к этому может заключаться в использовании матрицы неточностей. Визуализация t-SNE показывает такие ошибки, как перекрытие между автомобилями и самолетами. В то время как матрица путаницы просто сообщила бы нам, что что-то вроде «8» автомобилей было ошибочно классифицировано как самолеты, визуализация t-SNE дает больше информации о том, что здесь происходит. Мы видим, что по крайней мере неправильно классифицированные автомобили находятся на краю границы самолета, мы могли бы решить эту проблему с помощью некоторого сглаживания меток / увеличения данных.

Получение интуитивного представления о наших моделях очень полезно для такого рода EDA (исследовательского анализа данных). Это может помочь в принятии обоснованных решений на уровне данных, таких как определение влияния дисбаланса классов, увеличения объема данных или полезности сбора дополнительных данных. Это также может помочь сравнить функции потерь с другими.

В статье «Увеличение синтетических медицинских изображений на основе GAN для повышения эффективности CNN в классификации поражений печени», Фрид-Адар и др. используйте визуализации t-SNE, чтобы показать, как добавление данных, созданных GAN, улучшает границы принятия решений для классификации медицинских изображений (обратите внимание на улучшенное распутывание синего класса на рисунке b по сравнению с a).

В статье «Повышение состязательной устойчивости с помощью управляемой энтропии дополнения» Чена и др. Они показывают, как их улучшение функции потерь кросс-энтропии приводит к более гладкой границе решения с меньшим перекрытием (сравните рисунок справа с рисунком слева). Они используют эту визуализацию, чтобы проиллюстрировать, как их улучшенные границы принятия решений обеспечивают защиту от состязательных атак.

Новое против старого

Этот пример демонстрирует ›600-кратное ускорение t-SNE с использованием RAPIDS по сравнению со Sklearn

В этом примере выполняется версия t-SNE для Barnes-Hut (n log n) на 50 000 изображений CIFAR-10, которые были обработаны с помощью классификатора изображений (обучены с точностью 79%) до 512-мерных векторов. Алгоритм t-SNE преобразует эти 512-мерные векторы в 2-мерные для визуализации.

1918 секунд (~ 30 минут) (Sklearn)

from sklearn.manifold import TSNE
sklearn_embedded = TSNE(n_components=2).fit_transform(embeddings)

3 секунды (RAPIDS cuml)

from cuml.manifold import TSNE as cumlTSNE
tsne = cumlTSNE(n_components=2, method='barnes_hut')
tsne_embedding = tsne.fit_transform(embeddings)

Аппаратное обеспечение: этот эксперимент был проведен на ПК для обработки данных компанией Digital Storm

Влияние RAPIDS

Ускорение t-SNE, обеспечиваемое RAPIDS, делает визуализацию многомерных данных намного более практичной. Встраивание 50K векторов CIFAR-10 заняло 30 минут в реализации ЦП, попытка встраивания 1,2 миллиона наборов данных ImageNet потребовала бы не менее 12 часов при расширении, если бы алгоритм t-SNE имел временную сложность O (n) (хотя последний log n алгоритма барнса-хижины в этом масштабе было бы в значительной степени незначительным).

На основе RAPIDS визуализация t-SNE может обеспечить визуализацию всего набора данных ImageNet (исследовано в t-SNE-CUDA Чаном и др.).

Ускорение графического процессора этих видов векторных представлений также чрезвычайно полезно для приложений поиска и поиска подобия изображений. Один из лучших подходов к поиску наиболее семантически похожего изображения из большой базы данных изображений - это сравнение промежуточных активаций классификатора изображений. Это приводит к сравнению большого набора k-мерных векторных вложений из классификатора. RAPIDS может значительно ускорить этот вид операций для алгоритмов кластеризации, таких как K-Means.

t-SNE - отличный способ получить представление о наборах данных и промежуточных представлениях, построенных нейронными сетями. RAPIDS помогает выводить t-SNE на новый уровень за счет ускорения графического процессора, позволяя визуализировать гораздо больший объем данных с помощью этого алгоритма.

Спасибо за прочтение! Если вы нашли эту статью интересной, вам также может понравиться это видео, в котором шаг за шагом проходит эксперимент от контейнера докеров NGC для настройки библиотек RAPIDS для окончательной визуализации t-SNE!