Ошибка при работе с библиотекой implicit на GPU
Работаю тут с библиотекой implicit для питона, настроил всю инфраструктуру CUDA, прописал все пути, но все равно ловил странное исключение, при попытке использования ALS на GPU:
No CUDA extension has been built, can't train on GPU
Чтож, идем читать исходники als.py:
if not implicit.gpu.HAS_CUDA:
raise ValueError("No CUDA extension has been built, can't train on GPU.")
Очевидно, HAS_CUDA == False, но с чего это вдруг? Находим инициализацию этой переменной в __init__.py:
try:
import cupy # noqa
from ._cuda import * # noqa
HAS_CUDA = True
except ImportError:
HAS_CUDA = False
Файл _cuda — локальный, значит остается только проверить наличие cupy на рабочей машине. И правда, все дело было именно в её отсутствии. Ну хоть сообщить то об этом нормально можно было? :(
Устанавливаем по инструкции, запускаем fit на ALS и вуаля, все работает. На RTX 3090 прирост скорости обучения, по сравнению с Xeon W-2265, у меня был примерно в 20 раз, на разреженной матрице размерности 300000х100000.