Это нормально, что нет синхронизации доступа к данным при обучении нейронной сети несколькими потоками? - PullRequest
0 голосов
/ 15 апреля 2019

Я посмотрел на классические источники word2vec , и, если я правильно понял, синхронизация доступа к данным при обучении нейронной сети несколькими потоками отсутствует (синхронизация для матриц syn0, syn1, syn1neg). Это нормальная тренировка или баг?

1 Ответ

1 голос
/ 15 апреля 2019

Возможно, нелогично, это нормально.Новаторской работой над этой статьей стала статья «Hogwild» в 2011 году:

https://papers.nips.cc/paper/4390-hogwild-a-lock-free-approach-to-parallelizing-stochastic-gradient-descent

Аннотация:

Стохастический градиентный спуск (SGD) - популярныйАлгоритм, позволяющий достичь самых современных показателей в различных задачах машинного обучения.Несколько исследователей недавно предложили схемы для распараллеливания SGD, но все они требуют блокировки и синхронизации памяти, снижающей производительность.Цель этой работы - показать, используя новый теоретический анализ, алгоритмы и реализацию, что SGD может быть реализован без какой-либо блокировки .Мы представляем схему обновления под названием Hogwild, которая позволяет процессорам получать доступ к общей памяти с возможностью перезаписи работы друг друга.Мы показываем, что когда связанная с оптимизацией проблема редка, то есть большинство градиентных обновлений модифицируют только небольшие части переменной решения, тогда Hogwild достигает почти оптимальной скорости сходимости.Мы демонстрируем экспериментально, что Hogwild превосходит альтернативные схемы, которые используют блокировку на порядок.

Оказывается, что SGD более замедлен синхронизированным доступом, чем потоками, перезаписывающими работу друг друга ... и некоторые результатыкажется, даже намекают на то, что на практике дополнительные «помехи» могут быть чистой выгодой для прогресса оптимизации.

...