Как объединить два или более обученных веса? - PullRequest
1 голос
/ 28 октября 2019

Я внедрил 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 месяца.

...