深度学习训练模型时,液冷GPU显存不够怎么办?
对于大模型在小显存的 GPU 上训练,通常需要调小 batch size,但是这就意味着更低的准确率。在保持 batch size 不变的情况下正常训练,通常只有两种方法:升级装备(用金钱换显存),用时间换显存。说到性价比,现在一块 32G 的 V100 至少要 6W 起步,而一块 11G 的 1080Ti 大约是 6K 左右,你需要多花 10 倍的金钱才可以让显存容量提升到原来的 3 倍左右。但是,有了 MegEngine v1.4 之后,你可以不用升级装备,就能训练相对原来 3 倍大小的模型。虽然要花 3 倍左右的训练时间,但是 MegEngine 实现了“从 0 到 1”的过程——原来训练不了的模型,现在可以训练了!对于 8 张 V100 的训练场景,相比于升级 8 张卡,使用 MegEngine 的 DTR 优化后只需要 8 张 1080Ti,省下了将近 50W,可谓性价比超值。是什么让 MegEngine 做到了超高性价比训练大模型呢?MegEngine 引入了 DTR 技术,通过额外计算减少显存占用,从而让小显存也能训练大模型。在 2080Ti 上,ResNet-50、ShuffleNet 等网络的最大 batch size 可以达到原来的 3 倍以上。无需修改模型代码,只要在训练代码中加入如下几行代码,就可以训练显卡容量的 3~4 倍大小的模型。import megengine as mge mge.dtr.eviction_threshold = "5GB" # 设置显存阈值为 5GB
mge.dtr.enable() # 开启 DTR 显存优化关于显存阈值,请根据显卡容量和模型大小设定。同时,DTR 显存优化也支持多卡训练,详细可参考 教程。目前 MegEngine 仍然在针对 DTR 算法做进一步的优化,例如:去掉 DTR 中的显存阈值提升显存利用率和性能,将 DTR 实现进静态图中提升性能等等,这些特性预计将在下一个版本中发布。
蓝海大脑 京ICP备18017748号-1