【问题标题】:How to run a tensor flow program on an amazon gpu?如何在亚马逊 GPU 上运行张量流程序?
【发布时间】:2017-05-17 20:54:01
【问题描述】:

(没有愚蠢的问题,但有很多好奇的白痴[我],如果答案很明显,我很抱歉)。我有一个 mac,我想在 gpu 上运行一个张量流程序。可悲的是,我的电脑没有必要的 gpu,所以我希望使用亚马逊中的一个。我成功创建了一个 p2.xlarge 实例,但我不知道如何从我的程序中实际访问该 gpu。程序如何知道使用亚马逊 GPU?我需要包含一些代码吗?这是我目前拥有的代码,打算在本地 gpus 上使用:

类 DeviceCellWrapper(tf.contrib.rnn.GRUCell): def init(self,device,cell): self._cell = 细胞 self._device = 设备

@property
def state_size(self):
    return self._cell.state_size

@property
def output_size(self):
    return self._cell.output_size

def __call__(self,inputs,state,scope=None):
    with tf.device(self._device):
        return self._cell(inputs,state,scope)

设备 = ["/gpu:0]

那么我应该用什么替换“/gpu:0”?

【问题讨论】:

  • 它会在可用时自动使用 GPU。 IE sess.run(tf.ones(1000)*2) 将在 GPU 上做乘法
  • 好的,那么我应该怎么做才能使 GPU 可用?只运行实例就足够了吗?

标签: amazon-web-services amazon-ec2 tensorflow amazon


【解决方案1】:

您应该使用命令 nvidia-smi 来查看 GPU 上正在运行的进程。你会看到这样的东西:

$ nvidia-smi
Wed May 17 15:59:12 2017       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.55                 Driver Version: 367.55                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1080    Off  | 0000:07:00.0     Off |                  N/A |
| 27%   33C    P0    40W / 180W |      0MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GTX 1080    Off  | 0000:08:00.0     Off |                  N/A |
| 27%   36C    P0    39W / 180W |      0MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   2  GeForce GTX 1080    Off  | 0000:0B:00.0     Off |                  N/A |
| 27%   31C    P0    40W / 180W |      0MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   3  GeForce GTX 1080    Off  | 0000:0C:00.0     Off |                  N/A |
| 27%   32C    P0    39W / 180W |      0MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   4  GeForce GTX 1080    Off  | 0000:85:00.0     Off |                  N/A |
| 27%   33C    P0    40W / 180W |      0MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   5  GeForce GTX 1080    Off  | 0000:86:00.0     Off |                  N/A |
| 27%   31C    P0    40W / 180W |      0MiB /  8113MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   6  GeForce GTX 1080    Off  | 0000:8D:00.0     Off |                  N/A |
| 27%   32C    P0    39W / 180W |      0MiB /  8113MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+

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

您应该设置环境变量CUDA_VISIBLE_DEVICES=[gpu_id[,gpu_id]] 来限制特定的python 进程只能看到该GPU(如果您想在不同的GPU 上运行多个应用程序很有用)。

如果你不设置CUDA_VISIBLE_DEVICES tensorflow 将消耗所有 GPU 上的内存。默认情况下,如果可用,您将使用一个 GPU,因此除非您准备好进行分布式训练(并且由于您提出这个问题,您还没有准备好),否则您应该使用 CUDA_VISIBLE_DEVICES

当您启动 tensorflow 脚本时,您会看到类似这样的内容,表明它正确加载了 GPU 驱动程序:

I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.8.0 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.8.0 locally

【讨论】:

  • nvidia-smi 不起作用...我认为它不适用于 Mac。没有这个,我还能做什么?
  • 当我转到系统偏好设置 --> cuda 时,它说没有检测到 gpu。这应该发生吗?
  • 我以为我们在谈论在 AWS 实例上运行?你的 Mac 没有 NVIDIA GPU 对吧?
  • 正确。 Mac 没有 NVIDIA GPU。我已经下载了 NVIDIA,但仍然无法使用 nvidia-smi 命令。我认为它不适用于 Mac
  • 您是否假设 tensorflow 可以在您的计算机上运行并访问 AWS 上的 GPU?您当然需要在 AWS 服务器上运行您的代码,并将您的数据存放在那里。这些命令只能在带有 NVIDIA GPU 的系统上运行。
猜你喜欢
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多