tsne-cuda: 使用GPU加速的t-SNE
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-gpuError: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實作