论文复现 - MAGIS(一)
MAGIS
Experimental Setup
主要软件包版本。基于以下环境运行了 Resnet50 + CIFAR Demo 进行验证。
- CUDA 11.6
- CuDNN 8.4.0
- PyTorch 1.13.1
- Python 3.10.5
一些说明
任务
根据 Renze Chen 描述,任务是跑一遍 forward + backward,测时间和内存开销。Samples 输出的 results.csv 里有实验一节里的各种评估指标。数据集不重要,可能是随机生成。至于几个 Comparasion Schemes,则需要分别实现 ResNet 等。
nn/
实现了 ResNet,ViT 等网络。Transformer.py 中有 Bert 等网络定义。两个大模型也基于 config.py 对 Transformer.py 作用即可。
torch_cuda.py
相当于把 nn/ 中定义的网络转为 pytorch,跑 baseline,然后再进入 MAGIS 工作流。所以 Pytorch Baseline 相当于已经实现了。待研读代码。
Run
第三次实验求助了作者,将 nn.Bert()
参数做了修改,可惜仍然 exceed memory limit.
第四次实验进一步降 batch_size 为 16,首次运行成功。
Debug
这个工作尚有一些部分没有实现,运行时会报一些参数上的错误
1 | TypeError: OpGraph.conv2d() takes from 3 to 7 positional arguments but 8 were given |
问了作者,答复是有输出就不用管。
另有一些数据类型上的问题
1 | RuntimeError: expected scalar type Float but found BFloat16(Half) |
按照 paper 改成 torch.bfloat16
或 float16
都会有此问题. 推测是 torch 1.13 的锅。暂时按 float32
运行,不出意外地 OOM 了。用 float32
, 降至 batch_size = 8
仍无法运行,暂时搁置。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Miya's Blog!
评论