Одинаковые шаги при запуске emcee параллельно с Pool - PullRequest
0 голосов
/ 16 марта 2020

Я запускаю процесс MCM C в Python, используя emcee. Мой код python является оберткой вокруг другого программного обеспечения. emcee ходунки сэмплируют пространство входных параметров для этого программного обеспечения. Программное обеспечение читает текстовый файл в качестве входных данных. Мой код генерирует этот текстовый файл, используя каждый шаг цепочки emcee. Чтобы ускорить выборку, я хочу, чтобы несколько процессов, которые оценивали логарифмическую вероятность, работали параллельно. Однако каждый из этих процессов должен записывать в разные входные текстовые файлы, чтобы предотвратить вмешательство между процессами. По этой причине я думаю, что не могу использовать простой стандартный пример на веб-сайте emcee .

В идеале я бы хотел, чтобы каждый процесс выполнялся в своем собственном подкаталоге, генерируя разные входные файлы, чтобы разные процессы не мешали друг другу. Для этого я использую Pool из multiprocessing для создания параллельных процессов вручную, а не параметр по умолчанию из emcee. Я понимаю, что для того, чтобы разные параллельные процессы генерировали разные случайные числа, мне нужно предоставить разные начальные числа каждому PRNG. Мой текущий код выглядит следующим образом:

def log_likelihood(x):
    #update input text file and run software
    return log_likelihood

def run_mcmc(inp_directory)
    os.chdir(inp_directory)
    seedint = int(dusty_inpdir.split('_')[-1]) #sets a different seed for each process
    np.random.seed(seedint)
    sampler = emcee.EnsembleSampler(nwalkers, ndim, log_likelihood)
    sampler.run_mcmc(initial_pos,ntrials)

pool = Pool()
inp_dirlist = ['proc_0','proc_1','proc_2','proc_3']
pool.map(run_mcmc,inp_dirlist)

Несмотря на то, что каждому процессу присваиваются разные начальные числа, все 4 процесса генерируют абсолютно одинаковый набор emcee шагов.

Is np.random.seed не соответствующий параметр для заполнения emcee PRNG? Есть ли лучший способ, чтобы разные процессы работали в разных каталогах?

...