Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
CPU-Inferenz und Orchestrierung
-Übersicht
CPU-Instances sind eine erstklassige Rechenoption für eine Vielzahl von KI-Workloads auf Amazon EKS. Von kleinen Sprachmodellen (SLMs) und klassischer ML-Inferenz bis hin zu Daten-Pipelines und Agenten-Orchestrierung bieten CPUs ein hervorragendes Preis-Leistungs-Verhältnis, eine breite Kapazitätsverfügbarkeit und die vertraute Kubernetes-Scheduling-Semantik.
CPU und GPU ergänzen sich und sind nicht wettbewerbsfähig. Mit zunehmender Komplexität agentischer KI-Pipelines wächst auch die Oberfläche der CPU-Arbeitslast: Jeder Inferenzaufruf ist von der Ausführung von Tools, der Kontext-Assemblierung, der Vektorsuche, den Leitplanken und der Orchestrierungslogik umgeben, die alle auf der CPU ausgeführt werden. Wir empfehlen, Architekturen zu entwerfen, die beide Rechenarten bewusst nutzen und jeden Workload der Stufe zuordnen, auf der er das beste Preis-Leistungs-Verhältnis bietet.
Nicht jeder Workload benötigt eine GPU. Routing, Klassifizierung, Abruf, Einbettung, Orchestrierung und ein wachsender Anteil der Inferenz von Sprachmodellen laufen alle effektiv auf der CPU. Current-generation CPU-Instanzen auf arm64 und x86 bieten ein hervorragendes Preis-Leistungs-Verhältnis für ML-Inferenz. In Kombination mit der Knotenkonsolidierung von Karpenter, der ereignisgesteuerten Skalierung von KEDA und der quantisierten Modellbereitstellung entsteht so ein produktionsreifer Stack, den Plattformteams auch ohne umfassende GPU-Kenntnisse einsetzen können.
Dieser Leitfaden richtet sich an:
-
Plattformingenieure, die mehrinstanzenfähige EKS-Cluster für KI-Workloads entwerfen.
-
ML-Praktiker evaluieren Inferenz-Backends für Modelle mit 30 B-Parametern.
-
FinOps Teams, die nach konkreten Kostenhebeln suchen, ohne dabei auf SLOs zu verzichten.
Was du lernen wirst:
-
Welche KI-Workloads gehören auf CPUs und wo GPUs oder Trainium notwendig sind.
-
Wie man einen vierdimensionalen Entscheidungsrahmen auf jeden neuen Workload anwendet.
-
Zwei Produktionsmuster: agentische SLM-Vorfilterung und Modellfarmen mit hoher Dichte.
-
Bewährte Methoden zur Optimierung: Quantisierung, Bin-Packing, Spot-Scheduling und Autoscaling.
Warnung
Jede Empfehlung in diesem Leitfaden sollte empirisch validiert werden. Die richtige Instance-Familie (arm64, x86, GPU oder Trainium) hängt von Ihrem Modell, Ihren Daten und Ihrem Latenzbudget ab. Verwenden Sie diesen Leitfaden als informierten Ausgangspunkt und führen Sie anschließend einen Benchmark durch, bevor Sie sich verpflichten.
Warum CPUs für KI-Workloads?
KI-Pipelines für die Produktion verteilen die Arbeit auf viele Rechenebenen. CPUs kümmern sich um Routing, Klassifizierung, Abruf, Orchestrierung und einen wachsenden Anteil an Inferenzen. Current-generation CPU-Instances bieten ein gutes Preis-Leistungs-Verhältnis und die vertraute Kubernetes-Planung, was sie zu einer praktischen Option für viele KI-Workloads macht.
Drei Faktoren machen CPUs für diese Workloads attraktiv:
Verfügbarkeit von Kapazitäten
GPU-Instanzen erfordern häufig Kapazitätsreservierungen Wochen im Voraus. CPU-Instances sind in allen AWS-Regionen ohne spezielle Geräte-Plugins, ohne DRA-Konfiguration und ohne MIG-Partitionierung allgemein verfügbar. Wenn Sie schnell skalieren müssen, ist die CPU-Kapazität die am leichtesten verfügbare Option.
Wirtschaftswissenschaften
Current-generation CPU-Instances bieten ein hervorragendes Preis-Leistungs-Verhältnis für ML-Inferenz. Für Teams, die FinOps Reviews durchführen oder Multi-Tenant-Cluster verwalten, ist der Kostenunterschied zwischen CPU und GPU erheblich, insbesondere bei quantisierten SLMs, bei denen die GPU-Beschleunigung zu sinkenden Renditen führt. Wir empfehlen ein Benchmarking der verfügbaren Instance-Familien (Graviton, AMD, Intel), um die besten Kosten pro Token für Ihren Workload zu ermitteln.
Einfache Bedienung
CPU-Pods verwenden das standardmäßige Kubernetes-Scheduling (requests,limits, Knotenaffinität, Topologieverteilung). Keine Geräte-Plugins, keine benutzerdefinierten Scheduler, keine Ressourcentypen. nvidia.com/gpu Teams, die KI-Workloads ohne fundierte GPU-Kenntnisse ausführen möchten, können die Produktion auf der CPU schneller erreichen.
Wachsende CPU-Oberfläche in behördlichen Pipelines
In agentischen KI-Pipelines ist jeder GPU-Inferenzaufruf von CPU-Arbeit umgeben: Ausführung von Tools, Kontexterstellung, Vektorsuche, Einbettung von Lookups, Leitplanken, Antwortvalidierung, Speicherverwaltung und Orchestrierungslogik. Da die Agenten immer komplexer werden (mehr Tools, längere Ketten, mehrstufiges Denken), nehmen diese CPU-Workloads superlinear zu. Protokolle wie MCP (Model Context Protocol) verstärken dies noch weiter: Jeder Aufruf des MCP-Tools löst den Datenabruf, die Transformation und die Formatierung aus, die vollständig auf der CPU ausgeführt werden.
CPU im Vergleich zu GPU/Trainium: Wann sollte man sich für jedes Modell entscheiden
| Faktor | Wählen Sie CPU | Wähle GPU/Trainium |
|---|---|---|
|
Modellgröße |
SLMs 1-8B (quantisiert); Einbettungen; Klassifikatoren |
8B+ für Online-Inferenz mit niedriger Latenz; 70B+ im Allgemeinen |
|
Latenz SLO |
p95 100-500ms akzeptabel |
p95 < 50 ms erforderlich |
|
Nebenläufigkeit |
< 100 req/s pro Endpunkt |
> 100 req/s nachhaltig |
|
Workload-Typ |
Orchestrierung, Abruf, ETL, Batch-Scoring |
Online-Inferenz, Feinabstimmung, Schulung |
|
Capacity (Kapazität) |
Sofortige Verfügbarkeit, keine Reservierungen |
Erfordert häufig reservierte Kapazität |
|
Kostensensitivität |
Die CPU bietet die besten $ pro Token für geeignete Workloads |
Die GPU amortisiert sich bei hoher Auslastung |
|
Fachwissen des Teams |
Standardbetrieb von Kubernetes |
Erfordert Kenntnisse im GPU-Betrieb |
|
Datensouveränität |
SLM-Inferenz in VPC; vollständiger Audit-Trail; Daten verlassen niemals Ihr Konto |
Dasselbe gilt für Selbstverwaltung; mit externen APIs nicht verfügbar |
Tipp
Diese Schwellenwerte sind Ausgangspunkte. Wir empfehlen, Ihre Ziel-Inferenz-Engine auf Kandidateninstanzfamilien (arm64 und x86) mit Ihrem tatsächlichen Modell und Datenverkehrsmuster auszuführen, bevor Sie sich auf eine Rechenebene festlegen.
Entscheidungsrahmen für die Arbeitslast
Die Auswahl der richtigen Rechenleistung für einen KI-Workload hängt von vier Dimensionen ab:
-
Modellgröße und Präzision: Bleibt die Qualität durch Quantisierung in Ihrem akzeptablen Bereich?
-
SLOs für Latenz und Durchsatz: Was sind Ihre p50/p95 Ziele und Spitzenanforderungsraten?
-
Workload-Typ: Online-Inferenz, Batch-Scoring, Abruf oder Orchestrierung?
-
Kosten- und Kapazitätsbeschränkungen: FinOps Budget, regionale Verfügbarkeit, Reservierungsstrategie?
Verwenden Sie die folgende Tabelle als Entscheidungsmatrix.
| Workload | CPU | GPU//Trainium | Hinweise |
|---|---|---|---|
|
SLMs (1-8B Parameter, quantisiert) |
Standardauswahl. Starkes Preis-Leistungs-Verhältnis bei 100-500 ms Latenz, moderates QPS. Benchmark für alle Instance-Familien. |
Wenn p95 <50ms or concurrency >100 req/s. |
Eine Quantisierung von Q4_K_M oder Q8_0 wird empfohlen |
|
Mittlere Modelle (8-30B Parameter) |
Batch-, Asynchron- und Offline-Bewertung. Testen Sie die Q4-Quantisierung. |
Online-Inferenz, lange Kontexte, geringe Latenz. |
Benchmark Q4 für alle Instance-Familien |
|
Große LLMs (über 70 Milliarden Parameter) |
Non-real-time nur, starke Quantisierung |
Standard für Online-Inferenz in der Produktion |
Sogar 70B können auf der CPU ausgeführt werden. Rechnen Sie mit einer hohen Latenz |
|
Klassisches ML/Embeddings/CV |
High-density Bereitstellen; Knotenübergreifendes Bin-Pack |
Schweres Sehen oder multimodales Sehen im großen Maßstab. |
TorchServe, Triton auf der CPU verarbeitet Tausende von Modellen. |
|
Datenpipelines//ETL//Synthetische Daten |
Ray und Spark auf der CPU für Datenvorbereitung und Feature-Engineering. |
N/A |
CPUs sind der Grundpfeiler dieser gesamten Phase der Datenvorbereitung |
|
Orchestrierung der Agenten//RAG-Abruf |
Network-bound Dienste: API-Gateways, Proxyschichten, Retriever, Chunker. |
N/A |
Vorteile von CPU-Instanzen mit hoher Bandbreite. |
|
Fine-tuning /Schulung |
Datenvorbereitung und Pipeline-Orchestrierung. |
Modelltraining und Destillation. |
Hybrid: CPU-Vorbereitung, GPU-Train, CPU-Ableitung. |
|
Compliance-sensitive Inferenz (FSI, Gesundheitswesen, Regierung) |
SLMs in VPC auf CPU. Die Daten bleiben im Konto, vollständiger Prüfpfad. |
Dasselbe gilt, wenn es auf der GPU selbst verwaltet wird. |
Bei Modellen mit weniger als 8 GB in regulierten Umgebungen gewinnt die CPU an Kosten. |
Warnung
Technisch gesehen ist es zwar möglich, Modelle mit mehr als 70 Milliarden auf CPUs mit hoher Quantisierung (Q4 oder niedriger) auszuführen, dies ist jedoch nur für Nicht-Echtzeit-, Offline- oder Batch-Workloads praktikabel. Erwarten Sie Token-Generierungsraten im niedrigen einstelligen Bereich (1-5 tokens/sec), Speicheranforderungen von über 40 GB selbst im vierten Quartal und Latenz, gemessen in Minuten pro Antwort für längere Ausgaben. Für jeden interaktiven oder latenzsensitiven Anwendungsfall eignen sich Modelle mit mehr als 70 Byte für GPU oder Trainium.
Schneller Benchmark-Workflow
Bevor Sie sich für eine Instance-Familie entscheiden, empfehlen wir, einen strukturierten Benchmark durchzuführen, bei dem Ihre möglichen CPU-Familien (arm64 und x86) anhand einer einzigen vergleichbaren Metrik verglichen werden: Kosten pro 1.000 Abfragen bei Ihrer angestrebten p95-Latenz. Stellen Sie einen Knoten pro Familie mit identischer Modellkonfiguration (gleiche Quantisierung, gleiche Kontextgröße, Thread-Anzahl) bereit, testen Sie jeden Knoten und vergleichen Sie ihn. Wenn eine CPU-Instance Ihrem p95-SLO entspricht, wird sie sich wahrscheinlich in Bezug auf die Kosten durchsetzen. Wenn sie knapp daneben liegt, probieren Sie die neueste Generation dieser Familie aus, bevor Sie zur GPU wechseln. Wenn die Latenz bei Ihrem Parallelitätsziel immer noch zu hoch ist, ist dies das Signal, die Arbeitslast auf die GPU zu verlagern.
Produktionsmuster
Muster 1: Agentic AI — SLM Pre-Filter auf CPU mit LLM-Eskalation
Die meisten Agenten-Workflows führen dieselben engen Muster wiederholt aus: die Anfrage klassifizieren, ein Tool auswählen, strukturierte Daten extrahieren, eine Antwort validieren. Für diese Aufgaben ist kein 70B-Parametermodell erforderlich.
Untersuchungen zu SLMs (AR Xiv:2506.02153
Bei diesem Muster verarbeitet ein SLM auf der CPU die meisten Anfragen durchgängig. Eine Routing-Schicht (die ebenfalls auf der CPU ausgeführt wird) leitet nur wirklich komplexe Fälle an ein LLM weiter. GPU-hosted
Komponenten, die auf einer CPU laufen:
-
API-Gateway/Proxyschicht — kümmert sich um Authentifizierung, Routing und Ratenbegrenzung
-
Agenten-Orchestrator — verwaltet Tool-Aufrufe und Status
-
SLM-Inferenzdienst — quantisiertes 1-8B-Modell unter Verwendung einer Inferenz-Engine wie llama.cpp
, Ollama oder vLLM auf der CPU -
Vektorabruf OpenSearch — auf CPU-Knoten
Komponenten auf GPU/Trainium:
-
Umfangreiches LLM für komplexe Synthesen und Argumentation in langen Kontexten
Warum dieses Muster funktioniert: In vielen Arbeitsabläufen von Agenturen können 60-80% der Anfragen von einem SLM klassifiziert oder extrahiert werden. Mit jedem LLM-Aufruf, den Sie vermeiden, vermeiden Sie auch die damit verbundene CPU-Arbeit, wie das Zusammenstellen eines großen Kontextfensters, das Ausführen von Leitplanken bei einer langen Antwort und die Verwaltung komplexer Zustände. Die CPU-Ebene wird unabhängig von der GPU-Ebene skaliert.
Zu den CPU-Workload-Kategorien in einer typischen Agent-Pipeline gehören: Ausführung von Tools (MCP-Serveraufrufen, API-Aufrufe, Datenbankabfragen), Kontext-Zusammenstellung, Vektorsuche und Einbettung von Lookups, Orchestrierung und Planungslogik, Leitplanken und Sicherheitsfilterung, Validierung und Formatierung von Antworten, Speicher- und Statusverwaltung für Agenten und. logging/observability
Dieses Muster eignet sich auch für einen Feinabstimmungszyklus: Sammeln Sie Domänendaten auf CPU-Knoten, optimieren Sie die GPU und stellen Sie das quantisierte Modell dann zur Inferenz wieder auf der CPU bereit, und das zu wesentlich geringeren Kosten als bei einem LLM-Endpunkt. Untersuchungen von LoRa Land (ar Xiv:2405.00732
Muster 2: CPU-Modellfarm High-Density
ML-Pipelines für die Produktion setzen routinemäßig Hunderte oder Tausende kleinerer Modelle ein: Einbettungen, Empfehlungen, Klassifikatoren, Punktezähler und BERT-based Computer-Vision-Modelle. Diese Modelle sind individuell leicht und werden teuer, wenn jedem Modell eigene GPU-Ressourcen zugewiesen werden.
Wir empfehlen CPU-Serving mit hoher Dichte (Bin-Packaging mehrerer Modelle pro Knoten mit TorchServe oder Triton auf der CPU), wobei Karpenter den Knotenlebenszyklus und die KEDA-Skalierung bei beobachteter Last verwaltet.
Dieses Muster lässt sich natürlich auch auf RAG-Architekturen übertragen: Das Einbetten, Generieren, Aufteilen von Dokumenten und das Abrufen OpenSearch aller Dateien laufen kostengünstig auf CPU-Knoten ab, wobei die Ergebnisse nur für den letzten Generierungsschritt an ein LLM weitergeleitet werden. GPU-hosted Die CPU-Farm kümmert sich um das Volumen, die GPU um die Komplexität.
Für regulierte Branchen (Finanzdienstleistungen, Gesundheitswesen, Behörden) ist dieses Muster besonders überzeugend: Hunderte von Spezialmodellen werden in VPC auf CPU ausgeführt, mit vollständigen Prüfprotokollen und Daten, die das Konto nie verlassen. Die Konformitätsanforderungen für selbstverwaltete Inferenzen stehen naturgemäß im Einklang mit dem Kostenvorteil von CPUs für Modelle unter 8 GB.
Bewährte Methoden zur Optimierung
Quantisierung
Es ist nicht praktikabel, ein 7B-Modell mit voller BF16 auf der CPU laufen zu lassen; es mit Q4-Quantisierung auszuführen ist praktikabel und kostengünstig. Zu verstehen, warum Quantisierung bei CPUs hilft, ist der Schlüssel zu guten Infrastrukturentscheidungen.
Warum Quantisierung für die CPU-Inferenz wichtig ist. CPU-Inferenz ist an die Speicherbandbreite gebunden, nicht an die Rechenleistung. Während der Dekodierungsphase (Generierung von Tokens nacheinander) werden für jedes erzeugte Token die gesamten Gewichtungen des Modells aus dem RAM gelesen. Die CPU verbringt die meiste Zeit damit, darauf zu warten, dass Daten aus dem Speicher eintreffen, und nicht damit, zu rechnen. Ein 7B-Modell bei BF16 ist ungefähr 14 GB groß; bei Q4_K_M schrumpft es auf etwa 4 GB. Da der Engpass darin besteht, dass Bytes vom RAM zu den CPU-Kernen verschoben werden, liest ein 3,5-mal kleineres Modell 3,5-mal schneller, was fast direkt zu einer 3,5-mal schnelleren Token-Generierung führt. Aus diesem Grund ist die Quantisierung mit Abstand die wirkungsvollste Optimierung für CPU-Inferenz und der Grund, warum neuere CPU-Generationen mit mehr Speicherkanälen selbst bei gleicher Taktrate schnellere Inferenzen erzeugen.
Wir empfehlen, Ihre Inferenz-Engine mit architekturoptimierten Backends (ARM NEON/SVE2 für arm64, AVX-512/AMX für x86) zu erstellen, die Thread-Anzahl gleich der vCPU-Anzahl einzustellen und die Quantisierungsformate Q4_K_M oder Q8_0 auszuwählen.
| Quantisierung | Auswirkung auf die Qualität | Durchsatz im Vergleich zu BF16 | Anwendungsfall |
|---|---|---|---|
|
Q4_K_M |
Niedrig (1-3% Perplexitätsdelta, modellabhängig) |
~4-5x schneller |
Produktionsstandard für SLMs |
|
Q8_0 |
Vernachlässigbar |
~2x schneller |
Quality-sensitive Aufgaben |
|
Q5_K_M |
Sehr niedrig |
~3,5-mal schneller |
Ausgewogenes Verhältnis von Qualität und Geschwindigkeit |
|
BF16 |
Keine |
1x (Basiswert) |
Vermeiden Sie bei Modellen ab 7B die Verwendung von CPUs |
Bei Modellen unter 2B gewinnt die CPU beim Preis-Leistungs-Verhältnis im Vergleich zur GPU. Diese Modelle sind klein genug, dass die GPU-Beschleunigung nur minimale Vorteile bietet, während die Kosten pro Stunde deutlich höher sind. Wenn Ihr Workload ein Sub-2B-Modell verwenden kann, ist CPU der empfohlene Standard.
Architecture-specific Optimierungen: Auf Arm64 unterstützen Graviton-Instances der aktuellen Generation SVE2. Erstellen Sie Ihre Inferenz-Engine mit der entsprechenden Flagge für Ihr Ziel. -march Auf x86 unterstützen AMD EPYC-Instances AVX-512, und Intel Xeon-Instances fügen AMX für die Matrixbeschleunigung hinzu. Da Inferenz an die Speicherbandbreite gebunden ist, ermöglichen neuere CPU-Generationen mit mehr DDR5-Speicherkanälen sogar bei gleicher Taktrate schnellere Inferenzen. Bei der Auswahl der Instance-Typen sollten Sie der Speicherbandbreite Vorrang vor der Anzahl der Kerne einräumen.
Größe des Kontextfensters: Bei Klassifizierungs- und Routing-Workloads liegen die Eingaben in der Regel unter 200 Tokens und die Ausgaben bei 2-3 Tokens. Durch die Einstellung eines kleinen Kontextfensters (z. B. 512 Token) anstelle der Standardeinstellung 2048 wird die Speicherauslastung im KV-Cache reduziert und die Latenz pro Anfrage verbessert. Erhöhen Sie das Kontextfenster nur, wenn Ihre Eingaben wirklich lang sind.
Flash Attention: Aktivieren Sie Flash Attention, wenn Ihre Inferenz-Engine dies unterstützt. Flash Attention reduziert den Speicherverbrauch für die Aufmerksamkeitsberechnung, indem die Materialisierung der vollständigen Aufmerksamkeitsmatrix vermieden wird. Bei der CPU ist der Vorteil geringer als bei der GPU, aber er hilft immer noch bei längeren Eingaben.
Tipp
Die Qualitätsverschlechterung von Q4_K_M variiert je nach Modell und Aufgabe. Evaluieren Sie immer anhand Ihres eigenen Datensatzes, bevor Sie es in der Produktion einsetzen.
Bin-packing für dichtes Servieren
Bei klassischen ML- und Embedding-Modellen (in der Regel jeweils <500 MB) ist das Ziel eine maximale Pod-Dichte pro Knoten bei stabiler Latenz am Ende. Zwei Dinge bestimmen, ob Sie das erreichen: genaue Ressourcenanfragen und kontrolliertes Threading.
Basieren Sie requests auf der beobachteten p50-p90-Nutzung unter realistischer Last. Verwenden Sie Goldlöckchen, VPA-Empfehlungen oder Prometheus-Histogramme aus einem Belastungstest. Die Standardwerte sind fast immer in beide Richtungen falsch.
ML-Bibliotheken (PyTorchONNX Runtime, MKL, OpenBLAS) erzeugen so viele Threads, wie sie vCPUs auf dem Knoten sehen können, nicht die CPUs, die dem Pod zugewiesen sind. Auf einem dichten Knoten mit 20 Pods versucht jeder Pod, 32 Threads zu erzeugen. Der Knoten stürzt beim Kontextwechsel und bei p99-Latenzspitzen aus. Korrigieren Sie das explizit:
env: - name: OMP_NUM_THREADS value: "2" # match your cpu request (2000m = 2 threads) - name: MKL_NUM_THREADS value: "2" - name: OPENBLAS_NUM_THREADS value: "2" - name: INTRA_OP_NUM_THREADS # PyTorch / ONNX Runtime value: "2" - name: NUM_INTER_THREADS value: "1" # keep inter-op parallelism minimal
Stellen Sie jeden Wert gleich oder niedriger als Ihre CPU-Anfrage ein. Für Pods mit mehr als 4 Kernen beginnt der Benchmark bei 2-4 Threads. Viele kleine Modelle schneiden aufgrund der Cache-Effizienz mit weniger Threads besser ab. Wenn Sie HPA mit vielen dünnen Pods verwenden, gewinnen 1-2 Threads pro Pod fast immer.
Terminplanung und Kostenoptimierung
Durch die Kombination zweier Methoden lassen sich die Kosten für CPU-Inferenzen deutlich reduzieren: Spot-Instances mit Karpenter-Konsolidierung und Multi-Arch-Container-Images.
Die Konsolidierung von Karpenter eignet sich gut für CPU-Inferenzen, da zustandslose Inferenz-Pods hinter einer Warteschlange oder einem Load Balancer Unterbrechungen problemlos tolerieren. Richten Sie die Konsolidierung so ein, dass sie auf nicht ausgelastete Knoten reagiert, und achten Sie auf ein Budget, das gleichzeitige Unterbrechungen begrenzt (z. B. 20% der Knoten gleichzeitig), um Kapazitätseinbußen beim Herunterfahren zu vermeiden. Mit den nodePool Spezifikationen von Karpenter können Sie Spot und On-Demand Kapazität in einem einzigen Pool kombinieren, wobei Spot die bevorzugte Option und als Ausweichlösung ist. On-Demand
Das Erstellen von Multi-Arch-Images (arm64und) ermöglicht weitere Möglichkeitenamd64. Da beide Architekturen verfügbar sind, kann Karpenter je nach Preis und Verfügbarkeit in Echtzeit aus der gesamten Palette von Instance-Familien (Graviton, AMD, Intel) auswählen. Dies ist besonders nützlich für Spot-Workloads, bei denen die Diversifizierung der Instance-Typen und Architekturen die Häufigkeit von Unterbrechungen reduziert. Verwenden Sie docker buildx eine CI-Pipeline mit plattformübergreifenden Builds, um ein einziges Manifest zu erstellen, das beide Architekturen abdeckt.
Optimierung des Container-Starts
Wenn Karpenter einen neuen Knoten bereitstellt (Hochskalierung, Spot-Ersatz), muss die Container-Laufzeit das Inferenz-Image abrufen, bevor der Pod gestartet werden kann. Bei Inferenzbildern mit mehreren GB kann dies den Start des Pods um 30-60 Sekunden verlängern.
Wir empfehlen, Bottlerocket
Ausführliche Anleitungen zur Konfiguration finden Sie im Abschnitt Leistung dieses Handbuchs, in dem die SOCI-Konfiguration, das Pre-Pulling von EBS-Snapshots und die Cache-Strategien für die Container-Runtime behandelt werden.
Beobachtbarkeit
Ohne Beobachtbarkeit auf der Modellebene skalieren Sie blind. Wir empfehlen, Prometheus-Metriken für jeden Inferenzservice verfügbar zu machen und sie zur Steuerung der KEDA-Skalierung und der operativen Dashboards zu verwenden.
Die meisten Inferenzserver (llama.cpp, vLLM, Triton) stellen Metriken an einem Endpunkt zur Verfügung. TorchServe Prometheus-compatible /metrics Die Namen der Metriken variieren je nach Server, aber die Konzepte sind dieselben.
Die wichtigsten Kennzahlen für die Instrumentierung:
| Metrische Kategorie | Description | Schwellenwert für Warnmeldungen |
|---|---|---|
|
Bearbeitung von Anfragen//während des Fluges |
Anzahl der Anfragen, die derzeit vom Server bearbeitet werden. |
Für die Skalierung verwenden (siehe Abschnitt Autoscaling unten) |
|
Anfragen in die Warteschleifen/zurückgestellt |
Anzahl der Anfragen, die auf einen Verarbeitungs-Slot warten. |
Trigger skalieren. Jede anhaltende Warteschlange bedeutet, dass sich die Latenz bald verschlechtern wird. |
|
Token-Durchsatz |
Tokens, die pro Sekunde generiert werden. |
Warnung, wenn der Durchsatz unter Last unter 50% des Ausgangswerts fällt |
|
Latenz anfordern |
End-to-end Latenz-Histogramm (Prompt-Verarbeitung + Token-Generierung). |
Warnung bei Überschreitung Ihres SLO durch p95 |
|
KV-Cache-Nutzung |
Wie voll der Key-Value-Cache ist (0,0 bis 1,0). Nähert man sich 1,0, bedeutet, dass der Server anfängt, Anfragen abzulehnen oder in eine Warteschlange zu stellen. |
Der Alarm liegt bei über 85% |
|
Container-Speicher |
RSS-Speicher pro Pod ( |
Alarm bei 85% des Grenzwerts |
Autoscaling: Skalieren Sie nach der Tiefe der Warteschlange, nicht nach der CPU-Auslastung
Die CPU-Auslastung ist eine Messgröße für die Sättigung. Sie nimmt ihren Höhepunkt zu, nachdem sich die Latenz bereits verringert hat. Bis die nutzungsbasierte Autoskalierung reagiert, warten die Benutzer bereits.
Die Warteschlangentiefe (Anfragen deferred/waiting) ist ein Frühindikator. Sie steigt, bevor die Latenz abnimmt, da Anfragen erst dann in die Warteschlange gestellt werden, wenn alle Verarbeitungssteckplätze belegt sind. Durch die Skalierung der Warteschlangentiefe werden neue Replikate bereitgestellt, während die vorhandenen weiterhin normal reagieren.
KEDA unterstützt die Kombination mehrerer Metriken zu einer einzigen Skalierungsformel mithilfe von scalingModifiers (erfordert KEDA 2.12+). Das empfohlene Muster für Inferenz-Workloads besteht darin, eingehende Anfragen mit Anfragen in der Warteschlange zu kombinieren, wobei die Queue-Metrik stark gewichtet wird:
advanced: scalingModifiers: formula: "running + (waiting * 10)" target: "25" activationTarget: "5"
Die Formel running + (waiting * 10) bedeutet, dass selbst 3 Anfragen in der Warteschlange die kombinierte Metrik auf 55 erhöhen und damit deutlich über dem Ziel von 25 liegen. Die Skalierung setzt ein, bevor die Latenz nachlässt. Der Wert activationTarget von 5 verhindert, dass Rauschen unnötige Scale-from-Null-Ereignisse auslöst.
Bewertung der Modellqualität für Workloads CPU-First
Die Bereitstellung eines quantisierten SLM auf der CPU ist eine Kosten- und Latenzentscheidung. Es ist nur sinnvoll, wenn das Modell immer noch korrekte, nützliche Ergebnisse für Ihre Arbeitslast liefert.
Kleinere Modelle oder Quantisierung senken die Rechenkosten, können aber die Qualität beeinträchtigen. Die Auswirkungen sind unterschiedlich. Die Workloads, die auf der CPU gut funktionieren (Klassifizierung, Extraktion, Routing, Zusammenfassung, Einbettungen), behalten bei richtiger Quantisierung und Eingabeaufforderung oft eine gute Qualität im B-7B 3-Bereich.
Was muss bewertet werden
Verschiedene Workloads verschlechtern sich auf unterschiedliche Weise:
| Workload | Was kann sich verschlechtern | Was soll gemessen werden |
|---|---|---|
|
Absicht oder Ticketklassifizierung |
Fehler bei mehrdeutigen Eingaben |
Genauigkeit, F1 pro Klasse |
|
Strukturierte Extraktion (JSON) |
Fehlende Felder oder falsches Schema |
Exakte Übereinstimmung, Gültigkeit des Schemas |
|
RAG antwortet |
Halluzinationen oder das Ignorieren des Kontextes |
Treue, Relevanz der Antwort |
|
Zusammenfassung |
Fehlende Fakten oder schlechte Berichterstattung |
ROUGE-L, BertScore, menschliche Bewertung |
|
Weiterleitung durch Agenten |
Das falsche Tool auswählen |
Genauigkeit des Werkzeugs |
|
Einbettungen |
Schlechtere Abrufqualität |
Erinnern Sie sich an @K, NDCG |
Ein praktischer Bewertungsablauf
Wir empfehlen, vor der Produktion eine Qualitätsprüfung durchzuführen, ähnlich wie Sie vor der Auswahl eines Instance-Typs einen Auslastungstest durchführen würden. Der Workflow besteht aus vier Phasen:
-
Evaluationsdatensatz erstellen — Erstellen Sie einen kleinen Bewertungsdatensatz (100-300 beschriftete Beispiele) anhand Ihres tatsächlichen Workloads. Vermeiden Sie generische Benchmarks wie MMLU, die eher allgemeine Argumentation als Ihre eigentliche Aufgabe messen.
-
Ausgangsbasis festlegen — Führen Sie den Datensatz anhand eines vertrauenswürdigen Modells durch (z. B. ein großes LLM, von dem Sie wissen, dass es korrekte Ergebnisse liefert).
-
CPU-Modell testen — Führen Sie denselben Datensatz auf Ihrem quantisierten SLM aus und vergleichen Sie ihn.
-
Auswerten — Definieren Sie vor dem Testen Ihren Qualitätsgrenzwert, z. B. „SLM-Genauigkeit innerhalb von 5 Prozentpunkten vom Ausgangswert“. Der richtige Schwellenwert hängt von der Aufgabe ab: Ein von Menschen überprüfter Klassifikator kann mehr Fehler tolerieren als ein System, das automatische Entscheidungen trifft.
Wie kann die Qualität wiederhergestellt werden
Wenn das Modell schlecht abschneidet, probieren Sie die folgenden Schritte in der Reihenfolge ihres Aufwands aus:
-
Fügen Sie in der Aufforderung einige Beispiele hinzu: Keine Kosten, sofort. Wenn Sie 3 bis 5 beschriftete Beispiele in die Aufforderung aufnehmen, wird häufig die Lücke bei Klassifizierungs- und Extraktionsaufgaben geschlossen.
-
Verwenden Sie ein qualitativ hochwertigeres Quantisierungsformat: Durch die Umstellung von Q4 auf Q8 wird häufig ein Großteil der verlorenen Qualität wiederhergestellt, allerdings auf Kosten von ~2x mehr Speicher und niedrigerem Durchsatz.
-
Hybrid-Routing verwenden: Lassen Sie das SLM einfache Fälle behandeln und schwierige Eingaben an ein größeres Modell senden. Dies ist eine architektonische Änderung, die jedoch Ihre CPU-Kosten für den Großteil des Datenverkehrs niedrig hält.
-
Fine-tune das Modell auf Ihrer Domain: Die teuerste Option, aber die effektivste. Untersuchungen von LoRa Land (ar Xiv:2405.00732
) ergaben, dass fein abgestimmte 7B-Modelle bei den meisten getesteten GPT-4 domänenspezifischen Aufgaben besser abschneiden.