【Pytorch】在多进程中使用 CUDA

Python 原生自带的多进程库不支持在子进程中调用 CUDA 进行加速运算。因此,本文介绍了使用 Pytorch 中的 multiprocessing 库实现在子进程中调用 CUDA 的方法。

在使用 Python 原生自带的 multiprocessing 库中,若在子进程中调用 CUDA,则会报错:

RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method

如果根据提示信息,直接使用

python 复制代码
torch.multiprocessing.set_start_method("spawn")

则会报错:

RuntimeError('context has already been set')

这是因为想要实现在多进程中调用 CUDA,需要先新建一个 context 对象,并在实际使用中用这个 context 对象替换 torch.multiprocessing,例如:

python 复制代码
context = torch.multiprocessing.get_context("spawn")
...
process = context.Process(target=..., args=...)

此时,在子进程中就可以放心地调用 CUDA 了。

相关推荐
yyk33324几秒前
卷积神经网络
人工智能·神经网络·cnn
翼龙云_cloud5 分钟前
腾讯云国际代理商:如何用云服务器快速部署WorkBuddy AI助手?
服务器·人工智能·云计算·腾讯云
wuyk55514 分钟前
Python 零基础入门第九章:用户输入与 While 循环
开发语言·python
我爱写代码i16 分钟前
边缘计算与小模型在工业预测性维护、机器视觉质检中有哪些具体的落地实施案例与架构设计?
人工智能·边缘计算
兮动人18 分钟前
Python变量与常量
开发语言·python·机器学习·python变量与常量
CCYe、24 分钟前
新模型上线、旧模型下线:企业AI网关如何管住模型版本
java·网络·数据库·人工智能
2601_9623008127 分钟前
机器学习的理想基石
人工智能·python·机器学习·编程语言·数据处理
audyxiao00128 分钟前
优秀博士学位论文分享|神经符号系统的非确定性管理研究
人工智能·神经符号系统·优博论文
falldeep31 分钟前
kl_loss为什么用k3?该放到reward中还是loss中?
人工智能·机器学习