Chargenweise Stapelverarbeitung#

Continuous Batching ist eine wichtige Technologie in Inferenz-Engines wie VLLM, um den Durchsatz zu erhöhen. Xinference zielt darauf ab, mit dieser Technologie den Durchsatz der transformers Inferenz-Engine zu steigern.

Verwendung#

Große Sprachmodelle#

Derzeit ist diese Funktion aktiviert, wenn die folgenden Bedingungen erfüllt sind:

  • Zunächst muss beim Starten von Xinference die Umgebungsvariable XINFERENCE_TRANSFORMERS_ENABLE_BATCHING auf 1 gesetzt werden.

XINFERENCE_TRANSFORMERS_ENABLE_BATCHING=1 xinference-local --log-level debug

Bemerkung

Ab v0.16.0 ist diese Funktion standardmäßig aktiviert. Die Umgebungsvariable XINFERENCE_TRANSFORMERS_ENABLE_BATCHING muss nicht mehr gesetzt werden und wurde entfernt.

  • Starten Sie dann das LLM-Modell und wählen Sie die transformers-Inferenz-Engine aus. Beispiel:

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

Sobald diese Funktion aktiviert ist, werden alle Schnittstellen des LLM-Modells von dieser Funktion übernommen. Die Nutzungsweise aller Schnittstellen bleibt unverändert.

Bildmodell#

Aktuell unterstützt nur die text_to_image (Text-zu-Bild) Schnittstelle der FLUX.1 Modellserie diese Funktion.

Um diese Funktion zu aktivieren, muss das Bildmodell beim Start von xinference die Umgebungsvariable XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE angeben, die die Größe des generierten Bildes angibt.

Zum Beispiel, starten Sie xinference wie folgt:

XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE=1024*1024 xinference-local --log-level debug

Danach kann die text_to_image-Schnittstelle normal verwendet werden, ohne dass sonst etwas geändert werden muss.

Anfrage abbrechen#

In dieser Funktion können Sie eine laufende Inferenzanfrage elegant abbrechen.

  1. Geben Sie zunächst die Option request_id im generate_config der Inferenzanfrage an. Beispiel:

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. Abbrechen Sie dann die Anfrage mit der von Ihnen angegebenen request_id. Beispiel:

from xinference.client import Client
client = Client("http://127.0.0.1:9997")
client.abort_request("<model_uid>", "<your_unique_request_id>")

Beachte: Falls deine Anfrage bereits beendet ist, wird diese Operation nichts bewirken.

Hinweise#

  • Derzeit unterstützt diese Funktion nur die Funktionen generate, chat, tool call (Werkzeugaufruf) und vision (Multimodal) des LLM-Modells.

  • Derzeit wird für Bildmodelle nur die Funktion text_to_image (Text-zu-Bild) der Modellserie FLUX.1 unterstützt.

  • Für multimodale Aufgaben werden derzeit qwen2-vl-instruct, qwen2.5-vl-instruct, QvQ-72B-Preview, glm-4v und MiniCPM-V-2.6 unterstützt. Weitere Modelle werden in Zukunft hinzugefügt – bleiben Sie gespannt.

  • Wenn GPU-Inferenz verwendet wird, stellt diese Funktion hohe Anforderungen an den Videospeicher. Daher sollte die Anzahl gleichzeitiger Anfragen an dasselbe Modell vorsichtig erhöht werden. Die Schnittstelle launch_model bietet den optionalen Parameter max_num_seqs zur Anpassung des Parallelitätsgrads, mit einem Standardwert von 16.