在大规模模型的训练流程中,传统的实践要求存储前向传播阶段产生的激活值,以供后续反向传播过程中的梯度计算使用。这一需求导致了激活值保存数量随模型深度线性增长的现象,显著加剧了对硬件内存资源的压力。
为应对上述挑战,提出了重计算策略。具体而言,在前向传播与损失函数计算阶段,即时释放不再需要的激活值内存空间,仅在反向传播时根据需要重新计算激活值。此方法通过有效缩短激活值的生命周期,显著减轻了内存负担,提升了整体的资源利用效率。
--recompute-activations # 开启选择性重计算
--recompute-granularity full # 开启完全重计算 --recompute-method block # 配置具体重计算方式
同时配置--recompute-activations和--recompute-granularity full生效选择性重计算。
采用重计算策略后,系统能够实现以下显著改进: