案例内容
本案例由开发者:于东提供
一、概述
1. 案例介绍
SDXL (Stable Diffusion XL) 是Stable Diffusion系列中最先进的文生图(text-to-image)模型,其主要特点是:模型规模更大、图像质量更高、文本理解能力更强。
2. 适用对象
- 个人开发者
- 高校学生
3. 案例时间
本案例总时长预计30分钟。
4. 案例流程

说明:
- 用户进入开发者空间配置Notebook环境;
- 启动Notebook,编写代码,进行文生图推理体验;
5. 资源总览
本案例预计花费0元。
| 资源名称 | 规格 | 单价(元) | 时长(分钟) |
|---|---|---|---|
| 开发者空间-Notebook | NPU basic · 1 * NPU 910B · 8v CPU · 24GB euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook | 0 | 30 |
二、环境配置
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:

三、使用Diffusers运行SDXL模型
1. 运行环境更新
进入Notebook后,点击终端:

打开终端窗口:

根据当前环境的pytorch版本更新Diffusers等框架的版本。
在终端输入以下命令行:
pip install --upgrade diffusers[torch]
pip install --upgrade transformers[torch]

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


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. 验证文生图推理
生成一张中国古风美女的图片:
提示词:唐朝优雅女子,穿着丝绸汉服,凤凰发簪,瓷白肌肤。桃花背景,月光照耀,水墨风格,飘逸优雅。
# 更换提示词重新生成,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文生图模型的案例内容已全部完成。
6万+

被折叠的 条评论
为什么被折叠?



