Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在预测高吞吐量流时使用CUDA GPU_Cuda_Gpu_Keras_Theano_Nvidia - Fatal编程技术网

在预测高吞吐量流时使用CUDA GPU

在预测高吞吐量流时使用CUDA GPU,cuda,gpu,keras,theano,nvidia,Cuda,Gpu,Keras,Theano,Nvidia,我们正在尝试开发一个自然语言处理应用程序,它有一个面向用户的组件。用户可以通过API调用模型,并返回结果。 模型使用带有Theano的Keras进行预训练。我们使用GPU来加速训练。然而,使用GPU仍然可以显著加快预测速度。目前,我们有一台带有两个GPU的机器。但是,在运行时,例如,当运行面向用户的bits时,存在一个问题:通过CUDA共享GPU的多个Python进程似乎无法提供并行加速。 我们将nvidia docker与libgpuarray pygpu、Theano和Keras一起使用。

我们正在尝试开发一个自然语言处理应用程序,它有一个面向用户的组件。用户可以通过API调用模型,并返回结果。 模型使用带有Theano的Keras进行预训练。我们使用GPU来加速训练。然而,使用GPU仍然可以显著加快预测速度。目前,我们有一台带有两个GPU的机器。但是,在运行时,例如,当运行面向用户的bits时,存在一个问题:通过CUDA共享GPU的多个Python进程似乎无法提供并行加速。 我们将nvidia docker与libgpuarray pygpu、Theano和Keras一起使用。 GPU大部分仍处于空闲状态,但添加更多Python工作人员并不能加快进程

解决在API后面运行GPU模型的问题的首选方法是什么?理想情况下,在购买新的GPU之前,我们会更有效地利用现有的GPU


我可以想象,在发送到GPU之前,我们需要某种缓冲区,而不是为每个HTTP调用请求锁?

这不是对您更一般问题的回答,而是基于我对您描述的场景的理解

如果有人编写了一个使用GPU执行某些计算任务的系统,他们希望花时间并行执行,以便从GPU可以提供的全部资源或类似资源中获益

这意味着,如果您添加第二个类似的任务-即使是并行的-完成它们的总时间应该与连续完成它们的时间量相似,即一个接一个-因为第二个任务的GPU资源利用率很低。事实上,如果两个任务都以某种方式大量使用二级缓存,并且在一起运行时对二级缓存进行重击,那么这两个任务甚至可能会变得更慢


无论如何,当您想要提高性能时,一个好办法是评测您的应用程序-在这种情况下,使用或其第一个链接是官方文档,第二个链接是演示文稿。

如果我理解正确,可能会发生多个不同的内核/进程同时在一个GPU上运行的情况?Afaik GPU通常不擅长这一点——至少当所有内核都使用一定数量的ThreadBlock启动时是这样。这确实是一个相当广泛的问题,我不确定你是从CUDA的角度还是从涉及Python框架的任何地方问这个问题。NVIDIA发布了一款名为MPS的产品,该产品适用于MPI等多进程需要同时访问GPU的用例。这会有帮助吗?我相信Talonmes已经指出了问题所在,并提供了解决方案。来自不同进程的内核将在不同的GPU上下文中运行,并且。解决方案是让代理进程代表其他进程运行内核,以便它们共享相同的上下文。这正是我们要做的。