Multimodale Encoder sind empfindlich gegenüber feinen Drifts: andere Auflösung, anderes Letterboxing oder ein Wechsel von ONNX Runtime CPU zu CoreML Execution Provider (EP) kann Retrieval-Rankings verschieben, ohne dass ein Modellwechsel stattgefunden hätte. Dieser Artikel liefert eine kompakte Entscheidungsmatrix, Leitplanken zu Konvertierung, Threads, RAM-Spitzen und Batch-Warteschlangen sowie eine Kosten-Abnahmeliste für gemietete Remote-Knoten. Für Chunking und Embedding-Kontingente im RAG-Kontext siehe die lokale RAG-Matrix; die nachgelagerte Index-Schicht ordnen Sie mit der Vektorindex-Matrix (USearch, FAISS, sqlite-vec). Gateway- und Token-Kosten spiegeln Sie bei Bedarf mit der Multi-Modell-Routing-Kostenmatrix.
Architektur-Matrix: CLIP/SigLIP × ONNX vs. CoreML EP
Die folgende Tabelle fasst typische Einsatzmotive zusammen — Messwerte bleiben projektabhängig; dokumentieren Sie immer EP-Version, Opset und Float-Precision im Runbook.
| Kriterium | CLIP (ViT-B/L) | SigLIP | ONNX Runtime (CPU/EP-Mix) | CoreML EP |
|---|---|---|---|---|
| Ökosystem & Referenz | Breite Beispiele, viele offene Gewichte | Oft bessere feinkörnige Text-Bild-Alignments in Benchmarks | Einheitliche Session-API, viele Backends | Native Apple-Pipeline, Metal-Grafikpfad |
| Typische Dim. | 512 (B), 768 (L) — Modellabhängig | 256–1152 je nach Variante | wie exportiertes ONNX | wie konvertiertes mlprogram |
| Batch-Fokus | Mittlere Batches skalieren gut mit EP | Ähnlich; Achten auf Text-Tokenizer-Latenz | Feintuning über intra_op/inter_op | Oft Vorteil bei B≥8 bei gleichbleibender Thermik |
| Portabilität | PyTorch → ONNX/CoreML etabliert | Exportpfad prüfen (Ops, dynamische Shapes) | Linux/Mac/Win gleiche Graph-Datei | Primär Apple; Host muss Neural Engine/GPU Profil matchen |
| Risiko | Leichtgewichtige Demos maskieren Speicher bei großen B | Tokenizer- und Vocab-Freeze nötig | Unsupported Ops → Fallback oder Custom-Op | Konvertierungswarnungen still ignorieren = numerische Drift |
Modellformat-Konvertierung und Execution Provider
Ein belastbarer Ablauf friert zuerst den kanonischen PyTorch-Checkpoint ein, exportiert dann ONNX mit fixierten Eingabeshapes für Bild und Text (oder getrennte Sessions, falls der Graph das verlangt), validiert numerisch gegen eine kleine Golddatei und wandelt optional in CoreML (mlprogram) um. Jede Stufe braucht eine Signatur: Dateihash, Opset, Reduce-Mean-Flag bei Normalisierung und exakte Preprocess-Kette (Resize, Center-Crop, RGB/BGR).
- ONNX → CoreML: untersuchen Sie Konverter-Logs auf deprecierte Layer; bei dynamischen Sequenzlängen Text-Seite separat benchmarken.
- EP-Wahl: dieselbe Session-Konfiguration auf Laptop und Remote-Host speichern (
SessionOptionsserialisieren oder in Code pinnen). - FP16/BF16: nur nach Abgleich der Kosinus-Abstände auf einem festen Eval-Set freigeben; Finance-relevante Systeme brauchen dokumentierte Toleranzgrenzen.
# Beispielhafte Umgebungsanker (Werte projektspezifisch anpassen)
export ORT_DYLIB_PATH="/opt/homebrew/lib/libonnxruntime.dylib"
export EMBED_ORT_INTRA_OP="$(sysctl -n hw.perflevel0.physicalcpu_max)"
export EMBED_COREML_FLAG="1" # 1 = CoreML EP nach erfolgreicher KonvertierungThreadzahl und Lastverteilung
Auf Apple Silicon teilen sich Encoder mit Retrieval, LLM und Audio-Pipelines Unified Memory. Setzen Sie intra_op-Threads auf die Zahl physischer Performance-Kerne oder darunter, wenn parallel ein zweiter Dienst läuft. inter_op nur dann >1, wenn Sessions wirklich unabhängige Graphen parallel ausführen — sonst entsteht Kontention im Scheduler und die Tail-Latenz steigt.
| Szenario | Empfehlung (Start) | Beobachtung |
|---|---|---|
| Ein dedizierter Embedding-Worker auf M4 Pro | intra_op = 8–10, inter_op = 1 | Soak p95 stabil, ohne Swap |
| Encoder + Vektor-Indexer auf einem Host | intra_op = 6, zweiter Prozess OMP deckeln | Kein BLAS-Thread-Sturm im Indexer |
| Nur CoreML EP, keine ONNX-CPU-Fallbacks | OS-Background-Aktivität minimieren, Festplatten-IO auf SSD isolieren | Thermik weniger jitter als reine CPU-Pfade |
Speicherspitzen, Vektordimension und Batchgröße
Der RAM-Peak wächst grob mit Batch × (Bildtensor + Text-Aktivierungen + Zwischenfeature). SigLIP-Varianten mit höherer Dimension verschieben den Knick früher, wenn Bildseite hochauflösend bleibt. Reduzieren Sie effektive Pixelzahl, bevor Sie B erhöhen — das ist oft günstiger als aggressives FP16 ohne Abnahme.
| Hebel | Wirkung auf Peak | Abnahme-Hinweis |
|---|---|---|
| Batch B erhöhen | Linear bis zur Fragmentierung; Swap killt p95 | Binary-Search zwischen B=4 und B=64 loggen |
| Eingabe 336→224 (Beispiel) | Spürbar geringerer Aktivierungsspeicher | Recall-Regression gegen Referenzkorpus messen |
| Dim. 768 vs. 512 | Index und RAM für Vektorspeicher ~1,5× | Speicherformel im Finanz-CSV explizit ausweisen |
| Zwei EPs im A/B-Test | Unterschiedliche Zwischenpuffer | Nie denselben Host ohne Cooldown wechseln |
Batch-Inferenz-Warteschlange und Backpressure
APIs, die Bilder aus dem Web ziehen, kollidieren mit Encoder-Batches, wenn keine Queue mit Timeout existiert. Nutzen Sie eine begrenzte FIFO mit maximalem Wartevolumen (Items oder Megapixel), Deadline pro Job und Circuit Breaker bei Speicherdruck. Für nächtliche Offline-Ingestion: fester Producer-Consumer-Abstand, sodass der Consumer nie mehr als zwei Batches materialisiert hält.
- Priorität: interaktive Queries vor Bulk-Reindex — getrennte Queues verhindern Head-of-Line-Blocking.
- Idempotenz: Content-Hash als Schlüssel, damit Wiederholungen nach Crash keine doppelten Vektoren erzeugen.
- Metriken: Queue-Tiefe, Verweilzeit, verworfene Jobs — Export in dasselbe Dashboard wie GPU-/ANE-Auslastung.
Remote-Knoten: Kosten- und Stabilitäts-Abnahmeliste
Gemietete Apple-Silicon-Remote-Macs reduzieren Thermik- und Desktop-Rauschen gegenüber Entwickler-Laptops. Die Abnahme sollte dieselben Binärartefakte, Pfade und EP-Flags wie in Staging verwenden.
| Punkt | Nachweis / Ziel |
|---|---|
| Modell-Fingerprint | SHA256 von ONNX/mlprogram + Opset + EP-Version in CSV |
| Throughput je Stunde | Bilder oder Megapixel pro Stunde bei festem B und Auflösung |
| RAM-Plateau | Kein anhaltender Swap; Peak unter vertraglich genanntem Deckel |
| Latenz p95/p99 | API-SLO dokumentiert; Vergleich Laptop vs. Remote ≤ vereinbarte Delta |
| Strom-/Stundensatz | Kosten pro 1M Embeddings aus Host-Tarif und Laufzeit ableiten |
| Wiederanlauf | Cold-Start-Zeit bis erste gültige Antwort < SLA |
Zusammenfassung und Kaufargument: Wählen Sie SigLIP, wenn feinkörnige Text-Bild-Zuordnung im Eval dominiert, und CLIP, wenn maximale Kompatibilität und Referenzartefakte zählen. Nutzen Sie ONNX als neutrales Transportformat und CoreML EP, wenn Ihr Produktionspfad ausschließlich Apple Silicon bleibt und Sie die Neural Engine/GPU konsequent auslasten wollen. Kalibrieren Sie Batch, Threads und Queues anhand dokumentierter Speicherpeaks, wiederholen Sie die Messung auf einem dedizierten Remote-Mac, und buchen Sie Kapazität dort, wo Thermik und IO Ihre SLA am wenigsten verletzen — die öffentlichen Seiten zu Preisen und Paketen sowie Miete und Kauf enthalten die Tarifbasis ohne Login-Zwang; technische Einstiege bieten Startseite und Hilfezentrum.