Я внедрил 5x5 Gomoku от CNN + DQN. Вот ссылка на github: https://github.com/bokidigital/CNN_DQN_5x5_Gomoku
Моя проблема в том, что этот код не имеет дизайна параллелизации. Это означает, что при запуске этого кода на сервере Intel Skylake (2 ЦП, 80 ядер) загрузка ЦП составляет всего около 90%.
Я думаю, что идея использования ЦП должна составлять 8000% (80 ядер).
Поскольку у меня есть какое-то настроенное правило в играх (не только часть нейронной сети, которая потребляет около 75% графического процессора), она потребляет процессор и не распараллеливается.
Моя среда:
Skylake CPU X 2
NVIDIA P100 X 2 ( only use 1 )
40GB RAM
Tensorflow 1.14.0
Keras
Python 3.7
Ubuntu 16.04
Моя идея состоит в том, чтобы запустить эту программу отдельно (запустить много копий этого процесса в другой папке, которая затем генерирует разные веса), тогда загрузка ЦП может идеально достигнуть 8000% (если одновременно выполняется много процессов)
Поскольку это тренировочный процесс, не имеет значения, как каждый процесс тренировал свои веса.
Q1. Проблема в том, как объединить свои результаты (обученные веса)? (A + B) / 2?
Q2. Кажется, 1 GPU может использоваться только 1 процессом, я пытался запустить 3 процесса одновременно, GPU зависает.
Q3. Если я отключил GPU, 80-ядерный Skylake будет работать быстрее, чем NVIDIA P100?
Я ожидаю использовать больше ресурсов процессора, чтобы ускорить этот учебный процесс. Так как агент 5x5 обучался в течение 5 дней, я тестировал тот же код, но изменил размер сетки на 9x9, и я рассчитал, что на обучение потребуется 3 месяца.