tsne-cuda: 使用GPU加速的t-SNE

Yanwei Liu
4 min readJun 13, 2021

--

這個軟體在使用上與sklearn版本的tsne沒有太大差異,但是運算速度快上不少。尤其在面對大量資料(100多萬張圖片)下,tsne-cuda因為使用GPU運算的關係,比起sklearn只使用CPU的方式下,速度提升很多。官方宣稱速度是sklearn的1200倍提升。

20220427更新

最近使用了RTX 3090來進行模型訓練,搭配CUDA 11.2版本的GPU,可以透過以下指令進行tsnecuda的安裝:

https://github.com/CannyLab/tsne-cuda/issues/107#issuecomment-922419605

pip install mkl
pip install tsnecuda
pip install faiss-gpu
Error:ImportError: libmkl_intel_lp64.so: cannot open shared object file: No such file or directorySolution:
$ sudo find /home -name libmkl_intel_lp64.so
$ sudo nano ~/.bashrc
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/USER/anaconda3/lib/
$ source ~/.bashrc

20210817更新

自從版本更新至3.0之後,aiForge無法透過以下的指令進行安裝,因此我自己重新compile了一個可以在aiForge上安裝的版本。下載後使用pip install即可,詳細討論串在Unable to build from source · Issue #105 · CannyLab/tsne-cuda

pip install tsnecuda-2.1.0-py2.py3-none-any.whl

t-SNE-CUDA專案的詳細介紹

安裝(aiForge) CUDA 10.0版本

# https://github.com/CannyLab/tsne-cuda/wiki/Installation
conda install tsnecuda cuda100 -c cannylab

使用方式

import numpy as np
from tsnecuda import TSNE
X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
X_embedded = TSNE().fit_transform(X)
X_embedded.shape

與sklearn版本對照

import numpy as np
from sklearn.manifold import TSNE

X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]])
X_embedded = TSNE(n_components=2).fit_transform(X)
X_embedded.shape

主要差異在第二行的import不同,一個是從tsnecuda;一個是從sklearn.manifold

PyTorch實作

--

--

No responses yet