攻克PyTorch显存不足难题:在普通GPU上训练超大图模型
Disk Sparse Adam
一位开发者创造了Disk Sparse Adam(DSA),这是一种用于PyTorch的磁盘稀疏优化器,通过内存映射(mmap)将优化器动量状态移至磁盘,大幅降低了训练大型稀疏模型的内存占用。这使得在消费级GPU乃至免费的谷歌Colab上训练成为可能,基准测试显示在百万实体规模下实现了零显存开销。
本文介绍了 Disk Sparse Adam (DSA),这是一种面向 PyTorch 的新颖外核优化器,旨在在消费级 GPU 上训练大规模稀疏模型,例如拥有数百万节点的知识图谱嵌入。标准的 torch.optim.SparseAdam 将一阶和二阶矩状态存储在内存中,对于一个拥有 1000 万个实体和 128 维向量的模型,这额外消耗约 10.24 GB 内存,经常导致 CUDA 内存不足错误。DSA 则将这些矩矩阵以二进制文件形式存储在磁盘上,并通过操作系统 mmap 机制将其映射到内存,在每次优化步骤中仅读写当前批次的状态。该优化器设计为可直接替代标准 PyTorch 数据处理流程,并支持欧几里得空间和双曲空间(庞加莱球)。作者报告称,优化器状态的内存使用量从千兆字节降至兆字节级别,在 Kaggle 上针对 100 万个实体的基准测试显示 VRAM 开销为 0.00 MB,吞吐量达到每秒 134,212 个样本。DSA 已在 GitHub 上以 MIT 许可证发布,其局限性包括需要 NVMe SSD 以获得最佳性能,并且仅适用于稀疏梯度(例如来自 torch.nn.Embedding 或 EmbeddingBag 的梯度)。
来源: Habr — хаб ИИ —
原文
