开发者
资源
[object Object][object Object]

MindIE SD旨在构建昇腾亲和的多模态加速系列套件,配合业内模型套件(如:diffusers),实现多模态推理在昇腾上的效率。主要专注于提供多模态生成的关键算子和融合算子,配合昇腾亲和的量化/稀疏算法,以存代算,多卡并行等策略,实现对diffusers模型的快速迁移和昇腾加速,未来会进一步扩展到多模态理解,全模态等场景的加速。

设计上,各模块间独立解耦设计,可单独使用也可以叠加使用。业内本身存在类似Cache-DiT, xDiT等加速手段, 其效果与cache模块和parallelism模块功能相似,存在方案选择的问题,但是MindIE SD中其他组件依旧可以单独与之叠加使用。

主要特性:

  • 昇腾亲和加速算子:提供昇腾亲和多模态的FA、MM、MoE、quant类算子,以及融合算子,支持通过layer模块对外使用。详情请参见
  • 量化稀疏能力:针对昇腾的数据类型和算力分布,提供亲和的算法组合,并通过quantization模块导入使用。详情请参见
  • 以存代算:提供DiT module、DiT block、attn等多种粒度的cache算法,以支持不同的视图场景加速。详情请参见
  • 多卡并行:提供CFG、USP等并行能力以及MoE场景的动态专家负载均衡(EPLB),融入加速算子的API中,实现接口替换后的自动使能。详情请参见
  • 自动亲和加速:基于torch.compile的inductor机制,自定义融合pass,实现昇腾亲和算子替换。
[object Object]
[object Object]

如下图所示,MindIE SD基于pytorch框架对外提供昇腾的加速能力,各加速能力支持独立使用,主要包含cache,parallelism,quantization,layer,kernel等模块。

MindIE SD的相关接口遵从diffusers的接口定义,部分基于MindIE SD实现昇腾加速的diffusers模型在/中发布,也支持直接基于diffusers进行简单插件化改造。

基础特性:

  • layer模块:提供基础对外的加速接口(包含attn,moe, quant等特性的layer),是高阶特性的基础,本身可以单独使用。
  • kernel模块:提供多模态生成相关的昇腾高性能kernel,支持AscendC和triton等编程语言的算子接入。
  • compilation模块:基于fx graph的能力,开启compile后使能融合pass,实现昇腾自动亲和加速。详情请参见

高级特性:

  • quantization模块:支持量化能力的自动使能。
  • cache模块:提供以存代算的加速能力的实现。
  • parallelism模块:提供多卡并行的分布式加速能力,需要与layer模块和pytorch协同实现。