MXNet - 稀疏矩阵的点积

问题描述 投票:0回答:1

我正在使用MXNet构建内容推荐模型。尽管行数约为10K,但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上计算点积,以防止内存不足问题?

python-3.x numpy recommendation-engine tf-idf mxnet
1个回答
0
投票

在MXNet(和所有其他平台的AFAIK)中,没有神奇的“跨GPU执行点”解决方案。一种选择是在MXNet中使用稀疏矩阵(参见this tutorial

另一个选择是通过将输入数组切割成多个矩阵并在每个GPU中执行点积的部分来实现您自己的多GPU点阵产品。

© www.soinside.com 2019 - 2024. All rights reserved.