带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 JTable为空   java将json发送到php并插入mysql,但返回null   java Spring引导JNDI CommonJ资源   从不同PC创建和合并后的Java servlet问题   java如何在使用findelements时从xpath获取文本   java使用spring boot使用gmail smtp发送电子邮件   java在不使用pojo、bean或getter和setter的情况下获取Json标题的Json数组   Java中的OpenFile对话框将null作为响应   JavaBuilder模式。扩展接口   java中无需替换的数据结构选取   java如何评价Encog中的预测神经网络   java如何在安卓中使用实际的HttpURLConnection进行单元测试?   java使用XML配置禁用WebSocket中的CSRF保护   java如何通过hibernate从多表查询中获取数据?   mysql如何在java中获取更新的行Id   java AEM/CQ组件单一组件/有限组件   java FFmpeg Javacv延迟问题   显示整数数组的java不起作用