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_BATCHINGen1.
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
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)
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.
Primero, especifica la opción
request_iden elgenerate_configde 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>"})
Luego, usa el
request_idque 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) yvision(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-4vyMiniCPM-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_modelproporciona el parámetro opcionalmax_num_seqspara ajustar el nivel de concurrencia, cuyo valor predeterminado es16.