连续批处理#
连续批处理是诸如 VLLM
这样的推理引擎中提升吞吐的重要技术。Xinference 旨在通过这项技术提升 transformers
推理引擎的吞吐。
使用方式#
大语言模型#
当前,此功能在满足以下条件时开启:
首先,启动 Xinference 时需要将环境变量
XINFERENCE_TRANSFORMERS_ENABLE_BATCHING
置为1
。
XINFERENCE_TRANSFORMERS_ENABLE_BATCHING=1 xinference-local --log-level debug
备注
自 v0.16.0
开始,此功能默认开启,不再需要设置 XINFERENCE_TRANSFORMERS_ENABLE_BATCHING
环境变量,且该环境变量已被移除。
然后,启动 LLM 模型时选择
transformers
推理引擎。例如:
xinference launch -e <endpoint> --model-engine transformers -n qwen1.5-chat -s 4 -f pytorch -q none
curl -X 'POST' \
'http://127.0.0.1:9997/v1/models' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model_engine": "transformers",
"model_name": "qwen1.5-chat",
"model_format": "pytorch",
"size_in_billions": 4,
"quantization": "none"
}'
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
model_uid = client.launch_model(
model_engine="transformers",
model_name="qwen1.5-chat",
model_format="pytorch",
model_size_in_billions=4,
quantization="none"
)
print('Model uid: ' + model_uid)
一旦此功能开启,LLM 模型的所有接口将被此功能接管。所有接口的使用方式没有任何变化。
图像模型#
当前只有 FLUX.1
系列模型的 text_to_image
(文生图)接口支持此功能。
图像模型开启此功能需要在启动 xinference 时指定 XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE
环境变量,表示生成图片的大小。
例如,像这样启动 xinference:
XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE=1024*1024 xinference-local --log-level debug
接下来正常使用 text_to_image
接口即可,其他什么都不需要改变。
中止请求#
此功能中,你可以优雅地中止正在推理中的请求。
首先,在推理请求的
generate_config
中指定request_id
选项。例如:
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
model = client.get_model("<model_uid>")
model.chat([{"role": "user", "content": "<prompt>"}], generate_config={"request_id": "<your_unique_request_id>"})
接着,带着你指定的
request_id
去中止该请求。例如:
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
client.abort_request("<model_uid>", "<your_unique_request_id>")
注意,如果你的请求已经结束,那么此操作将什么都不做。
注意事项#
当前,此功能仅支持 LLM 模型的
generate
,chat
,tool call
(工具调用)和vision
(多模态) 功能。当前,对于图像模型,仅支持 FLUX.1` 系列模型的
text_to_image
(文生图)功能。对于多模态任务,当前支持
qwen-vl-chat
,cogvlm2
,glm-4v
和MiniCPM-V-2.6
(仅对于图像任务)模型。未来将加入更多模型,敬请期待。如果使用 GPU 推理,此功能对显存要求较高。因此请谨慎提高对同一个模型的并发请求量。
launch_model
接口提供可选参数max_num_seqs
用于调整并发度,默认值为16
。