MCTS * дерево * распараллеливание в Python - возможно?

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

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

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


Вопрос:

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам