写点什么

【案例共创】昇腾 NPU 部署 SDXL 文生图模型

  • 2025-12-22
    贵州
  • 本文字数:3037 字

    阅读完需:约 10 分钟

【案例共创】昇腾NPU部署SDXL文生图模型

最新案例动态,请查阅【案例共创】昇腾NPU部署SDXL文生图模型。小伙伴们快来领取华为开发者空间进行实操吧!

1 概述

1.1 案例介绍

SDXL (Stable Diffusion XL) 是 Stable Diffusion 系列中最先进的文生图(text-to-image)模型,其主要特点是:模型规模更大、图像质量更高、文本理解能力更强。


本案例通过实际操作,借助华为开发者空间提供的免费昇腾 NPU 资源 Notebook 进行代码开发,使用模型 stable-diffusion-xl-base-1_0,进行文生图推理体验。

1.2 适用对象

  • 个人开发者

  • 高校学生

1.3 案例时间

本案例总时长预计 30 分钟。

1.4 案例流程


说明:


  1. 用户进入开发者空间配置 Notebook 环境;

  2. 启动 Notebook,编写代码,进行文生图推理体验;

1.5 资源总览

本案例预计花费 0 元。


2 环境配置

2.1 开发者空间配置

面向广大开发者群体,华为开发者空间提供免费昇腾NPU资源的Notebook,方便开发者学习昇腾相关的专业知识以及配套实验。


开发者可以直接进入华为开发者空间工作台界面,找到右侧 AI Notebook,点击立即前往> 立即启动>查看 Notebook,进去到 Notebook 界面。



预制镜像:euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook;


关联模型:stable-diffusion-xl-base-1_0;



立即启动:



启动中,请耐心等待:



查看 Notebook:


3 使用 Diffusers 运行 SDXL 模型

3.1 运行环境更新

进入 Notebook 后,点击终端:



打开终端窗口:



根据当前环境的 pytorch 版本更新 Diffusers 等框架的版本。


在终端输入以下命令行:


pip install --upgrade diffusers[torch]
pip install --upgrade transformers[torch]
复制代码



当安装完成后,如下图通过 pip list 查看所有安装的三方库:



3.2 文生图推理

回到 Notebook 首页,点击笔记本下方的 Python3:



将以下代码复制到单元格中:


import torch
from diffusers import DiffusionPipeline
# 推理配置
# 模型地址如果是单独下载的请在模型目录执行pwd命令查看具体的路径
# 预置路径:model/stable-diffusion-xl-base-1_0
model_path = "model/stable-diffusion-xl-base-1_0"
device="npu"
# 此处的文生图提示词是我让deepseek帮我写的:我正在使用sdxl-base-1.0模型进行文生图创作,需要生成一张三体太空电梯的图片,请帮忙写提示词,提示词要小于70个tokens
prompt = "Space elevator from Earth's equator to space, anchored by ocean base. Translucent nanotube cable extending to orbital station. Glowing climbers ascending, starry cosmos background. Three-Body sci-fi aesthetic, volumetric lighting --ar 4:3"
# 加载模型
pipe = DiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
pipe.to(device)
# if using torch < 2.0
# pipe.enable_xformers_memory_efficient_attention()
# 推理
image = pipe(prompt=prompt).images[0]
# 保存图片
image.save("output1.png")
# 显示图片
import matplotlib.pyplot as plt
plt.axis("off")
plt.imshow(image)
复制代码


注意:本案例使用的昇腾专区的 Notebook 已经预置了 sdxl-base 模型,预置路径:model/stable-diffusion-xl-base-1_0



使用 stable-diffusion-xl-base-1_0 模型推理,文本生成图片,生成一张三体太空电梯的图片。


点击左上角运行按钮,运行单元格中的代码:



运行成功后,生成太空电梯图片:



output1.png



成功生成一张三体太空电梯的图片!

3.3 验证文生图推理

生成一张中国古风美女的图片:


提示词:唐朝优雅女子,穿着丝绸汉服,凤凰发簪,瓷白肌肤。桃花背景,月光照耀,水墨风格,飘逸优雅。


# 更换提示词重新生成,deepseek 联网+深度思考:我正在使用 sdxl-base-1.0 模型进行文生图创作,需要生成一张中国古风美女的图片,请帮忙写提示词,提示词要小于 70 个 tokens


prompt="Elegant Tang dynasty lady in silk hanfu, phoenix hairpin, porcelain skin. Peach blossoms background, moonlight glow, ink-wash style, ethereal grace --ar 4:3"


将以下完整代码复制到单元格中:


import torch
from diffusers import DiffusionPipeline
# 推理配置
# 模型地址如果是单独下载的请在模型目录执行pwd命令查看具体的路径
# 预置路径:model/stable-diffusion-xl-base-1_0
model_path = "model/stable-diffusion-xl-base-1_0"
device="npu"
# 更换提示词重新生成,deepseek联网+深度思考:我正在使用sdxl-base-1.0模型进行文生图创作,需要生成一张中国古风美女的图片,请帮忙写提示词,提示词要小于70个tokens
prompt="Elegant Tang dynasty lady in silk hanfu, phoenix hairpin, porcelain skin. Peach blossoms background, moonlight glow, ink-wash style, ethereal grace --ar 4:3"
# 加载模型
pipe = DiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
pipe.to(device)
# if using torch < 2.0
# pipe.enable_xformers_memory_efficient_attention()
# 推理
image = pipe(prompt=prompt).images[0]
# 保存图片
image.save("output2.png")
# 显示图片
import matplotlib.pyplot as plt
plt.axis("off")
plt.imshow(image)
复制代码


点击左上角运行按钮,运行单元格中的代码:



运行成功后,生成中国古风美女图片:



output2.png



生成一张蒙古草原景色的图片:


提示词: 宁静的蒙古草原景观,清澈的蓝天下的广阔绿色平原,散落的野花,远处的传统蒙古包,放牧的马匹,柔和的阳光,宁静的气氛,高度详细,4K 摄影,现实主义风格。


# 更换提示词重新生成,deepseek 联网+深度思考:我正在使用 sdxl-base-1.0 模型进行文生图创作,需要生成一张蒙古草原景色图片,请帮忙写提示词,提示词要小于 70 个 tokens


prompt="Serene Mongolian grassland landscape, vast green plains under clear blue sky, scattered wildflowers, traditional yurts in distance, grazing horses, soft sunlight, peaceful atmosphere, highly detailed, 4K photography, realistic style --ar 4:3"


将以下完整代码复制到单元格中:


import torch
from diffusers import DiffusionPipeline
# 推理配置
# 模型地址如果是单独下载的请在模型目录执行pwd命令查看具体的路径
# 预置路径:model/stable-diffusion-xl-base-1_0
model_path = "model/stable-diffusion-xl-base-1_0"
device="npu"
# 更换提示词重新生成,deepseek联网+深度思考:我正在使用sdxl-base-1.0模型进行文生图创作,需要生成一张蒙古草原景色图片,请帮忙写提示词,提示词要小于70个tokens
prompt="Serene Mongolian grassland landscape, vast green plains under clear blue sky, scattered wildflowers, traditional yurts in distance, grazing horses, soft sunlight, peaceful atmosphere, highly detailed, 4K photography, realistic style --ar 4:3"
# 加载模型
pipe = DiffusionPipeline.from_pretrained(model_path, torch_dtype=torch.float16, use_safetensors=True, variant="fp16")
pipe.to(device)
# if using torch < 2.0
# pipe.enable_xformers_memory_efficient_attention()
# 推理
image = pipe(prompt=prompt).images[0]
# 保存图片
image.save("output3.png")
# 显示图片
import matplotlib.pyplot as plt
plt.axis("off")
plt.imshow(image)
复制代码


点击左上角运行按钮,运行单元格中的代码:



运行成功后,生成蒙古草原图片:



output3.png



至此,昇腾 NPU 部署 SDXL 文生图模型的案例内容已全部完成。


用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
【案例共创】昇腾NPU部署SDXL文生图模型_#大模型_华为云开发者联盟_InfoQ写作社区