Procesamiento por lotes continuo#

El procesamiento por lotes continuo es una técnica importante para aumentar el rendimiento en motores de inferencia como VLLM. Xinference tiene como objetivo mejorar el rendimiento del motor de inferencia transformers mediante esta técnica.

Modo de uso#

Gran modelo de lenguaje#

Actualmente, esta función se activa cuando se cumplen las siguientes condiciones:

  • Primero, al iniciar Xinference, es necesario establecer la variable de entorno XINFERENCE_TRANSFORMERS_ENABLE_BATCHING en 1.

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

Nota

A partir de v0.16.0, esta función está habilitada por defecto, ya no es necesario configurar la variable de entorno XINFERENCE_TRANSFORMERS_ENABLE_BATCHING, y dicha variable de entorno ha sido eliminada.

  • Luego, al iniciar el modelo LLM, seleccione el motor de inferencia transformers. Por ejemplo:

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

Una vez que esta función está activada, todas las interfaces del modelo LLM serán gestionadas por esta función. El modo de uso de todas las interfaces no sufre ningún cambio.

Modelo de imagen#

Actualmente, solo la interfaz text_to_image (texto a imagen) de la serie de modelos FLUX.1 es compatible con esta función.

Para habilitar esta función en el modelo de imágenes, se debe especificar la variable de entorno XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE al iniciar xinference, la cual indica el tamaño de la imagen generada.

Por ejemplo, inicia xinference de esta manera:

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

A continuación, use la interfaz text_to_image como de costumbre, no necesita cambiar nada más.

Cancelar solicitud#

En esta función, puedes finalizar elegantemente una solicitud que está en proceso de inferencia.

  1. Primero, especifica la opción request_id en el generate_config de la solicitud de inferencia. Por ejemplo:

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. Luego, usa el request_id que especificaste para cancelar la solicitud. Por ejemplo:

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

Nota: si tu solicitud ya ha finalizado, esta operación no hará nada.

Notas importantes#

  • Actualmente, esta función solo admite las capacidades generate, chat, tool call (llamada a herramientas) y vision (multimodal) de los modelos LLM.

  • Actualmente, para los modelos de imagen, solo se admite la función text_to_image (texto a imagen) de la serie de modelos FLUX.1.

  • Para tareas multimodales, actualmente se soportan qwen2-vl-instruct, qwen2.5-vl-instruct, QvQ-72B-Preview, glm-4v y MiniCPM-V-2.6. En el futuro se agregarán más modelos, ¡estad atentos!

  • Si se utiliza inferencia con GPU, esta función requiere una cantidad considerable de memoria de video. Por lo tanto, tenga cuidado al aumentar las solicitudes concurrentes para el mismo modelo. La interfaz launch_model proporciona el parámetro opcional max_num_seqs para ajustar el nivel de concurrencia, cuyo valor predeterminado es 16.