我的代码产生了几个进程和线程。 进程收集数据,当收集到足够的数据时,线程会进行一些训练。
代码看起来像这样
import threading
from torch import multiprocessing as mp
def train(flags):
processes = []
for i in range(np):
p = ctx.Process(
target=my_function, args=my_args)
p.start()
processes.append(p)
threads = []
for i in range(nt):
thread = threading.Thread(
target=my_other_function, args=(i,))
thread.start()
threads.append(thread)
数据采集和训练都有一些调用PyTorch和NumPy
random
.
如何确保确定性行为来重现我的结果?
我在 main 中设置所有随机种子,但结果永远不一样。我尝试了
fork
或 spawn
的产卵过程。
我正在考虑手动将生成器传递给线程和进程,但我不确定是否有更好的方法。