使用Optimum-Intel OpenVINO™ 轻松文生图——几行代码加速Stable Diffusion

原创:武卓博士

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

- from diffusers import StableDiffusionPipeline + from optimum.intel.openvino import OVStableDiffusionpipeline Model_id ="stabilityai/stable-diffusion-2-1-base” - pipe = StableDiffusionPipeline . from_pretrained(model_id) + pipe = OVStableDiffusionPipeline.from_pretrained(model_id, export=True, compile=False) - pipe.save_pretrained("./stabilityai_cpu") + pipe.save_pretrained("./openvino_ir") pipe.compile() prompt = "red car in snowy forest” output_cpu = pipe(prompt, num_inference_steps=17).images[0]

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

在这篇文章中,我们将探索使用 Optimum Intel (OpenVINO) 在 Stable Diffusion V2.1 上实现 AI 硬件加速的最快方法(使用最少的代码行和依赖项安装)。我们还将指导您完成在本地机器上运行 Stable Diffusion 的安装和使用过程,并通过 OpenVINO 2023.0 版本进行优化和加速。只需几行 Python 代码,您就可以在几秒钟内生成带有文本的图像。此外,OpenVINO 简化了在不同硬件平台(包括 Intel Desktop CPU、iGPU、dGPU 和 Xeon CPU)上加速工作的过程,使您的工作在部署时更加灵活。有关该方法的更多详细信息,请点击此处查看我们在 GitHub 上的 OpenVINO Notebook 代码示例。

1. 安装

使用如下一行代码安装 Optimum-Intel[OpenVINO]:

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


2. 下载预转换过的 Stable Diffusion 2.1 IR 模型

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

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

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

 

3. 保存预先训练好的模型,选择推理设备并编译

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

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

 

4. 发挥你的创意,输入文本,享受生成的美图吧

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

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

更多的资源信息:

OpenVINO™ 2023.0  新版本介绍

OpenVINO™ Notebooks 

在英特尔 DevCloud for the Edge  运行  [MISSING LINK]