Skip to main content

Nueva solución tipo Ollama pero para modelos de Text2Img

Project description

DiffusersServer

DiffusersServer Logo

🚀 Nueva solución tipo Ollama, pero diseñada específicamente para modelos de generación de imágenes (Text-to-Image).


🌟 ¿Qué es DiffusersServer?

DiffusersServer es un servidor de inferencia basado en Flask y Waitress que permite generar imágenes a partir de texto (Text-to-Image) utilizando modelos avanzados de difusión.

Compatible con Stable Diffusion 3, Stable Diffusion 3.5, Flux, y Stable Diffusion v1.5, proporciona una API REST eficiente para integrar generación de imágenes en tus aplicaciones.

⚡ Características principales

Soporte para múltiples modelos

  • Stable Diffusion 3 (Medium)
  • Stable Diffusion 3.5 (Large, Large-Turbo, Medium)
  • Flux (Flux 1 Schnell, Flux 1 Dev)
  • Stable Diffusion v1.5

Compatibilidad con GPU y MPS

  • Aceleración con CUDA (GPUs NVIDIA)
  • Compatibilidad con MPS (Macs con chips M1/M2)

Servidor eficiente y escalable

  • Implementación con Flask + Waitress
  • Soporte para múltiples hilos
  • Carga los modelos en memoria una sola vez

API REST fácil de usar

  • Endpoint para inferencia: POST /api/diffusers/inference
  • Parámetros personalizables: prompt, modelo, tamaño de imagen, cantidad de imágenes

Gestión optimizada de memoria

  • CPU offloading en modelos Flux para reducir uso de VRAM
  • Monitoreo opcional de consumo de memoria

🚀 DiffusersServer está diseñado para ofrecer una solución ligera, rápida y flexible para la generación de imágenes a partir de texto.

Si te gusta el proyecto, ¡considera darle una ⭐!

🚀Instalar DiffusersServer

git clone https://github.com/F4k3r22/DiffusersServer.git
cd DiffusersServer
pip install .

🚀Instalar DiffusersServer via Pypi

pip install DiffusersServer

🖥️Iniciar tu servidor

from DiffusersServer import DiffusersServerApp

app = DiffusersServerApp(
    model='black-forest-labs/FLUX.1-schnell',
    type_model='t2im',
    threads=3,
    enable_memory_monitor=True
)

Asi de facil es levantar tu servidor de inferencia local con DiffusersServer en menos de 20 lineas de código

⚡Peticiones a tu servidor

Generar una imagen

import requests
import json
import os
from datetime import datetime
import re
import urllib.parse
import platform

# URL del servidor
server_url = "http://localhost:8500/api/diffusers/inference"
base_url = "http://localhost:8500"  

# Datos para enviar
data = {
    "prompt": "The T-800 Terminator Robot Returning From The Future, Anime Style",
    "num_inference_steps" : 30,
    "num_images" : 1
}

# Toma en cuenta que hay un funcionamiento raro con el num_images si es mayor que 1, se va llenando la memoria
# En proporción de 4.833 GB por imagen (Con stabilityai/stable-diffusion-3.5-medium)
# Igual se limpia la memoria automaticamente despues de la inferencia para no saturar la memoria excesivamente

# Es decir SD3.5 memdium usa 19.137GB de VRAM cargado en memoria, y cuando se pide una imagen sube 23.970GB de VRAM
# Y cuando se termina de generar esta imagen el uso de memoria vuelve al 19.137GB de la carga inicial

# Realizar la solicitud POST
print(f"Enviando prompt: \"{data['prompt']}\"")
print("Generando imagen... (esto puede tomar un tiempo)")
response = requests.post(server_url, json=data)

# Verificar la respuesta
if response.status_code == 200:
    result = response.json()
    image_url = result['response']
    print("¡Solicitud exitosa!")
    print(f"URL de la imagen generada: {image_url}")

Stats del Servidor

Listar modelos disponibles

import requests

server_url = "http://localhost:8500/api/models"

def list_models():
    url = server_url
    reseponse = requests.get(url=url)
    reseponse.json()
    print(reseponse.json())

list_models_api = list_models()

Obtener el uso de Memoria del Servidor

import requests

memory = 'http://localhost:8500/api/status'

def get_memory_usage():
    url = memory
    response = requests.get(url=url)
    response.json()
    print(response.json())

memory_list = get_memory_usage()

🚀 Planes a Futuro

Estamos trabajando en la integración de una API para modelos Text-to-Video (T2V), comenzando con Wan 2.1. Esto permitirá generar videos a partir de texto, ampliando las capacidades de DiffusersServer más allá de la generación de imágenes.

Tambien estamos trabajando en una mejor integración en los modelos pre existente T2Img de Diffusers


Para modelos T2V

Primero instala diffusers desde la rama main del repositorio de diffusers

pip install git+https://github.com/huggingface/diffusers

Donaciones 💸

Si deseas apoyar este proyecto, puedes hacer una donación a través de PayPal:

Donate with PayPal

Tu donativo permite mantener y expandir nuestros proyectos de código abierto en beneficio de toda la comunidad.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diffusersserver-0.1.31.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

diffusersserver-0.1.31-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file diffusersserver-0.1.31.tar.gz.

File metadata

  • Download URL: diffusersserver-0.1.31.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.2

File hashes

Hashes for diffusersserver-0.1.31.tar.gz
Algorithm Hash digest
SHA256 c85fba90a6fe1d55daaf1de24734509131a9a37b125f5bb0bd4934f2668166be
MD5 6615cde1feefbb306e3a49ca5921e4c1
BLAKE2b-256 3f98ffaaf1d518f7e8977785557e5d44940c340f7c90448c7bf287701f0492e6

See more details on using hashes here.

File details

Details for the file diffusersserver-0.1.31-py3-none-any.whl.

File metadata

File hashes

Hashes for diffusersserver-0.1.31-py3-none-any.whl
Algorithm Hash digest
SHA256 742cdb870f57d3b58a83392f58a09fc2df949566378066fb727bcbd87c3d0522
MD5 a31393231f91df29cc0542d1bda88d52
BLAKE2b-256 5807ddb75d142a978bfbcb908c7a80a129f4903833d5ba14d8781b1e75024bf6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page