如何在 AWS EC2 实例上激活 GPU 的使用?

Posted

技术标签:

【中文标题】如何在 AWS EC2 实例上激活 GPU 的使用?【英文标题】:How to activate the use of a GPU on AWS EC2 instance? 【发布时间】:2020-12-20 15:59:25 【问题描述】:

我正在使用 AWS 在自定义数据集上训练 CNN。我启动了一个 p2.xlarge 实例,将我的 (Python) 脚本上传到虚拟机,并通过 CLI 运行我的代码。

我使用 Python3(CUDA 10.0 和 Intel MKL-DNN)为 TensorFlow(+Keras2) 激活了一个虚拟环境,这是 AWS 的默认选项。

我现在正在运行我的代码来训练网络,但感觉 GPU 没有被“激活”。训练的速度与我使用 CPU 在本地运行时一样快(慢)。

这是我正在运行的脚本:

https://github.com/AntonMu/TrainYourOwnYOLO/blob/master/2_Training/Train_YOLO.py

我还尝试通过将with tf.device('/device:GPU: 0'): 放在解析器之后(第 142 行)并缩进下面的所有内容来更改它。然而,这似乎并没有改变任何东西。

关于如何激活GPU(或检查GPU是否被激活)的任何提示?

【问题讨论】:

【参考方案1】:

最后它与我的 tensorflow 包有关!我不得不卸载 tensorflow 并安装 tensorflow-gpu。之后自动激活 GPU。

有关文档,请参阅:https://www.tensorflow.org/install/gpu

【讨论】:

【参考方案2】:

查看this answer 以列出可用的 GPU。

from tensorflow.python.client import device_lib

def get_available_gpus():
    local_device_protos = device_lib.list_local_devices()
    return [x.name for x in local_device_protos if x.device_type == 'GPU']

您还可以将 CUDA 用于list the current device,如有必要,还可以使用set the device。

import torch

print(torch.cuda.is_available())
print(torch.cuda.current_device())

【讨论】:

感谢您的回答!我也可以通过运行nvidia-smi 查看可用的 GPU。所以我知道有一个可用的 GPU,只是在我运行我的代码时没有激活它。而这正是我想要解决的问题。 您是否收到任何错误setting the device? 嗨,迈尔斯。再次感谢您的评论!我试过这样做,我没有收到任何错误。我执行了以下具有以下输出的命令:torch.cuda.is_available() --> True、torch.cuda.is_initialized() -->False、torch.cuda.set_device(0)torch.cuda.is_initialized() --> True。但是,处理速度并没有提高,很遗憾,nvidia-smi 仍然给我“没有正在运行的进程”。 我还运行了您提出的第一个命令,但奇怪的是它没有返回 GPU。输出为:[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality incarnation: 15573112437867445376 , name: "/device:XLA_CPU:0" device_type: "XLA_CPU" memory_limit: 17179869184 locality incarnation: 9660188961145538128 physical_device_desc: "device: XLA_CPU device" ] 如果第一个命令没有返回任何内容,则 GPU 对 tensorflow 不可用。这可能有几个问题,但我会 1) 检查 GPU 是否可用于操作系统:lspci | grep VGA 应该返回 NVIDIA GPU。 2) 检查 tensorflow 和 cuda 的版本是否支持你的 GPU。您使用的是什么 AMI?

以上是关于如何在 AWS EC2 实例上激活 GPU 的使用?的主要内容,如果未能解决你的问题,请参考以下文章

NVidia 驱动程序停止在带有 Ubuntu 16.04 和 Tesla K80 GPU 的 AWS EC2 实例上工作

使用 CentOS 在 AWS GPU 实例上运行 OpenGL

使用 GPU 在 EC2 实例上训练 Keras 模型很慢

CUDA 6.5 / Ubuntu 14.04 / AWS EC2 GPU 实例 g2.2xlarge 缺少 drm.ko

aws账户停用,实例未停用,怎么办

AWS - ECS - 如何在现有 ECS(带有 1 个 EC2)实例上重新部署更新的 Docker 映像?