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_BATCHINGa1.
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
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 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.
Innanzitutto, specifica l’opzione
request_idnelgenerate_configdella 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>"})
Successivamente, utilizza il
request_idspecificato 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) evision(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-4veMiniCPM-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_modelfornisce il parametro opzionalemax_num_seqsper regolare il grado di concorrenza, con valore predefinito pari a16.