連續批次處理#

連續批次處理是諸如 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 (文生圖)功能。

  • 對於多模態任務,當前支援 qwen2-vl-instructqwen2.5-vl-instructQvQ-72B-Previewglm-4vMiniCPM-V-2.6。未來將加入更多模型,敬請期待。

  • 如果使用 GPU 推理,此功能對顯存要求較高。因此請謹慎提高對同一個模型的並發請求量。launch_model 介面提供可選參數 max_num_seqs 用於調整並發度,預設值為 16