paddlepaddle使用多进程报错“(External) CUDA error(3), initialization error.”的解决方法

使用paddlepaddle训练模型时,存在模型训练已结束,但GPU显存依然占用,影响下一次训练的问题。为了能够在模型训练结束后自动释放GPU显存,参考Tensorflow借助多进程释放内存的方法,可以将paddlepaddle的模型训练放到多进程中进行,从而让训练进程结束后GPU资源自动的释放。

但是在使用 multiprocessing 训练paddlepaddle模型时有时候会遇到

CUDA error(3), initialization error.

的错误提示。

参考paddlepaddle在github上的issue讨论,发现将所有与paddle相关的模块都放到 multiprocessing 里 import 且不要在多进程外有 import 这些模块就可以正常运行了,这样在进程结束后相应的资源也会自动释放。

参考:
TensorFlow函数使用完成释放显存问题 - 知乎
单gpu 多进程报错 · Issue #2241 · PaddlePaddle/PaddleDetection · GitHub
multiprocessing --- 基于进程的并行 — Python 3.7.12 文档

posted @ 2021-12-02 15:58  逸笔  阅读(866)  评论(0编辑  收藏  举报