Bild#

Erfahren Sie, wie Sie mit Xinference Bilder generieren.

Introduktion#

Die Images API bietet zwei Methoden zur Interaktion mit Bildern:

  • Der Endpunkt zur Text-zu-Bild-Erstellung erzeugt Bilder von Grund auf basierend auf Text.

  • Der Endpunkt „Bild-zu-Bild“ ermöglicht es Ihnen, Variationen eines bestimmten Bildes zu generieren.

API-Endpunkt

OpenAI-kompatibler Endpunkt

Text-to-Image API

/v1/images/generations

Image-to-image API

/v1/images/variations

Unterstützte Modellliste#

In Xinference unterstützt die Text-to-Image-API die folgenden Modelle:

  • sd-turbo

  • sdxl-turbo

  • stable-diffusion-v1.5

  • stable-diffusion-xl-base-1.0

  • sd3-medium

  • sd3.5-medium

  • sd3.5-large

  • sd3.5-large-turbo

  • FLUX.1-schnell

  • FLUX.1-dev

  • Kolors

  • hunyuandit-v1.2

  • hunyuandit-v1.2-distilled

  • cogview4

  • Qwen-Image

Unterstützte Modellliste

  • Flux.1-Kontext-dev

  • Qwen-Image-Edit

Schnellstart#

Text-to-Image#

Du kannst die Text-to-Image API über cURL, den OpenAI Client oder Xinference ausprobieren.

curl -X 'POST' \
  'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/images/generations' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "<MODEL_UID>",
    "prompt": "an apple",
  }'

Bild-zu-Bild#

Der API für Bild-zu-Bild simuliert die OpenAI Image Variation Creation API. Wir können die Bild-zu-Bild API über cURL, den OpenAI Client oder den Python Client von Xinference ausprobieren:

curl -X 'POST' \
  'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/images/variations' \
  -F model=<MODEL_UID> \
  -F image=@xxx.jpg \
  -F prompt="an apple"

Speicheroptimierung für große Bildmodelle (z.B. SD3-Medium, FLUX.1)#

Bemerkung

Ab v0.16.1 aktiviert Xinference standardmäßig die Quantisierung für große Bildmodelle wie Flux.1 und die SD3.5-Serie. Wenn Sie eine neuere Version von Xinference als v0.16.1 verwenden, müssen Sie nichts tun, um diese großen Bildmodelle auf Maschinen mit kleinem GPU-Speicher auszuführen.

Nützliche zusätzliche Parameter, die beim Laden des Modells übergeben werden können, sind:

  • --cpu_offload True: Wenn True angegeben wird, werden während der Inferenz Komponenten des Modells auf die CPU ausgelagert, um Speicher zu sparen, was zu einer leichten Erhöhung der Inferenzlatenz führt. Das Auslagern des Modells verschiebt Modellkomponenten nur dann auf die GPU, wenn sie ausgeführt werden müssen, während die übrigen Komponenten auf der CPU verbleiben.

  • --quantize_text_encoder <Textencoder-Ebene>: Wir verwenden die bitsandbytes-Bibliothek, um den T5-XXL-Textencoder zu laden und auf 8-Bit-Präzision zu quantisieren. Dadurch können Sie den gesamten Textencoder weiterhin nutzen, während die Leistung nur minimal beeinträchtigt wird.

  • --text_encoder_3 None, für sd3-medium kann das Entfernen des speicherintensiven T5-XXL-Textencoders mit 4,7 Milliarden Parametern während der Inferenz den Speicherbedarf erheblich reduzieren, bei nur geringen Leistungseinbußen.

  • --transformer_nf4 True : Verwenden Sie nf4 zur Quantisierung des Transformers.

  • --quantize: Wirkt nur auf die MLX-Engine auf dem Mac. Flux.1-dev und Flux.1-schnell verwenden auf dem Mac die MLX-Engine für Berechnungen, quantize kann verwendet werden, um das Modell zu quantisieren.

Für die WebUI genügt es, zusätzliche Parameter hinzuzufügen, z. B. den Schlüssel cpu_offload mit dem Wert True, um das CPU-Offloading zu aktivieren.

Nachfolgend sind die Parameter aufgeführt, die standardmäßig ab v0.16.1 verwendet werden.

Modell

quantize_text_encoder

quantize

transformer_nf4

FLUX.1-dev

text_encoder_2

True

False

FLUX.1-schnell

text_encoder_2

True

False

sd3-medium

text_encoder_3

N/A

False

sd3.5-medium

text_encoder_3

N/A

False

sd3.5-large

text_encoder_3

N/A

True

sd3.5-large-turbo

text_encoder_3

N/A

True

Qwen-Image

text_encoder

N/A

False

Qwen-Image-Edit

text_encoder

N/A

False

Bemerkung

Wenn Sie bestimmte Quantisierungen deaktivieren möchten, setzen Sie einfach die entsprechenden Optionen auf False. Beispielsweise setzen Sie für die Web-Oberfläche den Schlüssel quantize_text_encoder und den Wert False, oder für die Befehlszeile geben Sie --quantize_text_encoder False an, um die Quantisierung des Text-Encoders zu deaktivieren.

Für CogView4 haben wir festgestellt, dass die Quantisierung einen erheblichen Einfluss auf das Modell hat. Daher empfehlen wir, bei begrenztem VRAM die CPU-Offload-Option in der Weboberfläche zu aktivieren und beim Laden des Modells über die Befehlszeile --cpu_offload True anzugeben.

GGUF-Dateiformat#

Das GGUF-Dateiformat bietet umfangreiche Quantisierungsoptionen für Transformer-Module. Um eine GGUF-Datei zu verwenden, können Sie im Webinterface die zusätzliche Option gguf_quantization angeben oder in der Befehlszeile --gguf_quantization festlegen, um die integrierte GGUF-Quantisierungsunterstützung von Xinference für Modelle zu aktivieren. Im Folgenden sind die standardmäßig unterstützten Modelle aufgeführt.

Modell

Unterstützt das GGUF-Quantisierungsformat.

FLUX.1-dev

F16, Q2_K, Q3_K_S, Q4_0, Q4_1, Q4_K_S, Q5_0, Q5_1, Q5_K_S, Q6_K, Q8_0

FLUX.1-schnell

F16, Q2_K, Q3_K_S, Q4_0, Q4_1, Q4_K_S, Q5_0, Q5_1, Q5_K_S, Q6_K, Q8_0

sd3.5-medium

F16, Q3_K_M, Q3_K_S, Q4_0, Q4_1, Q4_K_M, Q4_K_S, Q5_0, Q5_1, Q5_K_M, Q5_K_S, Q6_K, Q8_0

sd3.5-large

F16, Q4_0, Q4_1, Q5_0, Q5_1, Q8_0

sd3.5-large-turbo

F16, Q4_0, Q4_1, Q5_0, Q5_1, Q8_0

Qwen-Image

F16, Q3_K_M, Q3_K_S, Q4_0, Q4_1, Q4_K_M, Q4_K_S, Q5_0, Q5_1, Q5_K_M, Q5_K_S, Q6_K, Q8_0

Qwen-Image-Edit

Q2_K, Q3_K_M, Q3_K_S, Q4_0, Q4_1, Q4_K_M, Q4_K_S, Q5_0, Q5_1, Q5_K_M, Q5_K_S, Q6_K, Q8_0

Qwen-Image-Edit-2509

Q2_K, Q3_K_M, Q3_K_S, Q4_0, Q4_1, Q4_K_M, Q4_K_S, Q5_0, Q5_1, Q5_K_M, Q5_K_S, Q6_K, Q8_0

Bemerkung

Wir empfehlen dringend, im WebUI die zusätzliche Option cpu_offload zu aktivieren und auf True zu setzen, oder in der Befehlszeile --cpu_offload True anzugeben.

Zum Beispiel:

xinference launch --model-name FLUX.1-dev --model-type image --gguf_quantization Q2_K --cpu_offload True

Mit der Q2_K-Quantisierung benötigst du nur etwa 5 GB VRAM, um Flux.1-dev auszuführen.

Für Modelle, die nicht nativ GGUF-Quantisierung unterstützen, oder wenn Sie die GGUF-Datei selbst herunterladen möchten, können Sie in der Web-Oberfläche die zusätzliche Option gguf_model_path angeben oder über die Befehlszeile --gguf_model_path /pfad/zum/model_quant.gguf festlegen.

Lightning LORA unterstützt#

Lightning LORA destilliert das Modell in Form einer LoRA, reduziert die Anzahl der Inferenzschritte bei gleichzeitiger Beibehaltung der Modellleistung und steigert die Inferenzgeschwindigkeit erheblich. Die folgenden Modelle unterstützen derzeit diese LoRA:

Modell

Unterstützte Lightning-Version

Qwen-Image

4steps-V1.0-bf16, 4steps-V1.0, 8steps-V1.0, 8steps-V1.1-bf16, 8steps-V1.1

Qwen-Image-Edit

4steps-V1.0-bf16, 4steps-V1.0, 8steps-V1.0-bf16, 8steps-V1.0

Qwen-Image-Edit-2509

4steps-V1.0-bf16, 4steps-V1.0-fp32, 8steps-V1.0-bf16, 8steps-V1.0-fp32

4 oder 8 Schritte bezieht sich auf die Anzahl der Inferenzschritte (num_inference_steps). Wenn lightning_version angegeben ist, legt Xinference die Anzahl der Inferenzschritte automatisch fest.

Bei der Verwendung kann entweder über die Oberfläche die Lightning-Version ausgewählt oder über die Befehlszeile angegeben werden.

actor

Verwenden Sie in der Befehlszeile --lightning_version <version>.

Für Benutzer, die die Lightning LoRA-Datei selbst heruntergeladen haben, kann diese über die Oberfläche unter „Lightning Model Path“ angegeben oder über den Befehlszeilenparameter --lightning_model_path festgelegt werden.

Beispielsweise reduziert sich bei Verwendung von 4steps-V1.0 die Inferenzzeit von ursprünglich 34 Sekunden auf 3 Sekunden.

OCR#

OCR API akzeptiert Bildbytes und gibt OCR-Text zurück.

Sie können die OCR-API entweder über cURL oder den Python-Client von Xinference ausprobieren.

curl -X 'POST' \
  'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/images/ocr' \
  -F model=<MODEL_UID> \
  -F 'kwargs={"model_size":"large"}' \
  -F image=@xxx.jpg