SandAI-org/MagiCompiler
A plug-and-play compiler that delivers free-lunch optimizations for both inference and training.
解决的问题
MagiCompiler 解决了大规模 Transformer 类架构中的内存瓶颈和操作开销问题。它超越了简单的局部操作优化,提供数据流和内存的系统级编排,从而在训练和多模态推理过程中降低「内存墙」效应。
工作原理
基于 torch.compile 构建,MagiCompiler 作为执行生命周期的全局管理器。在推理中使用全图捕获以最大化内核融合,在训练中采用 FSDP 感知的逐层编译,实现跨操作融合的同时保持分布式参数分片的透明性。它还实现了选择性卸载策略,将 H2D 传输与计算重叠,并采用启发式激活重计算策略,根据操作是计算密集型还是内存密集型,自动决定哪些操作需要保存或重新计算。
适用人群
专为处理大规模 Transformer 模型的开发者和研究人员设计,尤其适用于实现多模态框架或在分布式环境中训练大型模型的用户。
主要亮点
- 统一框架:同时支持推理(全图捕获)和训练(FSDP 感知编译)。
- 即插即用:通过简单的装饰器(
@magi_compile和@magi_register_custom_op)即可在现有模型中集成,代码改动极小。 - 智能卸载:内置异步卸载功能,可消除内存受限环境下的流水线空洞。
- 自动重计算:以启发式激活重计算替代手动检查点,降低峰值内存占用。
- 可观察性工具:提供
magi_depyf工具,用于调试编译时间线和反编译字节码流。
相关
- 项目
- Dispatch
- 项目
- 项目
- 项目