最新案例动态,请查阅【案例共创】昇腾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 案例流程
说明:
-
用户进入开发者空间配置Notebook环境;
-
启动Notebook,编写代码,进行文生图推理体验;
1.5 资源总览
本案例预计花费0元。
NPU basic · 1 * NPU 910B · 8v CPU · 24GB
euler2.9-py310-torch2.1.0-cann8.0-openmind0.9.1-notebook
0 302 环境配置
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文生图模型的案例内容已全部完成。

500

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



