当前位置: 首页 > article >正文

使用fastapi部署stable diffusion模型

使用vscode运行stable diffusion模型,每次加载模型都需要10+分钟,为算法及prompt调试带来了极大麻烦。使用jupyter解决自然是一个比较好的方案,但如果jupyter由于种种原因不能使用时,fastapi无疑成为了一个很好的选择。
参考github链接:https://github.com/jarvislabsai/fastapi-sd-template

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from typing import List
from PIL import Image
import torch
from diffusers import StableDiffusionPipeline
from torch import autocast
from pydantic import BaseModel
from typing import List, Optional
from utils import save_image

device = torch.device("cuda:5")


model_id = "/your_file_path/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, revision="fp16")
pipe = pipe.to(device)

app = FastAPI(root_path="/your_file_path/fastapiImage")
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"]
)

class GenImage(BaseModel):
    prompt: str
    guidance_scale: Optional[float] = 7.5

@app.post("/genimage")
def gen_image(req:GenImage):
    with autocast("cuda"):
        img = pipe(req.prompt,guidance_scale=req.guidance_scale).images[0]
        img_url,fname = save_image(img)
    return{'url':img_url}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host = "0.0.0.0", port=9008)

搭配命令行命令

curl -X POST "http://localhost:9008/genimage" -H "Content-Type: application/json" -d '{"prompt": "a beautiful woman", "guidance_scale": 7.5}

utils.py脚本

import io
from datetime import datetime, timezone
import uuid
from PIL import Image

def save_image(img):
    # 获取当前时间戳
    dt = datetime.now()
    # 生成唯一的文件名
    file_name = str(uuid.uuid4()) + '-' + str(int(dt.replace(tzinfo=timezone.utc).timestamp()))
    # 定义本地保存路径,这里假设保存到当前目录下的 images 文件夹
    local_path = f'images/{file_name}.png'
    try:
        # 保存图像到本地路径
        img.save(local_path)
        return local_path, file_name
    except Exception as e:
        print(f"保存图像时出错: {e}")
        return None, None

相关库参考

fastapi==0.85.0
uvicorn==0.18.3
diffusers==0.6.0
gunicorn==20.1.0
boto3==1.24.90
transformers==4.23.1
ftfy==6.1.1

http://www.kler.cn/a/590814.html

相关文章:

  • 3D点云目标检测——KITTI数据集读取与处理
  • 完全托管的DeepSeek-R1模型正式登陆Amazon Bedrock:安全部署与使用指南
  • Java的继承:方法;属性?
  • 个人学习编程(3-18) leetcode刷题
  • 在云平台上用Claude 3.7 AI代理自动化电脑图形界面点击操作做表格
  • PostgreSQL17允许psql的\watch在返回最小行数后停止
  • 2025年3月19日 十二生肖 今日运势
  • 电子硬件入门(三)——偏置电路
  • 模型评估——acc、P、R、F值、交叉验证、K折交叉验证
  • PATB1113 钱串子的加法
  • C++ 友元 / friend关键字解读
  • MongoDB 只能存储能够序列化的数据(比如字符串、数字等),而 Python 的 UUID 对象并不是直接可以存入数据库的格式。
  • Centos7更换仓库源为阿里云镜像
  • Hyperlane:Rust 生态中的轻量级高性能 HTTP 服务器库,助力现代 Web 开发
  • 力扣题目汇总 使用贪心算法解决问题
  • 热更新解决方案5——toLua
  • TCP 客户端 - 服务器通信程序搭建
  • ora-600 ktugct: corruption detected---惜分飞
  • 晶艺代理,100V3.5A高耐压LA1823完全替换MP9487--启烨科技有限公司
  • 每天五分钟深度学习框架pytorch:基于pytorch搭建循环神经网络RNN