连续批处理(实验性质)#

连续批处理是诸如 VLLM 这样的推理引擎中提升吞吐的重要技术。Xinference 旨在通过这项技术提升 transformers 推理引擎的吞吐。

使用方式#

当前,此功能在满足以下条件时开启:

  • 首先,启动 Xinference 时需要将环境变量 XINFERENCE_TRANSFORMERS_ENABLE_BATCHING 置为 1

XINFERENCE_TRANSFORMERS_ENABLE_BATCHING=1 xinference-local --log-level debug
  • 然后,启动 LLM 模型时选择 transformers 推理引擎。例如:

xinference launch -e <endpoint> --model-engine transformers -n qwen1.5-chat -s 4 -f pytorch -q none

一旦此功能开启,LLM 模型的所有接口将被此功能接管。所有接口的使用方式没有任何变化。

中止请求#

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

  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("<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, chatvision (多模态) 功能。tool call (工具调用)暂时不支持。

  • 对于多模态任务,当前支持 qwen-vl-chatcogvlm2glm-4v 模型。未来将加入更多模型,敬请期待。

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

  • 此功能仍处于实验阶段,欢迎反馈任何问题。

  • 一段时间的测试之后,此功能将代替原来的 transformers 推理逻辑成为默认行为。原来的推理逻辑将被摒弃。