MCTS * дерево * распараллеливание в Python - возможно? - PullRequest
0 голосов
/ 01 октября 2018

Я хотел бы распараллелить мою программу MCTS.Есть несколько способов сделать это:

  1. Распараллеливание листа, где каждый лист разворачивается и моделируется параллельно.
  2. Распараллеливание корня, где каждый поток / процесс создает отдельное дерево и когдаНекоторое количество симуляций завершено, деревья объединяются, чтобы получить лучшую статистику
  3. Распараллеливание дерева, когда все потоки / процессы совместно используют одно и то же дерево, а каждый поток / процесс исследует различные части дерева.

(Если мое объяснение неясно, ознакомьтесь с этим обзором MCTS . На странице 25 подробно описаны различные методы распараллеливания MCTS.)


Вопрос:

Так как многопроцессорность в Python имеет для создания отдельных подпроцессов, 2. Распараллеливание корня подходит очень хорошо, тогда как я предполагаю, что 3. Распараллеливание дерева неосуществимо.(Поскольку для распараллеливания дерева все подпроцессы должны были бы использовать одно и то же дерево - что трудно сделать в Python)

Я прав?Я пролистал многопроцессорную документацию и, если я правильно понял, кажется, что позволяет передавать информацию между подпроцессами для некоторых базовых типов данных, но очень не рекомендуется из-за скорости и т. Д.

Если это так, параллелизация дерева в Python была бы плохой идеей, верно?

1 Ответ

0 голосов
/ 01 октября 2018

Да, вы правы, что Root Parallelization будет самым простым из этих вариантов для реализации.Различные процессы, по сути, смогут работать совершенно независимо друг от друга.Только в конце процесса поиска вам нужно будет агрегировать результаты любым способом, который вы выберете, что, я не думаю, должно быть проблематичным для реализации.

Я достаточно знаком с многопроцессорностью в Python, чтобы знать, что это.... немного боли, когда вы хотите больше общения (вид общения, который нужен двум другим подходам).Я не достаточно знаком с ним, чтобы сказать со 100% уверенностью, что это действительно «невозможно» или «крайне обескуражено», но в простоте реализации, безусловно, есть явная разница.

...