Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

解决keras模式下,使用GPU训练时会爆显存的bug。 #1190

Merged
merged 3 commits into from
Oct 8, 2023

Conversation

dogvane
Copy link
Contributor

@dogvane dogvane commented Oct 8, 2023

解决keras模式下,使用GPU训练时会爆显存的bug。

观察到的现象是,一些模型增大batchsize后,会在首个epoch的中途爆显存不足,只要过了一个epoch后,就能完整训练。同样的batchsize在python下能设置大得多的值。
最后使用最小训练代码分析出,是每个step之后,图片加载到显存里的数据没有释放导致的。
在寻找释放显存接口没有结果的时候,直接使用了GC.Collect();可以让显存主动回收。
因此当前的修复方案是在每个step里,都执行一次 GC.Collect(); 用来释放显存资源。

观察到的现象是,一些模型增大batchsize后,会在首个epoch的中途爆显存不足,只要过了一个epoch后,就能完整训练。同样的batchsize在python下能设置大得多的值。
最后使用最小训练代码分析出,是每个step之后,图片加载到显存里的数据没有释放导致的。
在寻找释放显存接口没有结果的时候,直接使用了GC.Collect();可以让显存主动回收。
因此当前的修复方案是在每个step里,都执行一次 GC.Collect(); 用来释放显存资源。
Copy link
Member

@Oceania2018 Oceania2018 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your contribution.

@Oceania2018 Oceania2018 merged commit 090dc1e into SciSharp:master Oct 8, 2023
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants