Python 中的 MCTS *tree* 并行化 - 可能吗?

MCTS *tree* parallelization in Python - possible?

我想并行化我的 MCTS 程序。有几种方法可以做到这一点:

  1. 叶并行化,其中每个叶并行展开和模拟。
  2. 根并行化,其中每个 thread/process 创建一棵单独的树,当完成一定数量的模拟后,将树合并以提供更好的统计数据
  3. 树并行化,其中所有 threads/processes 共享同一棵树,每个 thread/process 探索树的不同部分。

(如果我的解释不清楚,请查看 this review paper on MCTS。在第 25 页,详细描述了并行化 MCTS 的不同方法。)


问题:

由于 Python 中的多处理有 来创建单独的子进程,2. 根并行化非常适合,而我假设 3. 树并行化不可行。 (由于树并行化,所有子进程必须共享同一棵树——这在 Python 中很难做到)

我说的对吗?我浏览了多处理文档,如果我理解正确的话,似乎 可以在某些基本数据类型的子进程之间来回传递信息,但由于速度等原因,我非常不鼓励.

如果是这样,Python 中的树并行化不是一个好主意吗?

是的,您说得对,根并行化是这些变体中最容易实现的。不同的进程基本上能够 运行 完全独立于彼此。只有在搜索过程结束时,您才需要以您选择的任何方式汇总结果,我认为这在实施时不会有问题。

我对 Python 中的多处理非常熟悉,知道当您需要更多通信(其他两种方法需要的那种通信)时,它...有点痛苦。我对它还不够熟悉,无法 100% 确定它确实是 "impossible" 或 "highly discouraged",但在实施难易程度方面肯定存在明显差异。