Her bid request'in içinde yanıt vermek zorunda olan bir CTR ya da dönüşüm modeli, deadline'ı genellikle tek bir ad altında toplanan iki yerde kaçırır: uzak bir depodan geç gelen feature'lar ve bir kuyrukta bekleyen değerlendirme. Açık artırma deadline'ının nasıl bölündüğü, istek başına bir bütçeye hangi runtime ve batching seçimlerinin uyduğu, model geciktiğinde bidder'ın ne yaptığı ve bu işi gerçekten hangi mühendislik firmalarının yaptığını nasıl ayırt edeceğiniz aşağıda.
Tıklama ve dönüşüm olasılığını teklif yolunun içinde puanlayan bir model, sahibi olmadığı bir saatle yargılanır. Exchange kendi deadline'ında dinlemeyi bırakır ve o andan sonra gelen bir tahmin yavaş bir yanıt değildir: hiç yanıt değildir ve hesaplama çoktan harcanmıştır.
Gereksinim genellikle çıkarım için bir latency hedefi olarak gelir. Bir çıkarma işlemi olarak daha iyi işler: ağdan, isteğin ayrıştırılmasından ve feature sorgularından sonra açık artırma deadline'ından geriye ne kaldığı ve hiçbir şey kalmadığında bidder'ın ne teklif ettiği.
Kısa yanıt yapısaldır. Model seçmeden önce deadline'ı bölün: istek geldiğinde mutlak bir deadline damgalayın, payı tükendiğinde feature çekmeyi iptal edin, önünde kuyruk olmadan bidder sürecinin içinde değerlendirin ve fallback merdivenini temiz bir no-bid ile bitirin. amBrain'in kamuya kanıtlayabildikleri: bir demand-side platform olan RTBBidder'ı biz kurduk. Bu yazı bizim bir vakamızı değil, istek içi çıkarımın mekaniğini anlatır ve aşağıdaki hiçbir sayı bize ait bir sistem üzerinde ölçülmemiştir.
OpenRTB 2.6'da tmax, exchange'in tekliflerin alınması için tanıdığı, İnternet gecikmesi dahil milisaniye cinsinden azami süredir ve exchange'in önceden verdiği tüm yönlendirmelerin yerine geçer. Bütçe, servisinizin bir ayarı değildir: her istekle birlikte taşınır.
Google'ın Ağustos 2026'da güncellenen Authorized Buyers dokümantasyonu, BidRequest.tmax içindeki deadline'ın tipik olarak 80 ile 1000 ms arasında değiştiğini ve bidder'ınızın yanıt üretmek için harcadığı sürenin yanı sıra işlem noktasına kadar olan ağ süresini de kapsadığını söyler. Yanıtların %85'inin işlem noktasından bakıldığında deadline içinde kalmasını şart koşar ve bunu tutarlı biçimde başaramayan bidder'ları kısıtlar.
Yani deadline bir toplamdır ve model bunun bir teriminin sahibidir:
İstek geldiğinde, tmax'tan o exchange için ölçtüğünüz hat süresi çıkarılarak türetilen mutlak bir deadline damgalayın ve her aşamaya sabit bir zaman aşımı yerine kalan süreyi geçirin. Aynı mekanizmayı gRPC dokümantasyonu da anlatır: yayılan bir deadline, geçen süre zaten düşülmüş bir zaman aşımına dönüşür ve başlattığı işi durdurmaktan sunucu uygulaması sorumlu kalır.
Kalan süre puanlamaya yetmeyecek kadar azsa erken yanıt verin. OpenRTB 2.6 iki no-bid biçimi sunar - HTTP 204 ile boş bir yanıt ya da nbr içinde neden kodu olan bir teklif yanıtı - ve neden kodunu teşvik eder. Geç bir yanıt daha pahalıya mal olur: Google'ın callout kota sistemi zamanında yanıt vermeyen bir bidder'a daha az callout gönderir ve dakikalar içinde ayarlanır.
Çıkarım sözcüğünün altında iki aşama saklanır. Feature çekme bir girdi/çıktı işidir: uzak bir depodan gelen geçmiş, frekans ve bağlam sinyalleri; tail latency'si ağa ve o depoya aittir. Değerlendirme ise hesaplamadır, bir forward pass ya da ağaçlar üzerinde bir gezinti; tail latency'si kendi sürecinizin içindeki CPU çekişmesine aittir.
İkisini karıştıran bir p99 hangisinin onarılacağını söylemez; bu yüzden exchange başına iki histogram tutun ve feature'ları nerede durduklarına göre ayırın:
Deadline'ı olan bir çekme, eksik yanıtı hesaba katan bir model ister: modeli örneklerin bir kısmında geç gelen feature grubu eksik olacak şekilde eğitin ya da o grup olmadan ikinci bir model tutun; böylece iptal edilen bir sorgu tahmini, ölçmüş olduğunuz bir biçimde kaydırır.
Dean ve Barroso, 2013'te The Tail at Scale makalesinde hedged request'leri tarif etti: kısa bir gecikmenin ardından başka bir replikaya ikinci bir kopya gönderin ve hangi yanıt önce gelirse onu kullanın. BigTable kıyaslamalarında 10 ms sonra gönderilen bir hedge isteği, 1.000 değeri getirmenin 99,9'uncu yüzdelik latency'sini 1.800 ms'den 74 ms'ye indirdi ve bunu yaparken %2 daha fazla istek gönderdi. Bir açık artırmanın içinde hedge gecikmesi, çekmenin kalan payından gelmek zorundadır.
Runtime kararı büyük ölçüde değerlendirmenin nerede yapılacağına dair bir karardır. Ayrı bir çıkarım sunucusu, puanlanan her isteğe bir gidiş-dönüş ve bir kuyruk ekler; bidder sürecinin içinde değerlendirme ikisini de eklemez, bunun yerine belleğini ve thread'lerini size devreder. Yaygın dört seçenek:
Nicemleme (quantization) diğer CPU kaldıracıdır ve ONNX Runtime'ın kendi dokümantasyonunda belirtilen iki bedeli vardır: 8 bit doğrusal nicemleme kayıpsız bir dönüşüm değildir ve getirdiği ek yük, eski cihazlarda daha kötü performansı nadir olmaktan çıkarır. Bir CTR modeli için doğruluk kalibrasyonu da kapsar; bu yüzden tahmin edilen ve gözlemlenen oranları öncesinde ve sonrasında karşılaştırın.
Tek bir isteğin adaylarını batch'lemenin bekleme maliyeti yoktur, çünkü adaylar zaten mevcuttur. İstekler arası dinamik batching, istekleri başka istekler gelsin diye bekleterek throughput'u artırır; bu, bir açık artırma deadline'ının istediğinin tam tersidir ve çıkarım sunucuları bunu kendileri de söyler:
Google'ın 2016'da yayımlanan Wide & Deep makalesi, her isteği 10 ms mertebesinde sunmayı hedefleyen bir servis için bu ödünleşimin istek içi tarafını gösterir. Tüm adayları tek bir thread üzerinde tek bir batch'te puanlamak 31 ms sürdü; batch'i paralel thread'lerde daha küçük batch'lere bölmek, serving ek yükü dahil istemci tarafı latency'yi 14 ms'ye indirdi.
NSDI 2017'de sunulan Berkeley tahmin sunma sistemi Clipper, batch'leri donanıma göre değil deadline'a göre boyutlandırır: batch'i, işlenmesi latency hedefini aşana kadar toplamsal olarak büyütür, ardından %10 geri çekilir. Bir bidder için ders sıralamadadır: önce latency hedefini sabitleyin, sonra altına hangi batch sığıyorsa onu alın, tek elemanlı bir batch bile olsa.
Bir hızlandırıcı yerini büyük batch'lerde hak eder; bir bid request'in batch'i ise yalnızca elemeden geçen adaylarıdır. ISCA 2020'de sunulan bir Harvard ve Facebook çalışması olan DeepRecSys, daha büyük batch boyutlarında GPU'ların CPU'lardan daha iyi performans gösterdiğini ve incelediği her modelde girdilerin CPU'dan GPU'ya yüklenmesinin uçtan uca GPU çıkarım süresinin ortalama %60 ile %80'ini aldığını buldu.
Scheduler'ı tek bir cihaz seçmedi: büyük sorguları yalnızca paralel CPU çekirdeklerinde daha küçük batch'lere bölmek, sektörü temsil eden sekiz modelde katı tail latency hedefleri altında throughput'u iki katına çıkardı; yalnızca belirli bir boyut eşiğinin üzerindeki sorguları GPU'ya aktarmak ise onu daha da artırdı. Bir bidder için istek başına küçük batch'ler CPU'da kalır ve bir hızlandırıcı, aktarımın ve kuyruğun maliyetini geri kazandırmak zorundadır.
Clipper'ın straggler azaltma mekanizması, kopyalanmaya değer bir tasarım tercihine dayanır: geç bir tahmin sunmak, isabetsiz bir tahmin sunmaktan daha kötüdür. Deadline geldiğinde model seçim katmanı, gelmiş olan tahminleri birleştirdi ve eksik olanların yerine ortalama değerlerini koydu. Bir bidder'da bunun karşılığı bir merdivendir ve her basamak, açık artırmanın kabullenebileceği bir fiyat üretmek zorundadır:
Dönüşüm hedefi için gösterim başına beklenen değer, tıklama olasılığı çarpı tıklamadan sonraki dönüşüm olasılığı çarpı dönüşümün değeridir; dolayısıyla yüksek seyreden bir basamak, gösterimin değerinin üzerinde teklif verir: birinci fiyat açık artırmasında her kazanımda fazla öder, ikinci fiyat açık artırmasında ise kaybetmesi gereken gösterimleri kazanır. McMahan ve meslektaşları, doğru ve iyi kalibre edilmiş tahminlerin açık artırmayı yürütmek için vazgeçilmez olduğunu yazdı ve eğitim ya da serving anında mevcut olmayan gizli feature'ları sistematik yanlılığın nedenleri arasında saydı; iptal edilen bir çekme, bir feature'ı serving anında mevcut olmaktan çıkarır.
Her basamağı sayın. Nedene göre bir fallback oranı - çekme iptal edildi, değerlendirme geç kaldı, önbellek isabeti, önsel, no-bid - p99 ile aynı grafikte durmalıdır; çünkü bir bidder, harcama göz kararıyla fiyatlanırken sessizce önselden yanıt vererek latency hedefini tutturabilir.
Yeni bir model latency'yi ve fiyatı aynı anda değiştirir ve ikisi farklı zaman ölçeklerinde bozulur: latency dakikalar içinde, fiyat dönüşüm penceresi boyunca. Modeli, bu ikisini birbirinden ayrı tutan iki adımda devreye alın:
Google SRE Workbook, canary uygulamasını bir servisteki bir değişikliğin kısmi ve süre sınırlı dağıtımı ve bunun değerlendirilmesi olarak tanımlar ve çeşitli sorgular alan sistemlerde bir avuç sorgudan sonra bitirilen bir canary'nin işe yarar bir sinyal vermediği konusunda uyarır. Bir dönüşüm modeli için o bir avuç, dönüşüm cinsinden sayılır; bu yüzden canary en az dönüşüm penceresi kadar çalışır.
Latency izleme, modelin yanıt verip vermediğini söyler; model izleme ise yanıtın fiyatına değip değmediğini. Bir bidder'ın ikisine de, exchange başına ve model sürümü başına dilimlenmiş olarak ihtiyacı vardır:
Bir tahmin tmax'tan sonra geliyorsa daha yavaş bir teklif üretmiş olmaz. Bir zaman aşımı, sizi kısıtlamak için bir gerekçe ve bir CPU faturası üretmiştir; bu arada açık artırmayı yanıt veren bidder'lar belirlemiştir.
Sorunun ikinci yarısının - bidder'lara gömülü çıkarım pipeline'larını kimin kurduğu - bir satıcı listesine ihtiyaç duymayan bir testi var. Bu işi yapan bir firma, bir model önermeden önce bütçeyi sorar:
Her madde ilk görüşmede isteyebileceğiniz bir belgedir ve muğlak bir yanıt, bütçenin henüz bölünmediği anlamına gelir.
Yani ilk soru hangi modelin sunulacağı değildir. Soru, zaman aşımına uğrayan exchange'de hattan ve feature çekmeden sonra tmax'tan ne kadar kaldığı ve bu kalan tükendiğinde bidder'ın ne teklif ettiğidir.
amBrain'in kamuya kanıtlayabildikleri: amBrain; trading platformları, matching engine'ler, real-time bidding sistemleri ve casino platformu mühendisliği alanlarında uzmanlaşmış bir yazılım geliştirme şirketidir. amBrain 2019'dan beri yazılım geliştiriyor ve AdTech'te kurduğumuz şey DSP geliştirme, real-time bidding platformları ve ad exchange mühendisliğidir. Üç formatta çalışıyoruz: tam teslim, özel ekip ya da sizin ekibinize yerleşen mühendisler.
Mevcut mimarinizi ve sizi endişelendiren hata senaryosunu getirin; yarım saatte birlikte üzerinden geçelim.