我有一个使用torch库的celery 任务,torch库内部使用CUDA。当我运行任务时,它失败,并显示“无法在分叉子进程中重新初始化CUDA。要在多处理中使用CUDA,必须使用'spawn'启动方法”
当我稍微浏览一下这个的时候,我得到了这个-https://github.com/celery/celery/issues/6036这个问题说celery 只支持fork而不支持spawn。
是否有任何变通方案/替代方案?
我有一个使用torch库的celery 任务,torch库内部使用CUDA。当我运行任务时,它失败,并显示“无法在分叉子进程中重新初始化CUDA。要在多处理中使用CUDA,必须使用'spawn'启动方法”
当我稍微浏览一下这个的时候,我得到了这个-https://github.com/celery/celery/issues/6036这个问题说celery 只支持fork而不支持spawn。
是否有任何变通方案/替代方案?
2条答案
按热度按时间gdx19jrr1#
你应该加载pytorch模型并将其作为全局变量。模型和任务的示例将在同一进程中运行
bq3bfh9z2#
你可以开始celery 工人与“独奏”池类型
celery -A tasks worker --pool=solo --loglevel=info
Solo只创建一个线程并使用该线程运行celepie任务。此处不能提供并发数。