带GPU的UMAP

gpumap的Python项目详细描述


GPU并行一致流形逼近和投影(GMPUAP)是 可以使用的umap降维技术的gpu端口版本 用于类似于t-sne的可视化,但也用于一般非线性维度 减少。

目前只支持支持支持CUDA的GPU。由于依赖于 faiss目前只支持linux(可能还有macos)平台。

有关umap的更多信息,请参见原始实现 https://github.com/lmcinnes/umap/

如何使用gpumap

gpumap包继承自sklearn类,因此可以方便地插入 旁边的其他sklearn转换器具有相同的调用api。

importgpumapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=gpumap.GPUMAP().fit_transform(digits.data)

可以为gpumap类设置多个参数; 主要有以下几点:

  • ^{tt1}$: This determines the number of neighboring points used in local approximations of manifold structure. Larger values will result in more global structure being preserved at the loss of detailed local structure. In general this parameter should often be in the range 5 to 50, with a choice of 10 to 15 being a sensible default.
  • ^{tt2}$: This controls how tightly the embedding is allowed compress points together. Larger values ensure embedded points are more evenly distributed, while smaller values allow the algorithm to optimise more accurately with regard to local structure. Sensible values are in the range 0.001 to 0.5, with 0.1 being a reasonable default.

支持metric参数以保持接口与umap对齐, 但是,将其设置为除“eucliden”之外的任何值都将返回到序列 版本。也不支持处理稀疏矩阵,并且将类似地 对于算法的某些部分,导致回退到顺序版本。

性能和示例

gpumap和umap一样,在嵌入大的高维数据时非常有效 数据集。尤其是它在输入维和嵌入两个方面都有很好的伸缩性 尺寸。性能在很大程度上取决于使用的GPU。为了一个问题 例如784维mnist数字数据集,包含70000个数据样本,gpumap 使用(过时的)nvidia gtx可以在30秒内完成嵌入 745显卡。更新的硬件将相应地扩展。尽管如此 运行时效率umap仍然可以生成高质量的嵌入。

必要的mnist数字数据集,使用3.6ghz在29秒内嵌入 英特尔酷睿i7处理器和nvidia gtx 745 gpu(n_neighbors=10, 最小距离=0.001):

GPUMAP embedding of MNIST digits

然而,mnist digits数据集相当简单。更好的测试是 最新的“时尚mnist”时尚产品图片集(再次 784维70000个数据样本)。gpumap公司 准确地在2分钟内生成此嵌入(n_neighbors=5,min_dist=0.1):

GPUMAP embedding of "Fashion MNIST"

安装

gpumap与umap具有相同的依赖关系,即scikit-learnnumpyscipynumba。gpumap添加了对faiss执行的要求 GPU上的近邻搜索。

要求:

  • SCIKIT学习
  • (纽比)
  • (scipy)
  • numba
  • 费斯

安装选项

gpumap可以通过conda、pypi或从源安装:

选项1:conda

如果需要,请设置新的conda环境。

conda create -n env

conda activate env

conda install python

安装依赖项:numba和faiss

conda install numba
conda install scikit-learn

conda install faiss-gpu cudatoolkit=10.0 -c pytorch # For CUDA10
# For older CUDA versions:
# conda install faiss-gpu cudatoolkit=8.0 -c pytorch # For CUDA8
# conda install faiss-gpu cudatoolkit=9.0 -c pytorch # For CUDA9

conda install -c conda-forge gpumap

选项2:pypi

gpumap也可以作为pypi包提供。

pip install scikit-learn numba faiss gpumap

注意,预先构建的faiss库没有得到上游的官方支持。

选项3:构建

从源代码构建很容易,克隆存储库或将代码放到 以其他方式运行计算机,并使用以下命令运行安装程序:

python setup.py install

请注意,依赖项需要预先安装。这些是 faiss https://github.com/facebook research/faiss/blob/master/install.md library和numba http://numba.pydata.org/numba doc/latest/user/installing.html。

许可证

gpumap包基于umap包,因此也是3子句bsd 得到许可的。

贡献

我们欢迎您的贡献!滚开!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen