频繁地进行内存申请、释放将会产生内存碎片。可以通过调整训练脚本,让内存申请逻辑尽量亲和PyTorch内存池逻辑,以减少内存碎片产生。长生命周期内存在训练开始时优先申请,如模型权重、梯度、优化器状态等;或优先申请大内存后申请小内存以提高内存复用率;功能等效的情况下尽量串行申请释放内存,避免批量申请释放内存,提高内存复用。
针对Pytorch内存管理特点,修改脚本使内存申请与PyTorch内存管理更亲和。
for bucket in buckets: bucket.apply() for bucket in buckets: dist_group.broadcast(bucket) for bucket in buckets: bucket.release()