fbpx
  • t-SNE-CUDA: как визуализировать многомерные данные на GPU

    t-SNE-CUDA — это оптимизированная имплементация алгоритма t-SNE на GPU. t-SNE используется для визуализации многомерных данных в 2D. t-SNE-CUDA работает в 50-700 раз быстрее предыдущих реализаций. При этом оптимизация не влияет на качество кластеров. t-SNE-CUDA масштабирует алгоритм t-SNE для таких датасетов компьютерного зрения, как ImageNet. Доступ к модели открыт по ссылке. Все текущие доступные реализации t-SNE вычисляются на CPU. Самая быстрая имплементация требует 10 минут, чтобы визуализировать эмбеддинги для датасета CIFAR-10, в котором 50 тыс. изображений.

    Оптимизированная реализация основана на параллелизации стандартной формулировки алгоритма и методах решения n-body задачи. В t-SNE-CUDA используется метод Barnes-Hut и техники для приближения ближайших соседей.

    Современные датасеты являются сложными для анализа из-за высокой размерности данных и количества объектов в выборке. Существующие методы визуализации, которые применяют понижение размерности до 2-х или 3-х, часто неэффективны для таких датасетов. t-SNE-CUDA — это реализация алгоритма t-distributed Symmetric Neighbour Embedding (t-SNE) для визуализации датасетов и моделей. С помощью алгоритма можно визуализировать активации нейросети на полном датасете ImageNet. Ранее это требовало значительных вычислительных ресурсов. Визуализации активаций нейросети помогают делать выводы об использовании L2 метрики в пространстве эмбеддингов.

    Что внутри t-SNE-CUDA

    Чтобы сократить вычислительную сложность t-SNE исследователи использовали библиотеку FAISS. В FAISS реализованы алгоритма поиска близких векторов в пространстве векторов. Все алгоритмы в FAISS оптимизированы для вычислений на GPU и масштабированы для крупных датасетов.

    Псевдокод для T-SNE-CUDA алгоритма

    Сравнение подходов для кластеризации

    Исследователи сравнили t-SNE-CUDA с существующими реализациями t-SNE. Ниже видно, что t-SNE-CUDA значительно быстрее конкуриующих реализаций. При этом качество разделения на кластеры незначительное. t-SNE-CUDA работает за 7 секунд для датасета MNIST (60000 изображений x 768 измерений).

    Сравнение времени работы на MNIST
    Сравнение разделения на кластера пространства эмбеддингов LeNet на датасете CIFAR-10