更新时间:2024-05-16 GMT+08:00
分享

场景介绍

阅读本文前建议您先了解以下内容:

在Stable Diffusion迁移适配时,更多的时候是在适配Diffusers和Stable Diffusion WebUI,使其能够在昇腾的设备上运行。其中,Diffusers遵循了Huggingface的“single-file policy”的设计原则,它的三个主要模块Pipeline、Schedulers和预训练模型中,Pipeline和Schedulers都完全遵循了“single-file policy”原则。该设计原则更推荐复制粘贴代码而不是做抽象,因此所有和这个模型前向运算相关的源代码都被复制粘贴进同一个文件中,而不是调用某些抽象提取出的模块化的库,Diffusers的这种设计原则的好处是代码简单易用、对代码贡献者友好,但也有明显的缺点,因为这种反软件结构化的设计,导致对于昇腾适配来说比较复杂,因为没有统一的模块化的库可以适配,只能针对每个不同业务的Pipeline进行单独适配。本文以Stable Diffusion v1.5的图生图为例,通过可以直接执行的样例代码介绍Diffusers的昇腾迁移过程,其他的pipeline迁移可以在基于对pipeline的代码充分理解的基础上,参考本文的思路进行举一反三。Stable Diffusion WebUI的迁移不包含在本文中,具体原因详见Stable Diffusion WebUI如何适配?

AI推理应用运行在昇腾设备上一般有两种方式:

  • 方式1:通过Ascend PyTorch,后端执行推理,又称在线推理。
  • 方式2:通过模型静态转换后,执行推理,又称离线推理。

通常为了获取更好的推理性能,推荐使用方式2的离线推理。下文将以Diffusers img2img onnx pipeline为示例来讲解如何进行离线推理模式下的昇腾迁移。迁移的整体流程如下图所示:

图1 迁移流程图
分享:

    相关文档

    相关产品