Большой объем SVM (машинное обучение) система

Я работающий над возможным проектом машинного обучения, который, как ожидали бы, сделает высокоскоростные вычисления для машинного обучения с помощью SVM (методы опорных векторов) и возможно некоторый ANN.

Я - довольно удобная работа над matlab с ними, но в первую очередь в небольших наборах данных, только для экспериментирования. Я задаюсь вопросом, масштабируется ли этот matlab основанный подход? или я должен изучать что-то еще? C++ / gpu базирующиеся вычисления? обертывание Java кода matlab и продвижение его на механизм приложения?

Кстати, кажется, существует большая fo литература по GPU, но не очень на том, насколько полезный они находятся на приложениях машинного обучения с помощью matlab, и самый дешевый CUDA enlabled деньги GPU может купить? это даже стоит проблемы?

7
задан Dima 11 November 2010 в 19:34
поделиться

3 ответа

Оба libsvm и SVM light имеют интерфейсы matlab. Кроме того, большинство задач обучения тривиально распараллеливаемы, поэтому обратите внимание на такие команды matlab, как parfor и остальные из Parallel Computing Toolbox.

5
ответ дан 6 December 2019 в 15:21
поделиться

Я работаю над проблемами распознавания образов. Позвольте мне дать вам несколько советов, если вы планируете эффективно работать над проблемами SVM / ANN и если у вас действительно нет доступа к компьютерному кластеру:

1) Не используйте Matlab. Вместо этого используйте Python и его большое количество числовых библиотек для визуализации / анализа ваших вычислений.
2) Критические разделы лучше реализовать с помощью C. Вы можете очень легко интегрировать их со своими скриптами Python.
3) CUDA / GPU не является решением, если вы в основном имеете дело с проблемами неполиномиальной временной сложности, что типично для машинного обучения, поэтому не приносит большого ускорения; Точечные / матричные продукты - это лишь небольшая часть вычислений SVM - вам все равно придется иметь дело с извлечением функций и обработкой списков / объектов, вместо этого попробуйте оптимизировать свои алгоритмы и разработать эффективные алгоритмические методы. Если вам нужен параллелизм (например, для ИНС), используйте потоки или процессы.
4) Используйте компилятор GCC для компиляции вашей программы на C - он создаст очень быстрый исполняемый код. Для ускорения численных вычислений вы можете попробовать флаги оптимизации GCC (например, Streaming SIMD Extensions)
5) Запустите вашу программу на любом современном процессоре под ОС Linux.

Для действительно хорошей производительности используйте кластеры Linux.

7
ответ дан 6 December 2019 в 15:21
поделиться

Я бы не советовал использовать Matlab для чего-то большего, чем создание прототипов. Когда проект становится более сложным и объемным, доля вашего собственного кода будет расти по сравнению с функциональностью, предоставляемой Matlab и инструментами. Чем более развитым становится проект, тем меньше пользы вы получаете от matlab и тем больше вам нужны функции, библиотеки и - что более важно - практика, процессы и инструменты языков общего назначения.

Масштабирование решения matlab достигается путем взаимодействия с кодом, не относящимся к matlab, и я видел, как проект matlab превращается не более чем в клей, вызывающий модули, написанные на многоцелевых языках. Это причиняет ежедневные страдания всем участникам.

Если вы хорошо знаете Java, я бы рекомендовал использовать его вместе с какой-нибудь хорошей математической библиотекой (в крайнем случае, вы всегда можете использовать MKL). Даже с последними оптимизациями Matlab, MKL + JVM намного быстрее - масштабирование и сопровождаемость вне конкуренции.

C++ с процессоро-специфичными интринсиками может обеспечить лучшую производительность, но ценой времени разработки и сопровождаемости. Добавление CUDA еще больше повышает производительность, но объем работы и специфические знания вряд ли того стоят. Конечно, если у вас нет опыта работы с вычислениями на GPU. Как только вы выходите за пределы однопроцессорной системы, гораздо эффективнее добавить в систему еще один или два процессора, чем бороться с вычислениями на GPU.

2
ответ дан 6 December 2019 в 15:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: