Lotto continuo#

Il batching continuo è una tecnologia importante per migliorare il throughput nei motori di inferenza come VLLM. Xinference mira a migliorare il throughput del motore di inferenza transformers attraverso questa tecnologia.

Modalità d’uso#

Grande modello linguistico#

Attualmente, questa funzionalità è abilitata quando vengono soddisfatte le seguenti condizioni:

  • Prima di tutto, all’avvio di Xinference è necessario impostare la variabile d’ambiente XINFERENCE_TRANSFORMERS_ENABLE_BATCHING a 1.

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

Nota

A partire da v0.16.0, questa funzione è abilitata per impostazione predefinita, non è più necessario impostare la variabile d’ambiente XINFERENCE_TRANSFORMERS_ENABLE_BATCHING, e tale variabile è stata rimossa.

  • Successivamente, all’avvio del modello LLM, seleziona il motore di inferenza transformers. Ad esempio:

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

Una volta attivata questa funzione, tutte le interfacce del modello LLM saranno gestite da essa. L’utilizzo di tutte le interfacce rimane invariato.

Modello di immagine#

Attualmente, solo l’interfaccia text_to_image (da testo a immagine) della serie di modelli FLUX.1 supporta questa funzionalità.

Per attivare questa funzionalità nel modello di immagini, è necessario specificare la variabile d’ambiente XINFERENCE_TEXT_TO_IMAGE_BATCHING_SIZE all’avvio di xinference, che indica la dimensione delle immagini generate.

Ad esempio, avvia xinference in questo modo:

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

Ora puoi semplicemente utilizzare l’interfaccia text_to_image normalmente, senza dover modificare nient’altro.

Richiesta di annullamento#

In questa funzionalità, puoi interrompere elegantemente una richiesta in fase di inferenza.

  1. Innanzitutto, specifica l’opzione request_id nel generate_config della richiesta di inferenza. Ad esempio:

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. Successivamente, utilizza il request_id specificato per terminare la richiesta. Ad esempio:

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

Nota: se la tua richiesta è già terminata, questa operazione non avrà alcun effetto.

Avvertenze#

  • Attualmente, questa funzione supporta solo le capacità generate, chat, tool call (chiamata strumento) e vision (multimodale) del modello LLM.

  • Attualmente, per i modelli di immagine, è supportata solo la funzione text_to_image (da testo a immagine) della serie di modelli FLUX.1.

  • Per le attività multimodali, attualmente sono supportati qwen2-vl-instruct, qwen2.5-vl-instruct, QvQ-72B-Preview, glm-4v e MiniCPM-V-2.6. In futuro verranno aggiunti ulteriori modelli, restate sintonizzati.

  • Se si utilizza l’inferenza GPU, questa funzionalità richiede una quantità elevata di memoria video. Pertanto, si consiglia di aumentare con cautela il numero di richieste concorrenti per lo stesso modello. L’interfaccia launch_model fornisce il parametro opzionale max_num_seqs per regolare il grado di concorrenza, con valore predefinito pari a 16.