【问题标题】:Is the multiprocessing python package working on Google Cloud ml-engine?多处理 python 包是否适用于 Google Cloud ml-engine?
【发布时间】:2019-01-23 14:57:48
【问题描述】:

我正在尝试使用多处理 python 包(可在此处找到:https://docs.python.org/3.4/library/multiprocessing.html?highlight=process)来并行化我的预处理功能。

它在我的计算机上运行良好(使用了我的 4 个 CPU),但是当我在 google cloud ml-engine 作业上运行我的代码时,它似乎不起作用。该作业比顺序作业花费的时间要长得多,并且 cpu 利用率在某个时候下降到几乎 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'

【问题讨论】:

  • 您能否评论一下您在机器学习引擎工作中使用的机器类型?
  • 嗨,当然。我刚刚编辑了这个问题。我使用带有 large_model 的定制机器
  • 我们可以假设在 pool.join() 之后没有其他任何事情发生吗? (只是想排除代码已经超出了mp代码的可能性)
  • 是的,在那之后没有其他事情发生

标签: python python-multiprocessing google-cloud-ml


【解决方案1】:

我认为 Google Cloud 机器学习引擎与放缓没有任何关系。在您的机器上运行的代码将在 Google Cloud VM 中以相同的方式运行。

多处理并不一定意味着更快的处理。在调度开销超过多处理增益的情况下,它将变得比单处理更慢。

在 stackoverflow 中有大量关于多处理比单处理慢的讨论。例如Python multiprocessing is taking much longer than single processing

我建议您在处理逻辑之前和之后添加时间,并分别在您的机器和 Google Cloud ml-engine 中运行,以获得多处理和单处理的确切延迟。 例如

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 机器学习引擎需要时间来加速 VM,这可能是您看到的延迟。上面的代码会告诉你确切的延迟时间。

【讨论】:

  • 您是在说:“在您的机器上运行的代码在 Google Cloud VM 中的运行方式与此相同。”但是你怎么能确定呢?我的意思是,事实并非如此。在我的计算机中,单处理比多处理慢得多,但是我无法在 Cloud ml-engine 上重现相同的内容。
  • 您介意添加上面的时间码来测量确切的延迟吗?你自己机器的内存大小是多少?你能分享你的处理逻辑吗?给定相同的内存和 CPU,在您的机器上与在云中执行时的结果应该是相同的。
  • 我知道应该这样。我已经添加了时间码,但过程没有终止(我必须手动完成)。对于另一个示例(以及 pool.imap),在 4 核上(在我的机器上)进行多处理的代码比单处理快 4 倍,但在云中它与单处理的时间相同。我的机器是 16go 内存和 16go swap(cloud ml-engine 机器比那个大)
  • 进程没有终止,您必须手动终止是什么意思?进程没有终止似乎是不对的。我在我的机器和云中尝试了多处理,两者都以相似的延迟结束。
  • 你能分享你的整个代码吗?我会尝试在我的最后运行。 Google cloud ml-engine 是否打印了您的任何日志?
猜你喜欢
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
相关资源
最近更新 更多