惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
Vercel News
Vercel News
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
Jina AI
Jina AI
B
Blog
Recorded Future
Recorded Future
MyScale Blog
MyScale Blog
I
InfoQ
aimingoo的专栏
aimingoo的专栏
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
爱范儿
爱范儿
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
博客园 - Franky
Schneier on Security
Schneier on Security
V
V2EX
TaoSecurity Blog
TaoSecurity Blog
H
Hacker News: Front Page
Cloudbric
Cloudbric
D
DataBreaches.Net
B
Blog RSS Feed
P
Palo Alto Networks Blog
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
I
Intezer
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyberwarzone
Cyberwarzone
F
Fortinet All Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
K
Kaspersky official blog
Forbes - Security
Forbes - Security

Miya's Blog

博客大修记录 (2026) 我在用什么? 记一次软件源归档导致的 CI 构建问题 Denoising Diffusion Null-Space Model 可逆神经网络 Invertible Diffusion Model 常见推理后端安装及配置 Jupyter Notebook 安装及配置 浅谈非易失内存 深度学习环境配置(一) 深度学习环境配置(二) Debian 配置 V2Ray-A Diffusion 入门 CV 基础(二) CV 基础(一) 内存体系结构 - 简述 Programming Persistent Memory 第三章笔记 地址映射与TLB CuBase 小记
论文复现 - MAGIS
Miya · 2025-04-21 · via Miya's Blog
PKU ASPLOS'24

MAGIS 主要涉及计算图优化和转换,并实现内存削峰。

Setup

主要软件包版本。基于以下环境运行了 Resnet50 进行验证。

  • CUDA 11.6
  • CuDNN 8.4.0
  • PyTorch 1.13.1
  • Python 3.10.5

实验说明

根据 Renze Chen 描述,实验主要是跑一遍 forward + backward,测时间和内存开销。Samples 输出的 results.csv 里有实验一节里的各种评估指标。

至于数据集,并不重要,毕竟是 sys 工作,主要侧重性能,数据随机生成即可。

负载

实现了 ResNet,ViT, Bert 等常见负载。另实现两个大模型负载以增强结论。

torch_cuda.py

接口模块,相当于把 nn/ 中定义的负载网络转为 pytorch 计算图,然后再接入 MAGIS 工作流。待研读代码。

运行实验

笔者的实验条件实在匮乏,将 nn.Bert() 默认参数做了修改,可惜仍然 OOM。最后进一步降 batch_size 为 16,算是跑起来了。MAGIS 尚有一些模块没有实现,可以理解,只是运行时会报一些参数上的错误

1
2
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)

按照原文改成 torch.bfloat16float16 都稳定复现此问题,推测是 torch 1.13 的锅。暂时按 float32 运行,不出意外地再次 OOM 了。用 float32, 降至 batch_size = 8 仍无法运行,暂时搁置。

Result

测试了 ResNet50、UNet、ViT、BERT 四个负载,结果如下。

name device memory limit latency limit memory limit latency limit ratio memory limit ratio weight memory opt-is-prof-result opt-latency opt-memory opt-simul-latency opt-simul-memory ori-is-prof-result ori-latency ori-memory ori-simul-latency ori-simul-memory
ResNet50 3157573632 None 307137126.4 None 0.8 25502912 TRUE 61.81041336 306195712 98.23434734 378773952 TRUE 61.37547684 383921408 64.40793696 455844288
UNet 3157573632 None 1234749030 None 0.8 31372994 TRUE 239.9398092 1237252096 219.9666572 1163835074 TRUE 236.343043 1543436288 202.1358391 1470019266
ViT 3157573632 None 872511897.6 None 0.8 85702656 TRUE 169.5556183 751625984 140.1534884 856602880 TRUE 149.9205729 1090639872 136.0365616 1243764736
BERT 3157573632 None 1442303181 None 0.8 84934656 TRUE 243.1806081 1220583424 226.0288952 1337982976 TRUE 243.7401377 1802878976 216.6313542 1953890304
Latency Peak Memory Usage

Baseline: 与 PyTorch 动态计算图 (Eager Mode) 对比。

实验结果分析如下。

  • Latency: 平均 Latency 降低 3.39%,在三个 Benchmarks 上取得了加速,在 BERT 上有 0.23% 的时延增加。
  • Peak Memory Usage: 平均降低 25.85% 的峰值内存,在 ViT 和 BERT 明显,分别优化 31.05% 和 32.28%。由实验结果知,MAGIS 的优化策略对 Transformer 十分有效。

以上结果基本说明 MAGIS 的有效性。

附 | 环境配置

点击直达

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Miya's Blog