Zum Hauptinhalt

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.

CodingFortgeschrittenbatch-processingperformanceapi

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?

SzenarioGeeignet?
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.

Inhouse statt Nachschlagewerk

Für den Transfer ins Unternehmen sind die Inhouse-Schulungen der passende nächste Schritt.