最佳实践设备或用例特定导入?
Best practice device or usecase specific import?
我目前正在从事 python 数据科学项目。该管道由 10 个不同的步骤组成,其中一个步骤基于在 PyTorch 中实现的 AI。由于某些步骤的计算非常耗时,我们目前正在实施 Redis RQ worker 设置以在多台机器上进行调度。由于并非所有机器都配备了 GPU,因此我们拆分了两个队列,一个用于 CPU 任务,一个用于 GPU 任务。
到目前为止,一切都很好。
问题是在 CPU-only 机器上并不是所有的库都可用,例如火炬。当然,可以安装,但是不需要。所以我目前面临的问题是:
处理 GPU worker 和 CPU worker 之间不同导入的最佳方式是什么?
所有十个计算步骤都在“数据集”的主要 class 中实现。
嗯,你可以做一个 config.py,你有一个硬编码定义,例如HAVE_GPU=True
对于配备 GPU 的机器,在代码中的任何地方导入第一件事,然后根据该变量决定要导入的内容。
config.py
HAVE_GPU = True
some_script.py
import config
if config.HAVE_GPU:
import gpurelatedmodules
else:
import cpurelatedmodules
我目前正在从事 python 数据科学项目。该管道由 10 个不同的步骤组成,其中一个步骤基于在 PyTorch 中实现的 AI。由于某些步骤的计算非常耗时,我们目前正在实施 Redis RQ worker 设置以在多台机器上进行调度。由于并非所有机器都配备了 GPU,因此我们拆分了两个队列,一个用于 CPU 任务,一个用于 GPU 任务。 到目前为止,一切都很好。 问题是在 CPU-only 机器上并不是所有的库都可用,例如火炬。当然,可以安装,但是不需要。所以我目前面临的问题是:
处理 GPU worker 和 CPU worker 之间不同导入的最佳方式是什么?
所有十个计算步骤都在“数据集”的主要 class 中实现。
嗯,你可以做一个 config.py,你有一个硬编码定义,例如HAVE_GPU=True
对于配备 GPU 的机器,在代码中的任何地方导入第一件事,然后根据该变量决定要导入的内容。
config.py
HAVE_GPU = True
some_script.py
import config
if config.HAVE_GPU:
import gpurelatedmodules
else:
import cpurelatedmodules