Будет ли Scikit-Learn использовать GPU?
Чтение реализации scikit-learn в tenSroflow: http://learningtensorflow.com/lesson6/ и scikit-learn: http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html I'm пытается решить, какую реализацию использовать.
scikit-learn устанавливается как часть контейнера-установщика тензорного потока, поэтому может использовать любую реализацию.
Причина использования scikit-learn:
Scikit-Learn содержит меньше котла, чем реализация тензорного потока.
Причина использования tenorflow:
Если при работе на графическом процессоре Nvidia алгоритм будет работать параллельно, я не уверен, будет ли scikit-learn использовать все доступные графические процессоры?
Чтение https://www.quora.com/What-are-the-main-differences-between-TensorFlow-and-SciKit-Learn
TensorFlow более низкого уровня; в основном, кубики Lego, которые помогают вам реализовать алгоритмы машинного обучения, в то время как scikit-learn предлагает вам готовые алгоритмы, например алгоритмы классификации, такие как SVM, случайные леса, логистическая регрессия и многие, многие другие. TensorFlow действительно хорош, если вы хотите реализовать алгоритмы глубокого обучения, поскольку он позволяет вам использовать преимущества графических процессоров для более эффективного обучения.
Это утверждение подкрепляет мое утверждение о том, что "scikit-learn содержит меньшее количество информации, чем реализация тензорного потока", но также предполагает, что scikit-learn не будет использовать все доступные графические процессоры?
6 ответов
Tensorflow использует только графический процессор, если он построен на Cuda и CuDNN. По умолчанию ни один из них не собирается использовать графический процессор, особенно если он работает внутри Docker, если только вы не используете nvidia-docker и образ, способный это сделать.
Scikit-learn не предназначен для использования в качестве основы глубокого обучения, и, похоже, он не поддерживает вычисления на GPU.
Почему нет поддержки для углубленного или подкрепляющего обучения / Будет ли поддержка глубокого или подкрепляющего обучения в scikit-learn?
Глубокое обучение и усиленное обучение требуют богатого словарного запаса для определения архитектуры, а глубокое обучение дополнительно требует графических процессоров для эффективных вычислений. Тем не менее, ни один из них не вписывается в конструктивные ограничения scikit-learn; в результате глубокое обучение и обучение с подкреплением в настоящее время находятся за рамками того, чего стремится достичь scikit-learn.
Будете ли вы добавлять поддержку GPU в Scikit-Learn?
Нет или, по крайней мере, не в ближайшем будущем. Основная причина заключается в том, что поддержка GPU привнесет много программных зависимостей и создаст проблемы, специфичные для платформы. Программа scikit-learn разработана таким образом, чтобы ее можно было легко устанавливать на самых разных платформах. Вне нейронных сетей графические процессоры сегодня не играют большой роли в машинном обучении, и при тщательном выборе алгоритмов часто можно добиться гораздо большего прироста в скорости.
Извлечено из http://scikit-learn.org/stable/faq.html
Я экспериментирую с решением drop-in (h2o4gpu), чтобы использовать ускорение графического процессора, в частности, для Kmeans:
попробуй это:
from h2o4gpu.solvers import KMeans
#from sklearn.cluster import KMeans
на данный момент версия 0.3.2 все еще не имеет .inertia _, но я думаю, что она в их списке TODO.
РЕДАКТИРОВАТЬ: еще не тестировал, но похоже, что scikit-cuda набирает обороты.
РЕДАКТИРОВАТЬ: RAPIDS - это действительно путь сюда.
Из моего опыта, я использую этот пакет , чтобы использовать GPU для некоторых алгоритмов sklearn в здесь .
Код, который я использую:
from sklearnex import patch_sklearn
from daal4py.oneapi import sycl_context
patch_sklearn()
Источник: поддержка oneAPI и GPU в расширении Intel(R) для Scikit-learn
Да, если вы используете TensorFlow или PyTorch в конвейерах Scikit-Learn с помощью Neuraxle.
Neuraxle - это расширение Scikit-Learn, чтобы сделать его более совместимым со всеми библиотеками глубокого обучения.
Вот полный пример проекта от А до Я, где TensorFlow используется с Neuraxle, как если бы он использовался с Scikit-Learn.
Вот еще один практический пример использования TensorFlow в конвейере, подобном scikit-learn.
Уловка выполняется с помощью Neuraxle- TensorFlow или Neuraxle-PyTorch.
Почему так?
Использование одного из Neuraxle-TensorFlow или Neuraxle-PyTorch предоставит вам заставку, позволяющую правильно сериализовать вашу вещь. Вы хотите, чтобы он был правильно сериализован, чтобы обеспечить совместимость между scikit-learn и вашей структурой глубокого обучения, когда придет время сохранять или распараллеливать вещи и так далее. Вы можете прочитать, как Neuraxle решает эту проблему с помощью заставок здесь.
Просто нет
Взгляните на FAQ "Будете ли вы добавлять поддержку GPU?" предоставлено scikit-узнать здесь. Они дали четкое объяснение почему.
вы можете рассмотреть возможность использования Skorch в качестве замены графического процессора.