首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TfIdfVectorizer在GPU上速度较慢(cuml与sklearn实现)

TfIdfVectorizer在GPU上速度较慢(cuml与sklearn实现)
EN

Stack Overflow用户
提问于 2021-06-07 15:44:26
回答 1查看 116关注 0票数 0

我在大数据上运行TfIdfVectorizer (理想情况下,我想在我的所有数据上运行它,这些数据是30000个文本,每个文本大约20000个单词)。最初,我使用的是默认的sklearn.feature_extraction.text.TfidfVectorizer,但我决定在GPU上运行它,这样它就会更快。结果恰恰相反--它真的,真的很慢!我在一个Kaggle笔记本with Tesla P100-PCIE-16GB (非常强大的图形处理器)上运行代码。您可以在这里查看这两个代码:非GPU实现:

代码语言:javascript
复制
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实现:

代码语言:javascript
复制
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来加速这个过程?

EN

回答 1

Stack Overflow用户

发布于 2021-06-07 16:51:05

有相当多的可能原因导致实现在各自的执行速度上不同。下面是两种最有可能出现的情况

cuML的GPU实现与-

  1. 的GPU实现不同,而且效率更低。这可能是由多种原因造成的:它可能是由于更“高级”的计算(与由scikit-learn实现的非常本机的计算相比),这将减慢部分操作;也可能是一种无法在GPU上高效执行的转换(我不是非常熟悉GPU计算,但我认为不同长度的文本在这里运行得不是很好)。

  1. 第二个原因可能是数据的CPU/GPU混洗开销。我已经给出了一个相关的答案here。在这种情况下,我们可以观察到GPU计算本身是相当快的,但在内存之间复制数据会导致如此多的开销,以至于在观察到任何性能提升之前,数据需要相当大。

我的建议是检查scikit learn和cuML实现的性能分析运行,看看您的代码在哪些函数上花费的时间最多。通过这种方式,您可能会发现这是由于cuML中的特定函数调用造成的,还是由于一般的GPU效率低下所致。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67867753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档