【问题标题】:ML Engine - Not using GPU机器学习引擎 - 不使用 GPU
【发布时间】:2025-12-07 21:35:02
【问题描述】:

我正在尝试使用一台 Tesla K80 在 GCloud ML Engine 中训练一个模型。程序可以运行,但比没有 GPU 的笔记本电脑还要慢。

有一条消息,显示 GPU 没有运行任何进程。我没有更改在 GPU 中运行的代码的任何部分,因为我认为 Tensorflow 会为您决定哪些进程在 CPU 中运行,哪些进程在 GPU 中运行。

在我第一次在云中运行代码后,我尝试将图形操作和优化器封装在 with tf.device('/device:GPU:0') 中,但一切都发生了变化。

我收到了这条消息:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.111 Driver Version: 384.111 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 61C P8 29W / 149W | 1MiB / 11439MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
 +-----------------------------------------------------------------------------+

我不知道如何解决这个问题,欢迎任何想法。

提前致谢!

【问题讨论】:

  • 您的代码肯定使用的是 CPU 而不是 GPU。可以分享一下代码吗?
  • 如果你使用的是 tensorflow 和 python。请将tensorflow安装为pip install tensorflow-gpu
  • @Ultraviolet 在 Google 的 cloud ml 引擎上,您不能简单地运行 pip。一旦您指定了某个实例类型,Google 应该自动处理这些事情。
  • @Ultraviolet 也就是说,在setup.py 脚本中是一个install_requires 参数。 请勿在此处指定tensorflow,但(如果必须)指定tensorflow-gpu。如果您安装它的唯一位置是 Google Cloud ML,您甚至不需要指定依赖项。它一直都在。

标签: python tensorflow gcloud


【解决方案1】:

要使用 GPU 进行训练,您必须指定要使用的节点类型。这是在一个 yaml 文件中完成的,您在开始作业时必须参考该文件。

config.yaml 的示例:

trainingInput:
  pythonVersion: "3.5"
  scaleTier: CUSTOM
  # standard_gpu provides 1 GPU. Change to complex_model_m_gpu for 4 GPUs
  masterType: standard_gpu

然后,当您提交作业时,请像这样引用它:

gcloud ml-engine jobs submit training $JOB_NAME \
        --package-path $APP_PACKAGE_PATH \
        --module-name $MAIN_APP_MODULE \
        --job-dir $JOB_DIR \
        --region us-central1 \
        --config config.yaml \
        -- \

应该确保您使用 python 3.5 在“standard_gpu”节点上运行。欲了解更多信息,请参阅here

正如上面评论中提到的@ultraviolet,要使用GPU,您需要使用tensorflow-gpu不是tensorflow。这意味着,在您的 setup.py 文件中,您不得指定 tensorflow 作为要求。相反,要么根本不指定 tensorflow(它始终由平台提供),要么指定 tensorflow-gpu

有效的setup.py 如下所示:

from setuptools import setup, find_packages

setup(name='SOME_NAME',
      version='0.1',
      packages=find_packages(),
      description='YOUR DESCRIPTION',
      install_requires=[
          'tensorflow-gpu'
      ],
      include_package_data=True,
      zip_safe=False)

如果您想确保您没有在 CPU 上运行整个作业,并且要花很多钱在家里的笔记本电脑上做一些事情,您还可以添加一个健全性检查。例如:

import tensorflow as tf
if tf.test.gpu_device_name():
    print('Default GPU: {}'.format(tf.test.gpu_device_name()))
else:
    print('Failed to find default GPU.')
    sys.exit(1)

【讨论】: