10
правок
Изменения
Переформулировка некоторых разделов
Следует выделить следующие виды параллелизма:
* Параллелизм на уровне инструкций (ILP): запускать несколько инструкций исполняются одновременно.* Параллелизм типа одна инструкция множество данных(SIMD): одна инструкция работает с вектором чиселоперация применяется к множеству данных
* Многопоточный параллелизм: несколько независимых рабочих потоков взаимодействуют через абстракцию совместно используемой памяти.
* Распределенные вычисления: несколько независимых рабочих компьютеров взаимодействуют по сети. (MLlib на Spark, Mahout на Hadoop)
== Идеи используемые для ускорения вычислений в ML ==
=== Параллелизм для ускорения линейной алгебры. ===
Примеры оптимизаций:
* Высоко оптимизированные тензорные библиотеки для арифметики.
* Алгоритмы в терминах матричных операций, а не векторных операций, насколько это возможно.
* Broadcast операции, а не циклывместо циклов.
* Распараллеленные реализации некоторых специальных операций (таких как свертки для [[Сверточные нейронные сети | CNN]]).
=== Параллелизм GPU ===
Фреймворки машинного обучения, такие как TensorFlow, PyTorch и MxNet используют эти возможности через библиотеки от компаний производителей графических ускорителей и открытые фреймворки:
C[globalCol * M + globalRow] = acc;
}
=== Параллелизм SGD в стохастическом градиентном спуске ===Запускаем Можно запустить внешний цикл [[Стохастический градиентный спуск|стохастического градиентного спуска (SGD)]] параллельно в пуле потоков и используем использовать конструкции синхронизации, такие как блокировки, чтобы предотвратить состояние гонки. Но это может работать медленно Однако из-за накладных расходов на синхронизациюускорение может получиться маленьким.
Еще более интересная идея (называемая называется асинхронным SGD или Hogwild): Несколько потоков запускают . SGD запускается параллельно в несколько потоков без какой-либо синхронизации. Теперь условия состояния гонки могут возникнуть, но оказывается, что во многих случаях это хорошо, потому что они просто немного изменяют шум/ошибка в условиях гонки просто добавляет небольшое количество к шуму/ошибке, и ошибки уже присутствующей в алгоритм присутствующие из-за случайной выборки случайного выбора градиента.
== Источники информации ==