Stable Diffusion 多用户版
支持自动扩展、webui扩展API的stable diffusion多用户服务器API部署...
目录:
[选项1] 使用Django API部署
特性:
- 提供stable-diffusion http API的服务器代码,包括:
- CHANGELOG-230904: 支持torch2.0,调用txt2img和img2img时支持扩展API,支持所有与webui相同的API参数
- txt2img
- img2img
- 检查生成进度
- 中断生成
- 列出可用模型
- 更换模型
- ...
- 支持civitai模型和lora等
- 支持多用户排队
- 支持多用户单独更换模型,互不影响
- 提供下游负载均衡服务器代码,自动在可用GPU服务器间进行负载均衡,并确保在一个生成周期内用户请求发送到同一服务器
- 可用于在一张GPU卡上部署多个stable-diffusion模型以充分利用GPU,详情请查看这篇文章
基于这些功能,您可以构建自己的UI、社区功能、账户登录和支付等!
项目目录结构
该项目大致可分为两部分:django服务器代码,以及用于初始化和运行模型的stable-diffusion-webui代码。我将主要解释django服务器部分。
在主项目目录中:
modules/
: stable-diffusion-webui模块models/
: stable diffusion模型sd_multi/
: django项目名称urls.py
: 服务器API路径配置
simple/
: 主要django代码views.py
: 主要API处理逻辑lb_views.py
: 负载均衡API
requirements.txt
: stable diffusion pip依赖setup.sh
: 使用选项运行以设置服务器环境gen_http_conf.py
: 在setup.sh
中调用以设置apache配置
部署GPU服务器
- SSH连接到GPU服务器
- 克隆或下载仓库
- 进入主项目目录(包含
manage.py
的目录) - 使用选项运行
sudo bash setup.sh
(查看setup.sh
了解选项)(建议顺序:按文件顺序:env
,venv
,sd_model
,apache
)- 如果某些下载速度较慢,您可以手动下载并上传到服务器
- 如果要更改监听端口:同时修改
/etc/apache2/ports.conf
和/etc/apache2/sites-available/sd_multi.conf
- 重启apache:
sudo service apache2 restart
API定义
/
:查看主页,用于测试Apache是否配置成功/txt2img_v2/
:与sd-webui参数相同的文生图功能,同时支持扩展参数(如controlnet)/img2img_v2/
:与sd-webui参数相同的图生图功能,同时支持扩展参数(如controlnet)- 先前的API版本:查看
old_django_api.md
部署负载均衡服务器
- SSH连接到CPU服务器
- 克隆或下载仓库
- 进入主项目目录(包含
manage.py
的目录) - 运行
sudo bash setup.sh lb
- 执行
mv sd_multi/urls.py sd_multi/urls1.py && mv sd_multi/urls_lb.py sd_multi/urls.py
- 在
simple/lb_views.py
中修改ip_list
变量,填入您自己的服务器IP和端口 - 重启Apache:
sudo service apache2 restart
- 测试时,访问
ip+端口/multi_demo/
路径
本地测试负载均衡服务器
如果您不想部署负载均衡服务器但仍想测试功能,可以在本地计算机上启动负载均衡服务器。
- 克隆或下载仓库
- 要求:python3、django、django-cors-headers、replicate
- 在
simple/lb_views.py
中修改ip_list
变量,填入您自己的GPU服务器IP和端口 - 进入主项目目录(包含
manage.py
的目录) - 运行
mv sd_multi/urls.py sd_multi/urls1.py
&&mv sd_multi/urls_lb.py sd_multi/urls.py
(重命名) - 运行
python manage.py runserver
- 点击终端中显示的URL,访问
/multi_demo/
路径
最后,您可以调用HTTP API(使用Postman进行测试)。
[选项二] 使用Runpod Serverless部署
特点:
- 高度自定义的扩展策略实现自动扩展
- 支持sd-webui检查点、Lora等
- Docker镜像与模型文件分离,随时上传和替换模型
部署指南和即用型Docker镜像请参见sd-docker-slim。
[选项三] 在Replicate上部署
Replicate演示已部署在此
特点:
- 自动扩展
- 最新的sd-webui源代码,最新的torch和cuda版本
- 使用torch 2.2的Docker镜像
- 支持带扩展的sd-webui API
- 支持sd-webui检查点、Lora等
部署步骤:
- 在replicate上创建模型
- 获取一台具有50GB磁盘空间的Linux GPU机器
- 克隆仓库:
git clone https://github.com/wolverinn/stable-diffusion-multi-user.git
cd stable-diffusion-multi-user/replicate-cog-slim/
- 修改
replicate-cog-slim/cog.yaml
第30行为您自己的replicate模型 - [可选] 修改
replicate-cog-slim/predicy.py
的predict()
函数以自定义API输入和输出 - 安装cog:https://replicate.com/docs/guides/push-a-model
- 安装docker:https://docs.docker.com/engine/install/ubuntu/#set-up-the-repository
- 将要部署的检查点/Lora/扩展/其他模型下载到
replicate-cog-slim/
下的相应目录 - 运行以下命令:
cog login
cog push
然后您可以在replicate上看到您的模型,并可以通过API或replicate网站使用它。