昇腾910环境MindSpore训练大模型时出现内存分配失败,求解决方案
大家好,我在昇腾910平台上使用MindSpore进行大模型训练时遇到了一个棘手的内存问题,尝试了多种方法仍未解决,特来社区求助。
环境配置:
错误现象:
在训练启动后不久,程序报错退出,错误信息如下:
已尝试的解决方案:
-
检查了CANN与MindSpore版本配套性,确认版本匹配
-
尝试减小batch_size从32降至8,问题依旧
-
检查了设备内存使用情况,发现内存占用在训练开始后迅速达到上限
-
尝试使用MindSpore的内存优化配置,包括设置context.set_context(memory_optimize_level="O1")
-
验证了单卡推理可以正常运行,但多卡训练时出现此问题
问题分析:
从错误信息看,似乎是设备内存资源耗尽。但奇怪的是,同样的模型在GPU平台上训练时内存使用正常。我怀疑可能是昇腾平台上的内存管理机制或某些算子实现存在差异。
具体疑问:
-
昇腾910上是否有特殊的内存优化配置或参数需要设置?
-
是否有针对大模型训练的特定内存管理策略?
昇腾910环境MindSpore训练大模型时出现内存分配失败,求解决方案
大家好,我在昇腾910平台上使用MindSpore进行大模型训练时遇到了一个棘手的内存问题,尝试了多种方法仍未解决,特来社区求助。
环境配置:
硬件:昇腾910 AI处理器
操作系统:Ubuntu 20.04 LTS
MindSpore版本:2.7.1
CANN版本:8.2.RC1
Python版本:3.9
模型:基于Transformer架构的7B参数大模型
错误现象:
在训练启动后不久,程序报错退出,错误信息如下:
已尝试的解决方案:
检查了CANN与MindSpore版本配套性,确认版本匹配
尝试减小batch_size从32降至8,问题依旧
检查了设备内存使用情况,发现内存占用在训练开始后迅速达到上限
尝试使用MindSpore的内存优化配置,包括设置
context.set_context(memory_optimize_level="O1")验证了单卡推理可以正常运行,但多卡训练时出现此问题
问题分析:
从错误信息看,似乎是设备内存资源耗尽。但奇怪的是,同样的模型在GPU平台上训练时内存使用正常。我怀疑可能是昇腾平台上的内存管理机制或某些算子实现存在差异。
具体疑问:
昇腾910上是否有特殊的内存优化配置或参数需要设置?
是否有针对大模型训练的特定内存管理策略?