Sobes.tech
Middle — Senior

Was ist kontinuierliches Batching und wie wird es in vLLM/TGI implementiert?

sobes.tech KI

Antwort von AI

Kontinuierliches Batchen ist eine Technik zur Verarbeitung von Anfragen an ein Machine-Learning-Modell, bei der eingehende Inferenzanfragen kontinuierlich und dynamisch in Batches gesammelt werden, um die Rechenressourcen optimal zu nutzen und die Latenz zu verringern. Anstatt auf eine feste Zeit oder eine feste Anzahl von Anfragen zu warten, bildet das System ständig Batches aus den eingehenden Anfragen und verarbeitet sie.

In vLLM und TGI (Text Generation Inference) wird kontinuierliches Batchen durch asynchrones Warten und dynamische Batchbildung realisiert. Zum Beispiel, wenn eine Anfrage eintrifft, wird sie in eine Warteschlange gestellt, und der Motor versucht, ein Batch aus mehreren Anfragen zu bilden, ohne die erste Anfrage zu lange zu verzögern. Wenn keine neuen Anfragen eintreffen, wird das Batch mit dem verfügbaren Inhalt gestartet. Dies ermöglicht die gleichzeitige Verarbeitung mehrerer Anfragen, effiziente Nutzung der GPU und Minimierung der Latenz für jede Anfrage.

Das sieht ungefähr so aus:

  • Anfragen kommen in die Warteschlange.
  • Das System wartet entweder auf die Erreichung der maximalen Batchgröße oder auf das Ablaufdatum des Timers.
  • Es wird ein Batch gebildet und an das Modell gesendet.
  • Die Ergebnisse werden an die Anfragen zurückverteilt.

Dieser Ansatz ist besonders nützlich für Transformer, bei denen die Batch-Verarbeitung deutlich effizienter ist als einzelne Anfragen.