ML引擎-不使用GPU

时间:2018-07-26 09:23:38

标签: python tensorflow gcloud

我正在尝试使用一个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 |
 +-----------------------------------------------------------------------------+

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

谢谢!

1 个答案:

答案 0 :(得分:3)

要使用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-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)