Gunicorn GPU任务工人班

时间:2019-06-03 02:54:59

标签: python gunicorn

我正在将Flask与Gunicorn结合使用以实现AI服务器。服务器接收http请求并调用AI算法(由pytorch构建)。计算在nvidia GPU上运行。我正在使用的驱动程序界面为pycuda。我需要一些有关在这种情况下如何实现并发/并行的信息。该机器通常具有8个或更多GPU。每个人都可以运行多种算法。

具体的问题是,哪种Gunicorn工作者类(或说Python的并发库)最适合此类任务?

我知道常见的策略是:

  1. 如果应用程序受I / O限制,请选择“伪线程”,例如gevent

  2. 如果应用程序受CPU限制,请使用Python的GIL来实现并行处理。

  3. 如果担心内存占用量,请使用gthreadgevent来代替进程工作者。

about陈述可能并不十分准确,但我认为它可以作为一般指导原则。

但是,对于GPU任务,我不确定是否应该将它们视为CPU受限的情况,还是有特殊之处?如果我使用GIL而不是进程,GPU计算会受到gthreads的影响吗?

0 个答案:

没有答案