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.pyTransformer.py 作用即可。

torch_cuda.py

相当于把 nn/ 中定义的网络转为 pytorch,跑 baseline,然后再进入 MAGIS 工作流。所以 Pytorch Baseline 相当于已经实现了。待研读代码。

Run

第三次实验求助了作者,将 nn.Bert() 参数做了修改,可惜仍然 exceed memory limit.

第四次实验进一步降 batch_size 为 16,首次运行成功。

Debug

这个工作尚有一些部分没有实现,运行时会报一些参数上的错误

1
2
3
TypeError: OpGraph.conv2d() takes from 3 to 7 positional arguments but 8 were given
...
TypeError: TorchCudaBackend._gen_ewise_uni() missing 1 required positional argument: 'x'

问了作者,答复是有输出就不用管。

另有一些数据类型上的问题

1
RuntimeError: expected scalar type Float but found BFloat16(Half)

按照 paper 改成 torch.bfloat16float16 都会有此问题. 推测是 torch 1.13 的锅。暂时按 float32 运行,不出意外地 OOM 了。用 float32, 降至 batch_size = 8 仍无法运行,暂时搁置。