如果您在函数计算FC中使用了24G显卡,内存没有释放可能是由于显存管理问题。在使用PyTorch进行GPU计算时,确实会遇到显存管理的问题。可能的原因包括Batch_size设置过大,超过显存空间,或者之前程序运行结束后未释放显存。为了解决这个问题,您可以尝试以下方法:
减小Batch_size:如果Batch_size设置过大,超过显存空间,可以通过减小Batch_size来释放显存。
显式删除变量:使用del关键字显式删除不再需要的变量,这有助于Python的垃圾回收器释放不再使用的显存。
使用torch.cuda.empty_cache():这个方法可以清空GPU缓存,从而释放显存。
重启实例:如果以上方法都无法解决问题,您可以考虑重启函数计算实例,以便重新分配资源和释放内存。
在使用函数计算FC并换成24G显卡后,如果发现内存没有释放,可能的原因和解决方案如下:
显存设置过大:当使用GPU进行计算时,如果显存设置过大超过了显卡的实际容量,可能会导致内存溢出。例如,当使用PyTorch GPU进行计算时,如果Batch_size设置过大超过显存空间,可以尝试减小Batch_size。
程序未正确释放显存:在一些情况下,如果程序运行结束后未能正确释放显存,也可能导致显存占用过高。此时,需要检查代码以确保在程序运行结束后正确地释放了显存。
并发度设置不合理:函数计算的弹性实例和GPU实例均支持按量模式和预留模式。按量模式根据请求时长计费,可以结合并发度设置提高实例的资源利用率。如果并发度设置不合理,可能会影响资源的释放。
其他错误:如果以上方法都无法解决问题,你可能需要查看函数计算的报错信息,以便进一步定位问题。
配置里可以调整保持在内存中的模型个数,调小一点看看。可以参考下这些字段,具体功能还是需要去官方社区确认下
"sd_checkpoint_cache": 7,
"sd_vae_checkpoint_cache": 0,
"sd_checkpoints_limit": 7,
"sd_checkpoints_keep_in_cpu": true,
"lora_in_memory_limit": 0,
"interrogate_keep_models_in_memory": false, 此回答整理自钉群“【答疑群】函数计算 AIGC 场景技术交流”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。