我希望将一个简单模型的培训分发给单个设备上的一些或所有CPU和GPU,例如支持向量分类器( sklearn.svm.SVC() )。我以前从未使用过GPU,我不知道这是如何工作的,或者使用tensorflow是否是这个简单任务的正确选择。我认为我需要做的是这样的:
import tensorflow as tf
from sklearn.svm import SVC
from sklearn import datasets
from sklearn.model_selection import train_test_split
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
classifier = svm.SVC(kernel='linear', C=0.01).fit(X_train, y_train)我使用的实际数据集是具有11个特性的\approx 3 \times 10^8培训示例。这段代码能像我想的那样做吗?如果没有,那么做这项工作的最佳方式是什么?如果是的话,还有什么可以改进的吗?
编辑:
在进行了更多的googling搜索之后,我发现sklearn不支持GPU的使用。见本文:https://stackoverflow.com/questions/41567895/will-scikit-learn-utilize-gpu
我仍然不确定如何使用GPU来处理简单的ML模型。
发布于 2020-06-03 22:57:02
有几种方法允许您使用GPU进行基本的ML建模。
首先,在您介绍的代码中,tensorflow MirroredStrategy不幸没有效果。它只适用于tensorflow模型本身,而不是来自sklearn的模型。事实上,sklearn根本不提供任何GPU支持。
Nvidia库提供一些基本的ML模型类型和其他东西,通常提供与SciKit学习完全相同的API (类和函数)。来自Nvidia,这当然意味着一切都是建立在GPU的思想。
这是较大的急流工具集 (由Nvidia孵化)的一部分。也许还有其他工具可以帮助我们,比如他们的XGBoost库。
这些框架不仅适用于复杂的深度学习,您还可以使用它们来执行任何基本的建模,并利用它们的GPU支持。他们的文档中包含了一些例子,否则类似于“机器学习”(随附一套木星笔记本的书)之类的东西是一种很好的挖掘方法。
这些框架与Python中的常规科学堆栈(例如NumPy、Scipy、Pandas)很好地工作,因为numpy数组和框架的Tensor对象在大多数情况下都是即插即用的。
当您学习模型、它们是如何工作的时候,请坚持使用sklearn。如果您只想做任何事情,目的是了解GPU的使用,以上两个选项是最现代的方式开始。
https://datascience.stackexchange.com/questions/75401
复制相似问题