#python #tensorflow #keras
#питон #тензорный поток #keras
Вопрос:
Я пытаюсь реализовать алфавитно-подобный ИИ для настольной игры для игры Гомоку (поиск по дереву Монте-Карло в сочетании с CNN, который оценивает позиции доски).
Прямо сейчас MCTS реализован как отдельный компонент. Кроме того, у меня есть простой TCP-сервер, написанный на Python, который получает позиции из MCT (партиями от 50 до 200), преобразует их в массивы Numpy, передает их в модель TF / Keras путем вызова __call__
, преобразует их обратно и отправляет результаты в MCT через TCP.
Во время обучения я генерирую обучающие данные (около 5000 досок), заставляя ИИ играть против самого себя, вызывать model.fit
один раз, создавать новый набор данных, используя новые веса модели, и так далее. Я параллельно играю несколько матчей, каждый из которых использует свой отдельный сервер Python / TF. Каждый сервер загружает свою собственную копию модели (я использую tf.config.experimental.set_memory_growth(gpu, True)
).
Проблема, с которой я сталкиваюсь, заключается в том, что во время воспроизведения матчей время вывода становится все больше и больше, чем дольше загружается сеть, пока она не становится настолько мучительно медленной, что мне приходится перезапускать обучение. После перезагрузки время вывода возвращается к нормальному. Это, кстати, также происходит, если я играю только в одну игру за раз с загруженной только одной моделью.
Я попытался смягчить проблему, перезапуская сервер Python (и, следовательно, модель) после каждого совпадения. Это, казалось бы, решало проблему, пока я не начал сталкиваться с той же проблемой после нескольких итераций обучения.
Сначала я подумал, что причина в моей неидеальной настройке (игровой ноутбук под управлением Windows), но на сервере Linux моего университета проблема также возникла. На моем компьютере с Windows, наряду с тем, что модель становилась все медленнее и медленнее, она также использовала все меньше и меньше памяти. Этого, по-видимому, не произошло в Linux.
Ответ №1:
У меня была аналогичная проблема, и она была связана с тем, что для моей карты были установлены неправильные драйверы NVIDIA и не был установлен CUDA. Надеюсь, это было полезно.