我在大数据上运行TfIdfVectorizer (理想情况下,我想在我的所有数据上运行它,这些数据是30000个文本,每个文本大约20000个单词)。最初,我使用的是默认的sklearn.feature_extraction.text.TfidfVectorizer,但我决定在GPU上运行它,这样它就会更快。结果恰恰相反--它真的,真的很慢!我在一个Kaggle笔记本with Tesla P100-PCIE-16GB (非常强大的图形处理器)上运行代码。您可以在这里查看这两个代码:非GPU实现:
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
df = pd.read_csv('data.csv')
X = df.input_text.astype(str).to_numpy()
print('Transforming...')
print(len(X))
model = TfidfVectorizer(lowercase=True, max_features=1000)
model.fit_transform(X)GPU实现:
import pandas as pd
from cuml.feature_extraction.text import TfidfVectorizer
import cudf
import numpy as np
df = pd.read_csv('data.csv')
X = df.input_text.astype(str).to_numpy()
X = cudf.Series(X)
print(X.shape)
print('Transforming...')
model = TfidfVectorizer(lowercase=True, max_features=1000)
model.fit_transform(X)如果你运行这两段代码,你会注意到非GPU实现比GPU实现要快得多。此外,您可以在Kaggle上测试这一点,因为它们拥有非常强大的GPU。我的问题是:为什么会这样?我如何利用GPU来加速这个过程?
发布于 2021-06-07 16:51:05
有相当多的可能原因导致实现在各自的执行速度上不同。下面是两种最有可能出现的情况
cuML的GPU实现与-
我的建议是检查scikit learn和cuML实现的性能分析运行,看看您的代码在哪些函数上花费的时间最多。通过这种方式,您可能会发现这是由于cuML中的特定函数调用造成的,还是由于一般的GPU效率低下所致。
https://stackoverflow.com/questions/67867753
复制相似问题