Работает ли многопроцессорный пакет Python на мл-движке Google Cloud? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь распараллелить свою функцию предварительной обработки с использованием пакета многопроцессорной обработки Python (который можно найти здесь: https://docs.python.org/3.4/library/multiprocessing.html?highlight=process).

Он отлично работает на моем компьютере (используются мои 4 процессора),однако, кажется, что он не работает, когда я запускаю свой код на задании ml-engine в google cloud. Задание отнимает гораздо больше времени, чем последовательный эквивалент, и загрузка ЦП в какой-то момент снижается почти до 0%.

Вот моя попытка кода:

import multiprocessing as mp

pool = mp.Pool(processes=mp.cpu_count())
params = [ some_params_lists]
pool.starmap(fn_to_run_in_parallel, params)
pool.close()
pool.join()

Я также безуспешно пытался использовать multiprocessing.Process().

Конфигурация машины:

ScaleTier = 'CUSTOM'

masterTYpe = 'large_model'

1 Ответ

0 голосов
/ 22 февраля 2019

Я не думаю, что Google Cloud ml-engine имеет какое-либо отношение к замедлению.Код, работающий на вашем компьютере, будет работать в виртуальных машинах Google Cloud таким же образом.

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

Существует множество дискуссий о многопроцессорной обработке медленнее, чем одиночная обработка в stackoverflow.например, Многопроцессорная обработка Python занимает намного больше времени, чем однократная обработка

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

import time
start = time.time()
#your code in multiprocessing
end = time.time()
print(end - start)

start = time.time()
#your code in single processing
end = time.time()
print(end - start)

В Google Cloud ml-engine требуется время, чтобы нарастить ВМ, что может быть задержкой, которую вы видели.Код выше покажет вам точное время ожидания.

...