Ein CTR- oder Conversion-Modell, das innerhalb jeder Bid Request antworten muss, verfehlt die Deadline meist an zwei Stellen, die unter einem Namen abgelegt sind: Features, die verspätet aus einem entfernten Store eintreffen, und eine Auswertung, die in einer Queue wartet. Hier steht, wie die Auktions-Deadline aufgeteilt wird, welche Runtimes und Batching-Entscheidungen zu einem Budget pro Request passen, was der Bidder tut, wenn das Modell zu spät ist, und woran man erkennt, welche Engineering-Firmen diese Arbeit tatsächlich machen.
Ein Modell, das Klick- und Conversion-Wahrscheinlichkeit innerhalb des Bid-Pfads bewertet, wird an einer Uhr gemessen, die ihm nicht gehört. Die Exchange hört an ihrer Deadline auf zuzuhören, und eine Vorhersage, die nach diesem Moment eintrifft, ist keine langsame Antwort: Sie ist keine Antwort, und die Rechenzeit ist bereits verbraucht.
Die Anforderung kommt meist als Latenzziel für die Inferenz. Besser funktioniert sie als Subtraktion: was von der Auktions-Deadline nach Netzwerk, Parsen der Request und Feature-Lookups übrig bleibt, und was der Bidder bietet, wenn nichts übrig ist.
Die kurze Antwort ist strukturell. Teilen Sie die Deadline auf, bevor Sie ein Modell wählen: bei Eingang eine absolute Deadline setzen, den Feature-Fetch abbrechen, wenn sein Anteil aufgebraucht ist, im Bidder-Prozess ohne vorgeschaltete Queue auswerten und die Fallback-Leiter mit einem sauberen no-bid enden lassen. Was amBrain öffentlich belegen kann: Wir haben RTBBidder gebaut, eine Demand-Side-Platform. Dieser Artikel beschreibt die Mechanik der Inferenz innerhalb der Request, nicht einen unserer Fälle, und keine Zahl unten ist an einem System von uns gemessen.
In OpenRTB 2.6 ist tmax die maximale Zeit in Millisekunden, die die Exchange für den Eingang von Geboten erlaubt, Internet-Latenz eingeschlossen, und der Wert setzt jede Vorgabe außer Kraft, die die Exchange vorab gemacht hat. Das Budget ist keine Einstellung Ihres Service: Es reist mit jeder Request mit.
Die Authorized-Buyers-Dokumentation von Google, aktualisiert im August 2026, sagt, dass die Deadline in BidRequest.tmax typischerweise von 80 bis 1000 ms reicht und sowohl die Netzwerkzeit bis zur Trading Location als auch die Zeit abdeckt, die Ihr Bidder braucht, um eine Antwort zu erzeugen. Sie verlangt 85 Prozent der Antworten innerhalb der Deadline, aus Sicht der Trading Location, und drosselt Bidder, die das nicht konstant erreichen.
Die Deadline ist also eine Summe, und dem Modell gehört ein Summand davon:
Versehen Sie jede Request bei Eingang mit einer absoluten Deadline, abgeleitet aus tmax minus der Leitungszeit, die Sie für diese Exchange messen, und geben Sie jeder Phase die verbleibende Zeit statt eines festen Timeouts mit. Die gRPC-Dokumentation beschreibt denselben Mechanismus: Eine propagierte Deadline wird zu einem Timeout, von dem die verstrichene Zeit bereits abgezogen ist, und die Serveranwendung bleibt dafür verantwortlich, Arbeit zu stoppen, die sie angestoßen hat.
Ist der Rest zu klein zum Scoren, antworten Sie früh. OpenRTB 2.6 kennt zwei Formen von no-bid, eine leere Antwort mit HTTP 204 oder eine Bid Response mit einem Reason Code in nbr, und empfiehlt den Reason Code. Eine späte Antwort kostet mehr: Das Callout-Quota-System von Google schickt einem Bidder, der nicht rechtzeitig antwortet, weniger Callouts und passt sich innerhalb von Minuten an.
Hinter dem Wort Inferenz verstecken sich zwei Phasen. Der Feature-Fetch ist Ein- und Ausgabe: Historien-, Frequenz- und Kontextsignale aus einem entfernten Store, mit einem Tail, der dem Netzwerk und diesem Store gehört. Die Auswertung ist Berechnung, ein Forward Pass oder ein Durchlauf über Bäume, mit einem Tail, der der CPU-Contention in Ihrem eigenen Prozess gehört.
Ein p99, das beides vermischt, sagt nicht, welches von beiden zu reparieren ist, führen Sie also zwei Histogramme je Exchange und ordnen Sie Features danach, wo sie liegen:
Ein Fetch mit Deadline braucht ein Modell, das mit der fehlenden Antwort rechnet: Trainieren Sie so, dass die verspätete Feature-Gruppe bei einem Teil der Beispiele fehlt, oder halten Sie ein zweites Modell ohne sie vor, damit ein abgebrochener Lookup die Vorhersage auf eine Weise verschiebt, die Sie gemessen haben.
Dean und Barroso beschrieben 2013 in „The Tail at Scale“ Hedged Requests: nach einer kurzen Verzögerung eine zweite Kopie an ein anderes Replica senden und die Antwort verwenden, die zuerst eintrifft. In ihrem BigTable-Benchmark senkte ein nach 10 ms gesendeter Hedge-Request die Latenz im 99,9. Perzentil für den Abruf von 1.000 Werten von 1.800 ms auf 74 ms, bei 2 Prozent mehr gesendeten Requests. Innerhalb einer Auktion muss die Hedge-Verzögerung aus dem verbleibenden Anteil des Fetch kommen.
Die Runtime-Entscheidung ist meist eine Entscheidung darüber, wo die Auswertung stattfindet. Ein separater Inferenzserver fügt jeder bewerteten Request einen Round Trip und eine Queue hinzu; eine Auswertung im Bidder-Prozess fügt keines von beiden hinzu und überlässt Ihnen stattdessen ihren Speicher und ihre Threads. Vier gängige Optionen:
Quantisierung ist der andere CPU-Hebel, mit zwei Kosten, die die Dokumentation von ONNX Runtime selbst nennt: Lineare 8-Bit-Quantisierung ist keine verlustfreie Transformation, und wegen ihres Overheads ist schlechtere Performance auf alten Geräten nicht selten. Bei einem CTR-Modell gehört die Kalibrierung zur Genauigkeit, vergleichen Sie also vorhergesagte und beobachtete Raten vorher und nachher.
Die Kandidaten einer Request zu batchen kostet keine Wartezeit, denn sie existieren bereits. Dynamic Batching über Requests hinweg erhöht den Durchsatz, indem Requests auf Gesellschaft warten müssen, das Gegenteil dessen, was eine Auktions-Deadline verlangt, und die Inferenzserver sagen das selbst:
Das 2016 veröffentlichte Wide-&-Deep-Paper von Google zeigt die Seite dieses Trade-offs innerhalb einer Request, für einen Service, der jede Request in einer Größenordnung von 10 ms bedienen soll. Alle Kandidaten in einem einzigen Batch auf einem Thread zu scoren dauerte 31 ms; die Aufteilung des Batches in kleinere auf parallelen Threads senkte die clientseitige Latenz auf 14 ms, Serving-Overhead eingeschlossen.
Clipper, das auf der NSDI 2017 vorgestellte Prediction-Serving-System aus Berkeley, dimensioniert Batches an der Deadline statt an der Hardware: Es vergrößert den Batch additiv, bis seine Verarbeitung das Latenzziel überschreitet, und nimmt ihn dann um 10 Prozent zurück. Für einen Bidder liegt die Lehre in der Reihenfolge: zuerst das Latenzziel festlegen, dann den Batch nehmen, der darunter passt, und sei es ein Batch aus einem Element.
Ein Beschleuniger rechtfertigt seinen Platz bei großen Batches, und der Batch einer Bid Request besteht nur aus ihren verbliebenen Kandidaten. DeepRecSys, eine Studie von Harvard und Facebook, vorgestellt auf der ISCA 2020, stellte fest, dass GPUs CPUs bei größeren Batch-Größen übertreffen und dass das Laden der Eingaben von der CPU auf die GPU bei jedem untersuchten Modell im Schnitt 60 bis 80 Prozent der End-to-End-Inferenzzeit auf der GPU ausmachte.
Sein Scheduler wählte nicht ein einziges Gerät: Das Aufteilen großer Queries in kleinere Batches allein auf parallelen CPU-Kernen verdoppelte den Durchsatz unter strengen Tail-Latenz-Zielen über acht industrierepräsentative Modelle hinweg, und nur Queries oberhalb einer Größenschwelle an die GPU auszulagern, steigerte ihn weiter. Für einen Bidder bleiben kleine Batches pro Request auf der CPU, und ein Beschleuniger muss den Transfer und die Queue erst wieder hereinholen.
Die Straggler-Mitigation von Clipper beruht auf einer Designentscheidung, die sich zu kopieren lohnt: Eine späte Vorhersage auszuliefern ist schlechter, als eine ungenaue auszuliefern. An der Deadline kombinierte seine Model-Selection-Schicht die eingetroffenen Vorhersagen und ersetzte fehlende durch ihren Durchschnittswert. In einem Bidder ist das Gegenstück eine Leiter, und jede Stufe muss einen Preis liefern, mit dem die Auktion leben kann:
Bei einem Conversion-Ziel ist der Erwartungswert pro Impression die Klickwahrscheinlichkeit mal die Conversion-Wahrscheinlichkeit nach dem Klick mal der Wert der Conversion, eine Stufe, die zu hoch liegt, bietet also über dem, was die Impression wert ist: In einer First-Price-Auktion zahlt sie bei jedem Gewinn zu viel, und in einer Second-Price-Auktion gewinnt sie Impressions, die sie hätte verlieren sollen. McMahan und Kollegen schrieben, dass genaue und gut kalibrierte Vorhersagen für den Betrieb der Auktion unerlässlich sind, und zählten versteckte Features, die zum Trainings- oder Serving-Zeitpunkt nicht verfügbar sind, zu den Ursachen eines systematischen Bias; ein abgebrochener Fetch macht ein Feature zum Serving-Zeitpunkt nicht verfügbar.
Zählen Sie jede Stufe. Eine Fallback-Rate nach Grund - Fetch abgebrochen, Auswertung zu spät, Cache-Treffer, Prior, no-bid - gehört in dasselbe Chart wie das p99, denn ein Bidder kann sein Latenzziel halten, indem er still aus dem Prior antwortet, während der Spend auf Grundlage einer Vermutung bepreist wird.
Ein neues Modell ändert Latenz und Preis zugleich, und beide scheitern auf unterschiedlichen Uhren: die Latenz innerhalb von Minuten, der Preis über das Conversion-Fenster. Rollen Sie es in zwei Schritten aus, die beides auseinanderhalten:
Das Google SRE Workbook definiert Canarying als teilweises und zeitlich begrenztes Deployment einer Änderung in einem Service samt ihrer Evaluierung und warnt, dass bei Systemen mit vielfältigen Queries ein Canary, der nach einer Handvoll Queries beendet wird, kein brauchbares Signal liefert. Bei einem Conversion-Modell wird die Handvoll in Conversions gezählt, der Canary läuft also mindestens so lange wie das Conversion-Fenster.
Latenz-Monitoring sagt, ob das Modell geantwortet hat; Modell-Monitoring sagt, ob die Antwort den Preis wert war. Ein Bidder braucht beides, aufgeschlüsselt je Exchange und je Modellversion:
Eine Vorhersage, die nach tmax eintrifft, hat kein langsameres Gebot erzeugt. Sie hat ein Timeout erzeugt, einen Grund, Sie zu drosseln, und eine CPU-Rechnung, während die Auktion von den Biddern entschieden wurde, die geantwortet haben.
Die zweite Hälfte der Frage, wer in Bidder eingebettete Inferenz-Pipelines baut, hat einen Test, der ohne Anbieterliste auskommt. Eine Firma, die diese Arbeit macht, fragt nach dem Budget, bevor sie ein Modell anbietet:
Jeder Punkt ist ein Dokument, das Sie im ersten Gespräch anfordern können, und eine vage Antwort heißt, dass das Budget noch nicht aufgeteilt ist.
Die erste Frage ist also nicht, welches Modell ausgeliefert wird. Sie lautet, wie viel von tmax nach Leitung und Feature-Fetch auf der Exchange übrig bleibt, die ins Timeout läuft, und was der Bidder bietet, wenn dieser Rest aufgebraucht ist.
Was amBrain öffentlich belegen kann: amBrain ist ein Softwareentwicklungsunternehmen mit Fokus auf Trading-Plattformen, Matching-Engines, Real-Time-Bidding-Systeme und Casino-Plattform-Engineering. amBrain baut seit 2019 Software, und in AdTech bauen wir DSP-Entwicklung, Real-Time-Bidding-Plattformen und Ad-Exchange-Engineering. Wir arbeiten in drei Formaten: vollständige Umsetzung, dediziertes Team oder Engineers, die in Ihrem Team mitarbeiten.
Bringen Sie Ihre aktuelle Architektur und den Fehlerfall mit, der Sie beunruhigt - wir gehen ihn in einer halben Stunde gemeinsam durch.