简介
MindIE SD(Mind Inference Engine Stable Diffusion,Diffusion系列大模型)旨在构建昇腾亲和的多模态加速系列套件,配合业内模型套件(如:diffusers),提升多模态推理在昇腾上的效率。主要专注于提供多模态生成的关键算子和融合算子,配合的昇腾亲和量化/稀疏算法,以存代算,多卡并行等策略,实现对diffusers模型的快速迁移和昇腾加速,未来会进一步扩展到多模态理解,全模态等场景的加速。
MindIE SD各模块间独立解耦设计,可单独使用也可以叠加使用。业内本身存在类似Cache-dit, xDiT等加速手段, 其效果与cache模块和parallelism模块功能相似,存在方案选择的问题。但是MindIE SD中其他组件依旧可以单独与之叠加使用,但各组件都使用了monkey patch。
MindIE SD基于PyTorch框架对外提供昇腾的加速能力,各加速能力支持独立使用,主要包含cache、parallelism、quantization、layer、kernel等模块,相关接口遵从diffusers的接口定义,部分基于MindIE SD实现昇腾加速的diffusers模型详情请参见在Modelers和ModelZoo。同时也支持基于diffusers进行简单插件化改造。其架构图如图1所示,模块介绍如表1所示。
功能模块 |
说明 |
|---|---|
基础模块 |
|
layer模块 |
提供基础对外的加速接口(包含attn,moe, quant等特性的layer),是高阶特性的基础,本身可以单独使用。 |
kernel模块 |
提供多模态生成相关的昇腾高性能kernel,支持AscendC和Triton等编程语言的算子接入。 |
compilation模块 |
基于fx graph的能力,开启compile后使能融合pass,实现昇腾自动亲和加速。 |
高级模块 |
|
quantization模块 |
支持量化能力的自动使能。 |
cache模块 |
提供以存代算的加速能力的实现。 |
parallelism模块 |
提供多卡并行的分布式加速能力,需要与layer模块和pytorch协同实现。 |
