Processamento em lote contínuo#
O processamento em lote contínuo é uma tecnologia importante para aumentar a taxa de transferência em mecanismos de inferência como o VLLM. O Xinference visa melhorar a taxa de transferência do mecanismo de inferência transformers por meio dessa tecnologia.
Modo de uso#
Grande modelo de linguagem#
Atualmente, este recurso está ativado quando as seguintes condições são atendidas:
Primeiro, ao iniciar o Xinference, você precisa definir a variável de ambiente
XINFERENCE_TRANSFORMERS_ENABLE_BATCHINGcomo1.
XINFERENCE_TRANSFORMERS_ENABLE_BATCHING=1 xinference-local --log-level debug
Nota
A partir da v0.16.0, esta função é ativada por padrão, não sendo mais necessário definir a variável de ambiente XINFERENCE_TRANSFORMERS_ENABLE_BATCHING, e essa variável foi removida.
Em seguida, ao iniciar o modelo LLM, selecione o mecanismo de inferência
transformers. Por exemplo:
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)
Uma vez que este recurso esteja ativado, todas as interfaces dos modelos LLM serão gerenciadas por ele. O modo de uso de todas as interfaces permanece inalterado.
Modelo de imagem#
Atualmente, apenas a interface text_to_image dos modelos da série FLUX.1 suporta essa funcionalidade.
Para ativar esta funcionalidade no modelo de imagem, é necessário especificar a variável de ambiente XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE ao iniciar o xinference, indicando o tamanho da imagem a ser gerada.
Por exemplo, inicie o xinference assim:
XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE=1024*1024 xinference-local --log-level debug
Em seguida, use a interface text_to_image normalmente, sem precisar alterar mais nada.
Interromper requisição#
Neste recurso, você pode interromper elegantemente as requisições que estão em andamento.
Primeiro, especifique a opção
request_idnogenerate_configda requisição de inferência. Por exemplo:
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>"})
Em seguida, utilize o
request_idque você especificou para interromper essa requisição. Por exemplo:
from xinference.client import Client
client = Client("http://127.0.0.1:9997")
client.abort_request("<model_uid>", "<your_unique_request_id>")
Nota: se sua solicitação já tiver sido concluída, esta operação não fará nada.
Avisos#
Atualmente, este recurso suporta apenas as funcionalidades
generate,chat,tool call(chamada de ferramenta) evision(multimodal) do modelo LLM.Atualmente, para modelos de imagem, apenas o recurso text_to_image (geração de imagem a partir de texto) da série de modelos FLUX.1 é suportado.
Para tarefas multimodais, atualmente são suportados
qwen2-vl-instruct,qwen2.5-vl-instruct,QvQ-72B-Preview,glm-4veMiniCPM-V-2.6. Mais modelos serão adicionados no futuro, aguarde novidades.Se for usar inferência com GPU, este recurso exige alta capacidade de memória de vídeo. Portanto, aumente com cuidado o número de requisições concorrentes para o mesmo modelo. A interface
launch_modeloferece o parâmetro opcionalmax_num_seqspara ajustar o nível de concorrência, com valor padrão16.