scikit-learn会利用GPU吗?

blu*_*sky 35 python k-means scikit-learn tensorflow

在tensroflow中阅读scikit-learn的实现:http://learningtensorflow.com/lesson6/ 和scikit-learn:http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html 我是努力决定使用哪种实现.

scikit-learn作为tensorflow docker容器的一部分安装,因此可以使用任一实现.

使用scikit-learn的原因:

scikit-learn包含比tensorflow实现更少的锅炉板.

使用tensorflow的原因:

如果在Nvidia GPU上运行算法wilk并行运行,我不确定scikit-learn是否会利用所有可用的GPU?

阅读https://www.quora.com/What-are-the-main-differences-between-TensorFlow-and-SciKit-Learn

TensorFlow更低级别; 基本上,乐高积木可以帮助您实现机器学习算法,而scikit-learn为您提供现成的算法,例如,分类算法,如SVM,随机森林,Logistic回归等等.如果你想实现深度学习算法,TensorFlow真的很棒,因为它可以让你利用GPU进行更有效的训练.

这个陈述重新强化了我的断言"scikit-learn包含的锅炉板比tensorflow实现更少",但也暗示scikit-learn不会利用所有可用的GPU?

Iva*_*eno 66

Tensorflow仅使用GPU,如果它是针对Cuda和CuDNN构建的.默认情况下,两者都不会使用GPU,特别是如果它在Docker中运行,除非您使用nvidia-docker和能够执行此操作的图像.

Scikit-learn不打算用作深度学习框架,似乎它不支持GPU计算.

为什么没有深度或强化学习的支持/在scikit-learn中是否会支持深度学习或强化学习?

深度学习和强化学习都需要丰富的词汇来定义架构,深度学习还需要GPU进行高效计算.然而,这些都不符合scikit-learn的设计约束; 因此,深度学习和强化学习目前超出了scikit-learn寻求实现的目标.

摘自http://scikit-learn.org/stable/faq.html#why-is-there-no-support-for-deep-or-reinforcement-learning-will-there-be-support-for-deep-或加固,学习中scikit学习

你会在scikit-learn中添加GPU支持吗?

不,或者至少在不久的将来不会.主要原因是GPU支持将引入许多软件依赖性并引入特定于平台的问题.scikit-learn旨在易于安装在各种平台上.在神经网络之外,GPU在当今的机器学习中不起重要作用,通过仔细选择算法通常可以实现更大的速度提升.

摘自http://scikit-learn.org/stable/faq.html#will-you-add-gpu-support

  • NVIDIA 发布了支持 GPU 的 sklearn [他们自己的版本](https://docs.rapids.ai/api/cuml/stable/)。 (3认同)

mar*_*tin 8

我正在尝试使用插入式解决方案 (h2o4gpu) 来利用 GPU 加速,特别是对于 Kmeans:

尝试这个:

from h2o4gpu.solvers import KMeans
#from sklearn.cluster import KMeans
Run Code Online (Sandbox Code Playgroud)

截至目前,版本 0.3.2 仍然没有.inertia _ 但我认为它在他们的TODO列表中。

编辑:尚未测试,但scikit-cuda似乎越来越受欢迎

编辑:RAPIDS真的是去这里的方式。

  • 这是解决这个问题的最佳方案。 (2认同)

小智 8

根据我的经验,我使用这个包来利用 GPU 来实现这里的一些 sklearn算法

我使用的代码:

import numpy as np
import dpctl
from sklearnex import patch_sklearn, config_context
patch_sklearn()

from sklearn.cluster import DBSCAN

X = np.array([[1., 2.], [2., 2.], [2., 3.],
            [8., 7.], [8., 8.], [25., 80.]], dtype=np.float32)
with config_context(target_offload="gpu:0"):
    clustering = DBSCAN(eps=3, min_samples=2).fit(X)

Run Code Online (Sandbox Code Playgroud)

来源:Intel(R) Scikit-learn 扩展中的 oneAPI 和 GPU 支持