Celery を使用して、4 枚の Tesla カードを搭載した GPU サーバーでジョブを実行したいと考えています。各カードが常に 1 つのジョブを実行するように、4 つのワーカーのプールで Celery ワーカーを実行します。
私の問題は、ワーカーにそれぞれ 1 つの GPU を要求するように指示する方法です。現在、ワーカー プロセスはすべて連続したプロセス ID を持つ必要があるという前提に依存しています。
device_id = os.getpid() % self.ndevices
ただし、これは常に機能するとは限りません。つまり、時間の経過とともにワーカー プロセスが再起動された場合などです。理想的には、各ワーカーの ID を直接取得したいと考えています。タスク内からワーカーを検査できるかどうか、または GPU 間でジョブを分散するための別のソリューションを提案できるかどうかを教えてもらえますか?