我目前正在从事python数据科学项目。管道包含10个不同的步骤,其中一个特定步骤基于PyTorch中实现的AI。由于某些步骤的计算非常耗时,因此我们目前正在实施Redis RQ worker设置以计划多台计算机。由于并非所有机器都配备GPU,因此我们将两个队列分开,一个队列用于CPU任务,另一个队列用于GPU任务。到目前为止,一切都很好。问题在于,在仅CPU的计算机上,并非所有库都可用,例如,割炬。当然可以安装,但是不需要。所以我目前面临的问题是:
处理GPU工作程序和CPU工作程序之间的不同导入的最佳方法是哪种?
所有十个计算步骤都在“数据集”的主类中实现。
嗯,您可以创建一个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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句