【发布时间】:2021-08-24 07:25:48
【问题描述】:
我在大型数据上运行 TfIdfVectorizer(理想情况下,我想在我的所有数据上运行它,即 30000 个文本,每个文本大约 20000 个单词)。最初,我使用默认的sklearn.feature_extraction.text.TfidfVectorizer,但我决定在 GPU 上运行它,这样它会更快。结果恰恰相反——它真的,真的很慢!我在 Kaggle 笔记本 with Tesla P100-PCIE-16GB(非常强大的 GPU)上运行代码。
您可以在此处查看两个代码:
非 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 来加快进程?
【问题讨论】:
标签: python tensorflow nlp gpu tfidfvectorizer