【问题标题】:how to train 1000 neural networks using GPU in Matlab simultaneously?如何在 Matlab 中同时使用 GPU 训练 1000 个神经网络?
【发布时间】:2017-01-28 21:55:17
【问题描述】:

大家! 我尝试使用

parfor i = 1 : 1000
    net{i} = train(net_sample, x, t,'useGPU','yes');
end;

但它失败了。 有什么方法可以同时教他们吗? 有没有其他编程语言可以同时训练多个网络的代码?

举个简单的例子,
假设我们的网络包含 2 x 2 x 1 神经元并采用 10 个输入训练向量 5 x 1。

【问题讨论】:

  • 您如何期望多个事物同时尝试使用 same GPU?
  • 错误信息是什么?每个网络占用多少资源 (RAM)?
  • Suever,我想,Matlab 可以自动做一些优化。
  • mpaskov,我的笔记本中现在没有 gpu,但错误消息类似于“无法在 parfor 中使用 gpu”或“gpu 不可用”。但是当我只训练一张网时,它就奏效了。 n1 = train(net_sample, x, t,'useGPU','yes');我试图只训练 10 个具有 16 GB RAM 的网络。主要问题在于 GPU。
  • 我认为 GPU 没有足够的内存来训练 10 个网络。检查 1 个网络的 GPU 使用情况,然后乘以 10。它应该超过 16 GB。一个 GPU 上的 1000 个网络远远超出了限制。我不了解 MATLAB,但我使用 Theano 在一个 GPU 上同时训练了两个网络。

标签: matlab neural-network gpu training-data


【解决方案1】:

如果您的 GPU 不超过一个,那么这样做毫无意义。您池中的每个工作人员都在争夺相同的资源,如果您的网络非常小,那么 GPU 将被充分利用,因此您甚至无法从使用 MPS 中获得任何好处。

【讨论】:

  • 但是为什么要使用 gpu 来加速呢?因为有多个 cuda 芯片,所以它们可以更快地计算一些并行操作。我是赖特吗?同样,假设我们有 1000 个网络,其中包含 2 x 2 x 1 神经元并采用 10 个 5 x 1 的输入训练向量。在这种情况下 GPU 可以更快吗?
  • Joss Knight,你有没有使用过其他语言使用 GPU 训练神经网络?
  • 特斯拉 K40 有 2880 个 CUDA 内核,因此理论上它可以同时执行 2880 个浮点运算。 AlexNet 的最后一个全连接层每次观察需要执行 400 万次乘法。因此,您可以看到,即使是通过典型的神经网络运行单个输入,也很快会完全占用您的 GPU。在只有 4 个神经元的示例网络中,您是对的,您并没有完全占用 GPU。如果您使用的是 linux,您可能会从使用上面提到的 MPS 中获得一些好处。
  • 如果“语言”是指“图书馆”,那么是的,但我不确定你在说什么。自动共享 GPU 资源(没有 MPS)的唯一方法是让操作共享相同的进程,这意味着使用线程和流。也许有一些工具可以为您做到这一点,但我怀疑这主要是您必须自己做的事情。但我坦率地承认,这不是 MATLAB 可以做到的。
猜你喜欢
  • 2010-11-20
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 2012-10-15
  • 2013-07-11
  • 2017-12-05
  • 1970-01-01
  • 2015-10-28
相关资源
最近更新 更多