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_BATCHINGauf1gesetzt 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
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)
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.
Geben Sie zunächst die Option
request_idimgenerate_configder 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>"})
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) undvision(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-4vundMiniCPM-V-2.6unterstü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_modelbietet den optionalen Parametermax_num_seqszur Anpassung des Parallelitätsgrads, mit einem Standardwert von16.