能在GPU上运行Celery吗?

3
问题是 - 是否可以在GPU上运行Celery? 目前在我的项目中,我有以下设置:
celery -A projectname worker -l error --concurrency=8 --autoscale=16,8 
--max-tasks-per-child=1 --prefetch-multiplier=1 --without-gossip --without-mingle --without-heartbeat

这是django项目。

一个任务大约需要12秒钟才能执行(向postgresql进行大量插入)。

我想要实现的是尽可能多地增加工作人员。


你好,就我理解这个问题,Celery不能与GPU一起使用,对吗?你有找到任何解决方法吗? - Kerem Nayman
不幸的是,它不支持GPU。但是您可以通过增加执行队列中任务的机器数量来进行水平扩展。 - OceanFire
顺便提一下,我成功地使用了 --pool solo 标志让 Celery 使用 GPU,参考 https://dev59.com/yLzpa4cB1Zd3GeqPVfzd#64471308。话虽如此,在大多数情况下,CPU 实例中推理的性能/成本比通常不会太差。 - pangyuteng
2个回答

2

没有任何方法可以在Celery上运行GPU。不过,你完全可以在Celery任务中使用Keras、TensorFlow或PyTorch(事实上我在这里看到很多关于这些项目和Celery的问题)。


我的问题是我有太多的任务。一个任务需要几秒钟,所以我尝试增加工人的数量。 - OceanFire
如果任务对CPU的负载不重,你可以将它们增加到几百个。此外,请记住你可以将并发类型更改为线程或者eventlet/gevent。 - undefined

1
你可以像这样指定工作线程数...
celery -A projectname --workers=3

但这仍受到CPU核心数量的限制。 - OceanFire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接