使用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 文档