Я вычисляю огромные внешние продукты между векторами размером (50500,)
и обнаружил, что при этом NumPy (намного?) Быстрее, чем PyTorch.
Вот тесты:
# NumPy
In [64]: a = np.arange(50500)
In [65]: b = a.copy()
In [67]: %timeit np.outer(a, b)
5.81 s ± 56.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
-------------
# PyTorch
In [73]: t1 = torch.arange(50500)
In [76]: t2 = t1.clone()
In [79]: %timeit torch.ger(t1, t2)
7.73 s ± 143 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
В идеале я бы хотел, чтобы вычисления выполнялись в PyTorch. Итак, как я могу ускорить процесс вычисления внешнего продукта в PyTorch для таких огромных векторов?
Примечание: я пытался переместить тензоры в GPU, но мне дали MemoryError
, потому что ему нужно около 19 ГБ места. Итак, мне в конечном итоге придется сделать это на процессоре.