图像#
学习如何使用 Xinference 生成图像。
介绍#
Images API提供了两种与图像交互的方法:
文生图端点根据文本从零开始创建图像。
图生图端点允许您生成给定图像的变体。
API 端点 |
OpenAI 兼容端点 |
|---|---|
Text-to-Image API |
/v1/images/generations |
Image-to-image API |
/v1/images/variations |
支持的模型列表#
Text-to-image API 在 Xinference 中支持以下模型:
sd-turbo
sdxl-turbo
stable-diffusion-v1.5
stable-diffusion-xl-base-1.0
sd3-medium
FLUX.1-schnell
FLUX.1-dev
快速入门#
文生图#
可以通过 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",
}'
import openai
client = openai.Client(
api_key="cannot be empty",
base_url="http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1"
)
client.images.generate(
model=<MODEL_UID>,
prompt="an apple"
)
from xinference.client import Client
client = Client("http://<XINFERENCE_HOST>:<XINFERENCE_PORT>")
model = client.get_model("<MODEL_UID>")
input_text = "an apple"
model.text_to_image(input_text)
{
"created": 1697536913,
"data": [
{
"url": "/home/admin/.xinference/image/605d2f545ac74142b8031455af31ee33.jpg",
"b64_json": null
}
]
}
大型图像模型部署(sd3-medium、FLUX.1 系列)贴士#
有用的传递给加载模型的额外参数包括:
--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文本编码器可以显著降低内存需求,而仅造成性能上的轻微损失。
如果你试图在显存小于24GB的GPU上运行像sd3-medium或FLUX.1系列这样的大型图像模型,你在启动或推理过程中可能会遇到显存溢出(OOM)的问题。尝试以下解决方案。
对于 FLUX.1 系列,尝试应用量化。
xinference launch --model-name FLUX.1-dev --model-type image --quantize_text_encoder text_encoder_2
对于 sd3-medium 模型,对 text_encoder_3 应用量化。
xinference launch --model-name sd3-medium --model-type image --quantize_text_encoder text_encoder_3
或者,移除 sd3-medium 模型中内存密集型的 T5-XXL 文本编码器。
xinference launch --model-name sd3-medium --model-type image --text_encoder_3 None
图生图#
你可以在教程笔记本中找到更多 Images API 的示例。
学习一个 Stable Diffusion 控制网络的示例