我正在使用MXNet构建内容推荐模型。尽管行数约为1万,但MXNet中的CPU和GPU上下文引发了内存不足问题。当前代码如下。
```
import mxnet as mx
import numpy as np
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import linear_kernel
df = pd.read_csv("df_text.csv")
tf = TfidfVectorizer(analyzer = "word",
ngram_range = (1,3),
min_df = 2,
stop_words="english")
tfidf_matrix = tf.fit_transform(df["text_column"])
mx_tfidf = mx.nd.array(tfidf_matrix, ctx=mx.gpu())
# Out of memory error occurs here.
cosine_similarities = mx.ndarray.dot(mx_tfidf, mx_tfidf.T)
```
我知道点积是一个稀疏矩阵乘以一个密集矩阵,这可能是问题的一部分。也就是说,是否必须在多个GPU上计算点积,以防止出现内存不足的问题?
答案 0 :(得分:0)
在MXNet(以及AFAIK所有其他平台)中,没有神奇的“跨GPU执行点”解决方案。一种选择是在MXNet中使用稀疏矩阵(请参见this tutorial)
另一种选择是通过将输入数组切成多个矩阵并在每个GPU中执行点积的一部分来实现自己的多GPU点积。