圖像#

學習如何使用 Xinference 生成圖像。

Hello! How can I assist you today?#

Images API 提供了兩種與影像互動的方法:

  • 文生圖端點根據文字從零開始建立圖像。

  • 圖生圖端點允許您生成給定圖像的變體。

API 端點

OpenAI 兼容端點

Text-to-Image API

/v1/images/generations

Image-to-image API

/v1/images/variations

支援的模型列表#

在 Xinference 中,Text-to-image API 支援以下模型:

  • 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

支援的模型列表

  • Flux.1-Kontext-dev

  • Qwen-Image-Edit

快速入門#

文生圖#

可以透過 cURL、OpenAI Client 或 Xinference 的方式嘗試使用 Text-to-image API。

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",
  }'

圖生圖#

圖生圖 API 模擬了 OpenAI 的 圖像變體建立 API。我們可以透過 cURL、OpenAI 客戶端,或 Xinference 的 Python 客戶端來嘗試使用圖生圖 API:

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

大型影像模型(例如 SD3-Medium、FLUX.1)的記憶體最佳化#

備註

從 v0.16.1 開始,Xinference 預設對大型圖像模型如 Flux.1 和 SD3.5 系列啟用量化。如果你使用新於 v0.16.1 的 Xinference 版本,你不需要做任何事來在小 GPU 記憶體的機器上執行這些大型圖像模型。

有用的傳遞給載入模型的額外參數包括:

  • --cpu_offload True:指定 True 會在推理過程中將模型的組件卸載到 CPU 上以節省記憶體,這會導致推理延遲略微增加。模型卸載僅會在需要執行時將模型組件移動到 GPU 上,同時保持其餘組件在 CPU 上。

  • --quantize_text_encoder <text encoder layer>:我們利用 bitsandbytes 函式庫載入並量化 T5-XXL 文字編碼器至 8 位元精確度。這讓你能夠在僅輕微影響效能的情況下,繼續使用完整的文字編碼器。

  • --text_encoder_3 None,對於 sd3-medium,移除在推論過程中記憶體密集型的47億參數T5-XXL文字編碼器可以顯著降低記憶體需求,而僅造成效能上的輕微損失。

  • --transformer_nf4 True :使用 nf4 量化 transformer。

  • --quantize :僅對 Mac 上的 MLX 引擎生效,Flux.1-dev 和 Flux.1-schnell 會在 Mac 上使用 MLX 引擎計算,quantize 可用來量化模型。

對於 WebUI,只需要添加額外參數,例如,添加 key cpu_offload 以及值 True 來開啟 CPU 卸載。

以下列出從 v0.16.1 開始預設使用的參數。

模型

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

備註

如果你想關閉某些量化,只需設定相應的選項為 False。例如,對於 Web UI,設定 key quantize_text_encoder 和值 False,或對於命令列,指定 --quantize_text_encoder False 來關閉 text encoder 的量化。

對於 CogView4,我們發現量化對模型的影響較大。因此,當顯存有限時,我們推薦在 Web UI 中啟用 CPU offload 選項,在命令列載入模型時指定 --cpu_offload True

GGUF 檔案格式#

GGUF 檔案格式為 transformer 模組提供了豐富的量化選項。要使用 GGUF 檔案,你可以在 Web 界面上指定額外選項 gguf_quantization ,或者在命令列指定 --gguf_quantization ,以為 Xinference 內建支援 GGUF 量化的模型開啟。如下是內建支援的模型。

模型

支援 GGUF 量化格式

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

備註

我們強烈建議在 WebUI 上開啟額外選項 cpu_offload 並指定為 True,或對命令列,指定 --cpu_offload True

例如:

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

使用 Q2_K 量化,你只需要大約 5GB 的顯存來執行 Flux.1-dev。

對於非內建支援 GGUF 量化的模型,或者您希望自行下載 GGUF 檔案,您可以在 Web UI 指定額外選項 gguf_model_path,或者使用命令列指定 --gguf_model_path /path/to/model_quant.gguf

Lightning LORA 支持#

Lightning LORA 以 LoRA 的形式對模型進行蒸餾,在保持模型效能的同時減少推理步數,並大幅提升推理速度。以下模型目前支援此 LoRA:

模型

支援的 Lightning 版本

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 步或 8 步是指推理步數( num_inference_steps )。當指定了 lightning_version 時,Xinference 會自動設定推理步數。

使用時,可以在界面上選擇 lightning 版本,或者透過命令列指定。

actor

在命令列中使用 --lightning_version <version>

對於自行下載了 lightning LoRA 檔案的使用者,可以在介面上透過 Lightning Model Path 指定,或者使用命令列參數 --lightning_model_path

例如,使用 4steps-V1.0 時,推理時間從原來的 34 秒減少到 3 秒。

OCR#

OCR API 接受圖像字節並返回 OCR 文字。

可以透過 cURL 或 Xinference 的 Python 客戶端來嘗試 OCR API。

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