Batch Processing
Batch Processing bezeichnet die gebündelte Verarbeitung mehrerer Anfragen oder Datensätze in einem einzigen Durchlauf, anstatt jede Anfrage einzeln zu verarbeiten – das spart Kosten, erhöht den Durchsatz und reduziert API-Overhead erheblich.
Was ist Batch Processing?
Beim Batch Processing werden mehrere Eingaben (z. B. Prompts, Bilder oder Datensätze) gesammelt und als Gruppe auf einmal verarbeitet, statt sie sequenziell einzeln abzuschicken. In der KI-Entwicklung ist das besonders relevant, wenn du große Mengen an Daten durch ein Modell jagen musst – etwa beim Annotieren von Trainingsdaten, beim Embedding-Generieren oder beim Auswerten von Nutzerfeedback.
Warum ist das wichtig?
- Kostenreduktion: Viele Anbieter (z. B. OpenAI Batch API) bieten für Batch-Anfragen deutlich günstigere Preise an (oft 50 % günstiger).
- Effizienz: GPU/TPU-Hardware ist auf parallele Berechnungen optimiert – Batches nutzen diese Kapazität voll aus.
- Weniger Overhead: Statt 1.000 einzelner HTTP-Requests schickst du einen einzigen Job.
Praxisbeispiel: OpenAI Batch API
from openai import OpenAI
import json
client = OpenAI()
# 1. JSONL-Datei mit mehreren Anfragen erstellen
requests = [
{"custom_id": "req-1", "method": "POST", "url": "/v1/chat/completions",
"body": {"model": "gpt-4o-mini", "messages": [{"role": "user", "content": "Übersetze: Hello"}]}},
{"custom_id": "req-2", "method": "POST", "url": "/v1/chat/completions",
"body": {"model": "gpt-4o-mini", "messages": [{"role": "user", "content": "Übersetze: World"}]}},
]
with open("batch_requests.jsonl", "w") as f:
for req in requests:
f.write(json.dumps(req) + "\n")
# 2. Datei hochladen und Batch starten
batch_file = client.files.create(file=open("batch_requests.jsonl", "rb"), purpose="batch")
batch_job = client.batches.create(
input_file_id=batch_file.id,
endpoint="/v1/chat/completions",
completion_window="24h"
)
print(f"Batch gestartet: {batch_job.id}")
Wann Batch Processing verwenden?
| Szenario | Geeignet? |
|---|---|
| Echtzeit-Chatbot | ❌ Zu langsam |
| Embedding-Generierung für 100k Dokumente | ✅ Ideal |
| Nightly Data Enrichment | ✅ Ideal |
| Interaktive Suche | ❌ Nutzer wartet |
Lokales Batching mit Transformers
Auch lokal kannst du Batching nutzen, um die GPU-Auslastung zu maximieren:
from transformers import pipeline
pipe = pipeline("sentiment-analysis", device=0) # GPU
texte = ["Tolles Produkt!", "Absolute Katastrophe.", "Geht so."] * 100
# Batch-Größe steuert den GPU-Durchsatz
ergebnisse = pipe(texte, batch_size=32)
print(ergebnisse[:3])
Wichtige Parameter
- Batch Size: Zu groß → Out-of-Memory-Fehler; zu klein → verschenkte Performance. Typische Werte: 8, 16, 32, 64.
- Completion Window: Bei Cloud-Batch-APIs oft 24h – nicht für zeitkritische Tasks geeignet.
- Parallelität vs. Latenz: Batching erhöht den Durchsatz, aber auch die Latenz pro Einzelanfrage.
Verwandte Begriffe
Inhouse statt Nachschlagewerk
Für den Transfer ins Unternehmen sind die Inhouse-Schulungen der passende nächste Schritt.