Traitement par lots continu#

Le traitement par lots continu est une technique importante pour améliorer le débit dans les moteurs d’inférence comme VLLM. Xinference vise à améliorer le débit du moteur d’inférence transformers grâce à cette technique.

Méthode d’utilisation#

Grand modèle de langage#

Actuellement, cette fonction est activée lorsque les conditions suivantes sont remplies :

  • Premièrement, lors du démarrage de Xinference, la variable d’environnement XINFERENCE_TRANSFORMERS_ENABLE_BATCHING doit être réglée sur 1.

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

Note

Depuis v0.16.0, cette fonctionnalité est activée par défaut, il n’est plus nécessaire de définir la variable d’environnement XINFERENCE_TRANSFORMERS_ENABLE_BATCHING, et cette variable d’environnement a été supprimée.

  • Ensuite, lors du démarrage du modèle LLM, sélectionnez le moteur d’inférence transformers. Par exemple :

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

Une fois cette fonction activée, toutes les interfaces du modèle LLM seront prises en charge par cette fonction. L’utilisation de toutes les interfaces reste inchangée.

Modèle d’image#

Actuellement, seule l’interface text_to_image (génération de texte en image) des modèles de la série FLUX.1 prend en charge cette fonctionnalité.

Pour activer cette fonctionnalité dans le modèle d’image, vous devez spécifier la variable d’environnement XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE lors du démarrage de xinference, qui indique la taille de l’image générée.

Par exemple, démarrez xinference comme ceci :

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

Ensuite, utilisez normalement l’interface text_to_image, sans rien changer d’autre.

Interrompre la demande#

Dans cette fonctionnalité, vous pouvez interrompre élégamment une requête en cours de raisonnement.

  1. D’abord, spécifiez l’option request_id dans le generate_config de la requête d’inférence. Par exemple :

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. Ensuite, utilisez le request_id que vous avez spécifié pour annuler cette requête. Par exemple :

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

Attention, si votre requête est déjà terminée, cette opération ne fera rien.

Avertissements#

  • Actuellement, cette fonctionnalité ne prend en charge que les capacités generate, chat, tool call (appel d’outil) et vision (multimodal) des modèles LLM.

  • Actuellement, pour les modèles d’images, seule la fonction text_to_image (génération d’image à partir de texte) de la série de modèles FLUX.1 est prise en charge.

  • Pour les tâches multimodales, les modèles actuellement supportés sont qwen2-vl-instruct, qwen2.5-vl-instruct, QvQ-72B-Preview, glm-4v et MiniCPM-V-2.6. D’autres modèles seront ajoutés à l’avenir, restez à l’écoute.

  • Si vous utilisez un GPU pour l’inférence, cette fonction nécessite beaucoup de mémoire vidéo. Par conséquent, soyez prudent lorsque vous augmentez le nombre de requêtes simultanées pour un même modèle. L’interface launch_model fournit le paramètre optionnel max_num_seqs pour ajuster le degré de concurrence, dont la valeur par défaut est 16.