连续批处理#

连续批处理是诸如 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

一旦此功能开启,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 接口即可,其他什么都不需要改变。

中止请求#

此功能中,你可以优雅地中止正在推理中的请求。

  1. 首先,在推理请求的 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>"})
  1. 接着,带着你指定的 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-chatcogvlm2glm-4vMiniCPM-V-2.6 (仅对于图像任务)模型。未来将加入更多模型,敬请期待。

  • 如果使用 GPU 推理,此功能对显存要求较高。因此请谨慎提高对同一个模型的并发请求量。launch_model 接口提供可选参数 max_num_seqs 用于调整并发度,默认值为 16