MXNet - точечный продукт разреженных матриц - PullRequest
0 голосов
/ 17 сентября 2018

Я нахожусь в процессе создания модели рекомендаций по контенту с использованием MXNet.Несмотря на то, что строк ~ 10K, проблемы нехватки памяти вызываются контекстами CPU и GPU в MXNet.Текущий код приведен ниже.

`` `

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)

` ``

Мне известно, что скалярное произведение является разреженной матрицей, умноженной на плотную матрицу, что может быть частью вопроса.При этом нужно ли рассчитывать точечное произведение по нескольким графическим процессорам, чтобы избежать проблем с нехваткой памяти?

1 Ответ

0 голосов
/ 18 сентября 2018

В MXNet (и AFAIK на всех других платформах) не существует волшебного решения «выполнить точку на GPU». Одним из вариантов является использование разреженных матриц в MXNet (см. это руководство )

Другой вариант - реализовать собственный точечный продукт с несколькими графическими процессорами, разделив входной массив на несколько матриц и выполнив части вашего точечного продукта в каждом графическом процессоре.

...