当前位置:   article > 正文

开发者实战 | 几行代码加速 Stable Diffusion,使用 OpenVINO™ 轻松文生图

stable diffusion openvino

文章作者:武卓博士 英特尔 AI 布道师

随着 AIGC 模型越来越强大,并取得了更惊人的结果,任意运行 AIGC 模型, 比如 Stable Diffusion,对于开发人员来说仍然面临一些挑战。首先,GPU 的安装设置需要我们处理复杂的配置和兼容性问题,这可能既耗时又令人沮丧。此外,如果运行 Stable Diffusion 代码前需要经过复杂的软件安装和环境配置步骤,这也会带来额外的困难。因为开发者们经常被干净直观的 API 所吸引,这使我们能够轻松地与模型交互并简化我们的工作流程。最后,在没有复杂代码编写以及编译的情况下,如何快速完成硬件加速仍然是一个开发者们优先关心的事项,因为开发者们总是寻求高效而直接的解决方案来充分利用 AIGC 算法的潜力。

fa586e2a14aa199533f0fe2f6f4f3a03.png

图1. 我们需要更改的代码行数以获得英特尔的硬件加速

在这篇文章中,我们将探索使用 Optimum Intel (OpenVINO)在 Stable Diffusion V2.1上实现 AI 硬件加速的最快方法(使用最少的代码行和依赖项安装)。我们还将指导您完成在本地机器上运行 Stable Diffusion 的安装和使用过程,并通过 OpenVINO 2023.0版本进行优化和加速。只需几行 Python 代码,您就可以在几秒钟内生成带有文本的图像。此外,OpenVINO 简化了在不同硬件平台(包括英特尔® Desktop CPU、iGPU、dGPU 和 Xeon CPU)上加速工作的过程,使您的工作在部署时更加灵活。有关该方法的更多详细信息,请在下方链接查看我们在 GitHub 上的 OpenVINO Notebook 代码示例(请复制到浏览器浏览)https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/236-stable-diffusion-v2/236-stable-diffusion-v2-optimum-demo.ipynb

01

安装

使用如下一行代码安装

pip install -q "optimum-intel[openvino,diffusers]"@git+https://github.com/huggingface/optimum-intel.git

向右滑动查看完整代码

02

下载预转换过的 

Stable Diffusion 2.1 IR 模型

Stable Diffusion 将6个元素结合在一起,一个带有标记器的文本编码器模型,一个带调度器的 UNet 模型,以及一个带有解码器和编码器模型的自动编码器。

f51d53da4fd8c5400e1d6f387686a262.png

这里使用的基础模型是 "stabilityai/stable-diffusion-2-1-base"。该模型被转换为 OpenVINO 格式,用于使用Optimum Intel [OpenVINO] 在 CPU 或英特尔® GPU 上加速推理。模型权重以 FP16 精度存储,这将模型的大小减少了一半。你可以发现这个 Notebook 中使用的模型名称是"helenai/stabilityai-stable-diffusion-2-1-base-ov"。让我们下载带有以下代码的预转换模型 Srable Diffusion 2.1 Intermediate Representation Format (IR)。  

模型地址(请复制到浏览器浏览)

https://huggingface.co/stabilityai/stable-diffusion-2-1

https://huggingface.co/helenai/stabilityai-stable-diffusion-2-1-base-ov

https://docs.openvino.ai/2022.3/openvino_docs_MO_DG_IR_and_opsets.html

  1. from optimum.intel.openvino import OVStableDiffusionPipeline
  2. # download the pre-converted SD v2.1 model from Helena's HF repo
  3. name = "helenai/stabilityai-stable-diffusion-2-1-base-ov"
  4. pipe = OVStableDiffusionPipeline.from_pretrained(name, compile=False)
  5. pipe.reshape(batch_size=1, height=512, width=512, num_images_per_prompt=1)

向右滑动查看完整代码

03

保存预先训练好的模型,

选择推理设备并编译

我们已经下载了预先训练和转换的 IR 格式  Stable Diffusion 模型。让我们保存模型,并使用以下代码编译它进行 AI 推理

  1. pipe.save_pretrained("./openvino_ir")
  2. pipe.to("GPU.1")
  3. pipe.compile()

向右滑动查看完整代码

04

发挥你的创意,输入文本,

享受生成的美图吧

现在是时候发挥创意了!输入创意提示,并使用以下内容欣赏生成的图像。

  1. # Generate an image.
  2. prompt = "red car in snowy forest, epic vista, beautiful landscape, 4k, 8k"
  3. output = pipe(prompt, num_inference_steps=17, output_type="pil").images[0]
  4. output.save("image.png")
  5. output

向右滑动查看完整代码

以下动图展示了图片生成的各步骤的效果。

更多的资源信息:

OpenVINO 2023.0 新版本介绍

OpenVINO Notebooks (请复制到浏览器浏览)

https://github.com/openvinotoolkit/openvino_notebooks

在英特尔® DevCloud for the Edge 运行 (请复制到浏览器浏览)

https://genai.edge.devcloud.intel.com/hub/login?next=/lab/tree/Reference-samples/iot-devcloud/openvino_notebooks/notebooks/236-stable-diffusion-v2/236-stable-diffusion-v2-text-to-image.ipynb&RefURL=/content/www/us/en/developer/tools/devcloud/edge/overview.html&reset=true

b7cd74be3d413503667a318daf4324af.png

欢迎在这里反馈结果以及开启讨论:

https://github.com/openvinotoolkit/openvino/issues/new/choose

致谢

感谢提供宝贵的指导意见。

259310bb48147872b7fa6f3a12347127.gif

互动

有礼

Hi 各位英特尔物联网的新老粉丝

感谢关注与支持!

我们准备了互动活动 + 丰厚礼品

速速扫描下方二维码来参加吧!

--END--

  1. 你也许想了解(点击蓝字查看)⬇️➡️ OpenVINO™ DevCon 2023重磅回归!英特尔以创新产品激发开发者无限潜能➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型➡️ 开发者实战系列资源包来啦!➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
  2. ➡️ 还不知道如何用OpenVINO™作画?点击了解教程。➡️ 几行代码轻松实现对于PaddleOCR的实时推理,快来get!➡️ 使用OpenVINO 在“端—边—云”快速实现高性能人工智能推理➡️ 图片提取文字很神奇?试试三步实现OCR!➡️【Notebook系列第六期】基于Pytorch预训练模型,实现语义分割任务➡️使用OpenVINO™ 预处理API进一步提升YOLOv5推理性能
  1. 扫描下方二维码立即体验 
  2. OpenVINO™ 工具套件 2023.0

点击 阅读原文 立即体验OpenVINO 2023.0

c2f1617cdae2b0d0ce9b20318fdfec83.png

文章这么精彩,你有没有“在看

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/366055
推荐阅读
相关标签
  

闽ICP备14008679号