生产级Stable Diffusion AI服务部署指南【BentoML】

这篇具有很好参考价值的文章主要介绍了生产级Stable Diffusion AI服务部署指南【BentoML】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在本文中,我们将完成 BentoML 和 Diffusers 库之间的集成过程。 通过使用 Stable Diffusion 2.0 作为案例研究,你可以了解如何构建和部署生产就绪的 Stable Diffusion 服务。

生产级Stable Diffusion AI服务部署指南【BentoML】,人工智能,stable diffusion

推荐:用 NSDT编辑器 快速搭建可编程3D场景

Stable Diffusion 2.0 包含多项新功能,例如更高分辨率(例如 768x768 输出)、称为depth2img 的深度引导稳定扩散模型、内置 4 倍放大模型等等。 更重要的是,你将亲身了解如何利用这两个库的强大功能在生产环境中构建和部署健壮、可扩展且高效的扩散模型。

以下教程的详细代码和说明可以在 BentoML 的 Diffusers 示例项目下找到。

1、为什么选择Diffusers库

HuggingFace 的 Diffusers 库是一个强大的工具,用于访问和利用 Python 中的相关扩散模型。 该库注重易用性,配备了多个扩散管道,只需几行代码即可执行,让用户快速高效地上手。 模型的不同实现和版本可以轻松交换,因为 Diffusers 库试图统一常见扩散模型的接口。 我们甚至可以使用具有类似工作流程的音频生成模型(使用Diffusers)。 最后,Diffusers 社区提供随时可用的自定义管道,这将扩展标准稳定扩散管道的功能。

2、为什么选择 BentoML

将 Diffusers 与 BentoML 集成,使其成为现实部署中更有价值的工具。 借助 BentoML,用户可以轻松打包和提供扩散模型以供生产使用,确保可靠且高效的部署。 BentoML 配备了开箱即用的运营管理工具,例如监控和跟踪,并提供轻松部署到任何云平台的自由。

3、准备依赖

我们建议在配备 Nvidia GPU 且安装了 CUDA Toolkit 的计算机上运行 Stable Diffusion 服务。 我们首先制作一个虚拟环境并安装必要的依赖项。

python3 -m venv venv
source venv/bin/activate
pip install bentoml diffusers transformers accelerate

要访问某些模型,你可能需要使用 Hugging Face 帐户登录。 可以登录你的帐户并获取用户访问令牌。 然后安装huggingface-hub并运行登录命令。

pip install -U huggingface_hub
huggingface-cli login

4、导入扩散模型

使用模型标识符将扩散模型导入 BentoML 模型存储非常简单。

import bentoml

bentoml.diffusers.import_model(
    "sd2",
    "stabilityai/stable-diffusion-2",
)

上面的代码片段将从 HuggingFace Hub 下载 Stable Diffusion 2 模型(如果之前已经下载过该模型,则使用缓存的下载文件)并将其导入名为 sd2 的 BentoML 模型存储中。

如果磁盘上已经有经过微调的模型,你还可以提供路径而不是模型标识符。

import bentoml

bentoml.diffusers.import_model(
    "sd2",
    "./local_stable_diffusion_2/",
)

可以导入Diffusers支持的任何扩散模型。 例如,以下代码将导入 Linaqruf/anything-v3.0 而不是 stableai/stable-diffusion-2。

import bentoml

bentoml.diffusers.import_model(
    "anything-v3",
    "Linaqruf/anything-v3.0",
)

3、将扩散模型转变为 RESTful 服务

使用 Stable Diffusion 2.0 的 text2img 服务可以像下面这样实现,假设 sd2 是导入的 Stable Diffusion 2.0 模型的模型名称。

import torch
from diffusers import StableDiffusionPipeline

import bentoml
from bentoml.io import Image, JSON, Multipart

bento_model = bentoml.diffusers.get("sd2:latest")
stable_diffusion_runner = bento_model.to_runner()

svc = bentoml.Service("stable_diffusion_v2", runners=[stable_diffusion_runner])

@svc.api(input=JSON(), output=Image())
def txt2img(input_data):
    images, _ = stable_diffusion_runner.run(**input_data)
    return images[0]

将代码保存为 service.py,然后我们就可以启动 BentoML 服务端点。

bentoml serve service:svc --production
具有接受 JSON 字典的 /txt2img 端点的 HTTP 服务器应位于端口 3000。在 Web 浏览器中转至 http://127.0.0.1:3000 以访问 Swagger UI:

生产级Stable Diffusion AI服务部署指南【BentoML】,人工智能,stable diffusion

或者,你可以使用curl 测试文本到图像的生成,并将返回的图像写入output.jpg:

curl -X POST http://127.0.0.1:3000/txt2img -H 'Content-Type: application/json' -d "{\"prompt\":\"a black cat\"}" --output output.jpg

你可以在 JSON 字典内添加更多文本参数来生成图像。 以下输入将生成 768x768 的图像:

curl -X POST http://127.0.0.1:3000/txt2img \
     -H 'Content-Type: application/json' \
     -d "{\"prompt\":\"a black cat\", \"height\":768, \"width\":768}" \
     --output output.jpg

如果先前已导入模型,则使用另一个扩散模型很简单,只需更改模型名称即可。 例如,可以通过将模型名称更改为 everything-v3 来创建 Anything v3.0 服务,而不是 sd2。

bento_model = bentoml.diffusers.get("anything-v3:latest")
anything_v3_runner = bento_model.to_runner()

svc = bentoml.Service("anything_v3", runners=[anything_v3_runner])

@svc.api(input=JSON(), output=Image())
def txt2img(input_data):
    images, _ = anything_v3_runner.run(**input_data)
    return images[0]

你可以尝试Bentoml用于稳定扩散 2.0 服务的相同的curl命令,生成的结果将具有非常不同的风格。

Bentoml.diffusers 还支持扩散器的自定义管道。 如果你想要一种可以使用一个管道同时处理 txt2img 和 img2img 的服务(这可以节省 GPU 的 VRAM),那么这尤其方便。 官方 Diffusers 管道不支持此功能,但社区提供了一个名为“Stable Diffusion Mega”的即用管道,其中包含此功能。 要使用此管道,我们需要稍微不同地导入扩散模型。

import bentoml

bentoml.diffusers.import_model(
    "sd2",
    "stabilityai/stable-diffusion-2",
    signatures={
        "__call__": {
            "batchable": False
        },
        "text2img": {
            "batchable": False
        },
        "img2img": {
            "batchable": False
        },
        "inpaint": {
            "batchable": False
        },
    }
)

这段代码将告诉 BentoML 除了 __call__ 之外,扩散模型还有其他方法(例如 text2img)。 重新导入模型后,我们可以拥有一个可以运行文本到图像生成和图像到图像生成的服务。

import torch
from diffusers import DiffusionPipeline

import bentoml
from bentoml.io import Image, JSON, Multipart

bento_model = bentoml.diffusers.get("sd2:latest")
stable_diffusion_runner = bento_model.with_options(
    pipeline_class=DiffusionPipeline,
    custom_pipeline="stable_diffusion_mega",
).to_runner()

svc = bentoml.Service("stable_diffusion_v2", runners=[stable_diffusion_runner])

@svc.api(input=JSON(), output=Image())
def txt2img(input_data):
    images, _ = stable_diffusion_runner.text2img.run(**input_data)
    return images[0]

img2img_input_spec = Multipart(img=Image(), data=JSON())
@svc.api(input=img2img_input_spec, output=Image())
def img2img(img, data):
    data["image"] = img
    images, _ = stable_diffusion_runner.img2img.run(**data)

4、通过 Xformers 加速生成

xformers 是一个基于 PyTorch 的库,它托管灵活且优化良好的 Transformers 构建块。 通过 Diffusers,bentoml.diffusers 与 xformers 集成,以在可能的情况下加速扩散模型。 Bentoml.diffusers 服务将在启动时检测是否安装了 xformers,并使用它来自动加速生成过程。

pip install xformers triton

重新运行前面步骤中的 Bentomlserve service:svc --Production,单个图像的生成时间应该比以前更快。 在我们的测试中,只需安装 xformers 即可将在单个 RTX 3060 上运行的生成效率从 7.6 it/s 加速到 9.0 it/s。该优化在 A100 等更强大的 GPU 上效果会更好。

5、结束语

Diffusers 库及其与 BentoML 的集成相结合,为在生产中部署扩散模型提供了强大且实用的解决方案,无论你是经验丰富还是刚刚起步。


原文链接:BentoML部署稳定扩散 — BimAnt文章来源地址https://www.toymoban.com/news/detail-725244.html

到了这里,关于生产级Stable Diffusion AI服务部署指南【BentoML】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 只需3步,使用Stable Diffusion无限生产AI数字人视频

    先看效果,感兴趣的可以继续读下去。 没有找到可以上传视频的地方,大家打开这个网盘链接观看:https://www.aliyundrive.com/s/CRBm5NL3xAE   搞一张照片,搞一段语音,合成照片和语音,同时让照片中的人物动起来,特别是头、眼睛和嘴。 语音合成的方法很多,也比较成熟了,大

    2024年02月16日
    浏览(67)
  • 人工智能AI系列 - java 版的stable diffusion 图像生成

    图像生成 文生图:输入提示词(仅支持英文),生成图片(仅支持英文) GPU版本 StableDiffusionGPU.java CPU版本 StableDiffusionCPU.java 图生图:根据图片及提示词(仅支持英文)生成图片 GPU版本 Img2ImgStableDiffusionGPU.java 显卡CUDA:11.7版本 参考测试数据:分辨率 512*512 25步 CPU(i5处理器

    2024年02月09日
    浏览(74)
  • Stable Diffusion AI 绘画入门指南

    市面上用的最多的AI绘画工具是 Stable-Diffusion(SD) 和 Midjourney(Mid) , SD 是在本地运行的服务,开源,门槛高,但 自控性极高 。而 Mid 作为在线的服务,门槛低,效果好,但 可控性不够强 。 Stable Diffusion(简称SD)是当今最流行的免费、开源的AI绘图模型, 可以在电脑本地

    2024年02月13日
    浏览(78)
  • Stable Diffusion 本地部署教程不完全指南

    http://chat.xutongbao.top 参考链接: ERROR: Could not find a version that satisfies the requirement torch==1.7.0 ERROR: No matching……_congcongiii的博客-CSDN博客   下载链接: 设置Python装包镜像源: https://zhuanlan.zhihu.com/p/573955401 参考链接: https://blog.csdn.net/jinnaluo0/article/details/129907577 参考链接: https:

    2024年02月03日
    浏览(65)
  • AI绘图实战(十二):让AI设计LOGO/图标/标识 | Stable Diffusion成为设计师生产力工具

    S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习 : 安装及其问题解决参考:《Windows安装Stable Diffusion WebUI及问题解决记录》; 运行使用时问题《Windows使用Stable Diffusion时遇到的各种问题整理

    2024年02月14日
    浏览(77)
  • Stable Diffusion(1.8.0)本地部署实战指南

    目录 检查电脑环境 下载开源项目 配置运行环境 问题处理 基础模型下载 启动CMD命令窗。 如上图,在CMD窗口输入python命令,可查看本地安装的python版本信息等。输入exit()退出python命令行 执行where命令,可查看python安装目录。 必须安装Python3.10.6,因为stable-diffusion-webui的一些依

    2024年04月16日
    浏览(56)
  • 如何本地部署Stable Diffusion:详细步骤与指南

    Stable Diffusion作为一种前沿的深度学习图像生成技术,在艺术创作、设计、科学可视化等领域展现出巨大的潜力。若您希望在自己的本地环境中部署Stable Diffusion,以下是一份详细的步骤与指南,帮助您成功搭建并运行该模型。 一、准备环境 在开始部署之前,您需要确保本地环

    2024年03月14日
    浏览(83)
  • AI创作教程之 Stable Diffusion 为何是人工智能新时代艺术创作的基石

    我们的人脑在当今人类产生的技术进步中发挥着最大的作用。在这种智能的基础上,人类创造了各种各样的产品,但不必说每一个都改变了人类生活的本质。随着模型权重的公开发布以保持稳定性,世界将发生巨大变化。AI稳定扩散文本到图像引擎。有了这个,任何人都可以

    2024年02月15日
    浏览(46)
  • AI绘图实战(九):给热门歌曲做配图 | Stable Diffusion成为设计师生产力工具

    S:AI能取代设计师么? I :至少在设计行业,目前AI扮演的主要角色还是超级工具,要顶替?除非甲方对设计效果无所畏惧~~ 预先学习 : 安装及其问题解决参考:《Windows安装Stable Diffusion WebUI及问题解决记录》; 运行使用时问题《Windows使用Stable Diffusion时遇到的各种问题整理

    2024年02月09日
    浏览(57)
  • AI绘画工具Stable Diffusion网页版操作指南

    Stable Diffusion 是一个可以将文字生成图像的AI大模型。它可以通过简单地输入任何文本来生成高质量、逼真的图像。 这个模型的最新版本是 Stable Diffusion XL,它有一个更大的 UNet 骨干网络,可以生成更高质量的图像。 目前 Stable Diffusion主要有两种方式来创建 AI 图像: 1、通过在

    2024年04月25日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包