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_BATCHING como 1.

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

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.

  1. Primeiro, especifique a opção request_id no generate_config da 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>"})
  1. Em seguida, utilize o request_id que 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) e vision (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-4v e MiniCPM-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_model oferece o parâmetro opcional max_num_seqs para ajustar o nível de concorrência, com valor padrão 16.