【问题标题】:Python script runs slower on google compute instance as compared with colaboratory与 colaboratory 相比,Python 脚本在 Google 计算实例上的运行速度较慢
【发布时间】:2023-03-17 13:41:01
【问题描述】:

与 24-vCPU 谷歌计算实例相比,为什么我的机器学习 python/tensorflow 脚本在 colab 上运行得更快?

在 colab 上调用:!/content/myscript.py

在谷歌计算实例上调用:!/home/prj1/myscript.py

colab 上的纪元时间:0.8 秒

谷歌计算实例的纪元时间:2.0 秒

在这两种情况下,我都使用 tensorflow 1.11 和 python 2.7,myscript.py 是唯一运行的程序,并且没有使用 GPU。该脚本每 10 个 epoch 在屏幕上显示训练进度(纯文本,无图形)。

【问题讨论】:

  • 可以分享脚本吗?
  • 我很抱歉,大卫,但在这个阶段,我不能分享脚本。
  • 您在普通的 24CPU 机器上使用了哪个 GCE 映像?
  • Debian GNU/Linux 9 (stretch)

标签: python tensorflow google-compute-engine google-colaboratory


【解决方案1】:

Colaboratory 针对 Tensorflow 进行了优化,而 GCE 实例针对 一台普通的机器。 "When you create a new notebook on colab.research.google.com, TensorFlow is already pre-installed and optimized for the hardware being used." 这可能就是您看到两者之间的性能差异的原因。

【讨论】:

  • 我希望 GCE 实例支持的软件针对他们进行了优化。我现在将尝试安装 Google 的“用于深度学习应用程序的预配置虚拟机”映像,看看是否会有所作为。
  • Google 提供了针对机器学习进行了优化的“点击部署”deep learning VM imagesCloud Machine Learning Engine 也可作为优化解决方案使用。
  • 另外,Cloud TPUs 是该平台上可用的 ASIC,专门用于成为 Tensor Flow 的最佳工具。
  • 我已经尝试过 Google 的“点击部署”VM 映像,更具体的是 tf-latest-cpu。我正在尝试在 32 个 vCPU 谷歌计算实例上运行几个深度学习 python/tensorflow 脚本。出于某种原因,当我使用该图像时,所有 python/tensorflow 脚本都在 32 个 vCPU 中的两个(vCPU #0 和 #16)上运行。我使用标准的 Google 计算实例映像尝试了相同的设置。在这种情况下,负载在 vCPU 之间均匀分布。我正在尝试使用 tf-latest-cpu 映像来加快速度。
  • 使用this 示例python 脚本,我们能够测试这种行为。我们发现两个实例都使用了所有 CPU 内核。标准实例耗时 1 分 19 秒,而 TensorFlow 图像耗时 1 分 2 秒。您发现的文章似乎是可行的解决方法。
【解决方案2】:

按照Tips to Improve Performance for Popular Deep Learning Frameworks on CPUs 推荐的优化,我能够将纪元时间降低到 1.1 秒

代码如下:

import os
N_CORES                       = int(os.cpu_count()/2)
os.environ["OMP_NUM_THREADS"] = str(N_CORES)
os.environ["KMP_BLOCKTIME"]   = "30"
os.environ["KMP_SETTINGS"]    = "1"
os.environ["KMP_AFFINITY"]    = "granularity=fine,verbose,compact,1,0"
config_sess                   = tf.ConfigProto(intra_op_parallelism_threads=N_CORES, inter_op_parallelism_threads=2, allow_soft_placement=True, device_count = {'CPU': N_CORES})

with tf.Session(config=config_sess) as sess:

【讨论】:

    猜你喜欢
    • 2019-06-18
    • 2018-07-01
    • 2021-11-24
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多