我想使用 Celery 在具有四张 Tesla 卡的 GPU 服务器上运行作业。我运行 Celery 工人与四个工人的池,这样每张卡总是运行一个工作。
我的问题是如何指导工人每人要求一个 GPU。目前我依赖的假设是工作进程都应该有连续的进程 ID:
device_id = os.getpid() % self.ndevices
但是,这并不能保证始终有效,即当工作进程随着时间的推移重新启动时。所以理想情况下,我想直接获取每个工人的 ID。有人可以告诉我是否可以从任务中检查工作人员,或者可以提出不同的解决方案来跨 GPU 分配作业?