【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 了。

相关推荐
MoRanzhi12032 分钟前
第 8 篇 · 机器学习建模与实验评估:建模流程与对照实验
python·机器学习·scikit-learn·模型评估·交叉验证·shap·消融实验
努力写A题的小菜鸡4 分钟前
OpenCV cv2.threshold 图像阈值处理详
人工智能·计算机视觉
棉猴10 分钟前
玩游戏学Python9-算术运算符应用1
python·游戏·pygame·玩游戏·游戏编程
ndsc_d11 分钟前
AI生成的UI如何继续修改?画布内生成与独立AI设计工具比较
人工智能·ui·ai·ui设计·ai设计·ai设计工具·ai生成ui
喵叔哟12 分钟前
第 5 章 写出真正可执行的 Feature Spec
人工智能
wespaul20 分钟前
知识主题 + Milvus:把业务术语喂给模型的三步离线构建
人工智能·milvus
凤年徐33 分钟前
【Python】Python 语法速通指南
开发语言·python
quantdash_cc37 分钟前
量化数据清洗应该放在数据层还是策略层?从系统架构看清职责边界
开发语言·python·数据分析·系统架构·量化交易·股票数据·quantdash
styshoo40 分钟前
[snapshot]1-snapshot内部逻辑
人工智能
梅雅达编程笔记40 分钟前
Day 06 · 第一个 API 接口:从 Model 到 JSON
python·django·drf·后端开发·restful api·序列化器