Çıkarım servis desenleri ve gecikme bütçesi
Toplu, çevrimiçi ve akış çıkarım desenlerinin hangi kısıttan doğduğunu, gecikme bütçesinin bileşenlere nasıl bölüneceğini ve bütçe aşıldığında hangi kaldıracın neyden feragat ettiğini öğretir.
Önkoşul: MLOps, Machine Learning
BU DERSİN SONUNDA
- Toplu, çevrimiçi ve akış desenleri arasında tazelik ve gecikme ödünleşimiyle seçim yapmak
- Uçtan uca gecikme bütçesini ölçülebilir bileşenlere bölmek
- Bütçe aşıldığında önbellek, küçültme ve kademelendirme kaldıraçlarını feragat ettikleri şeye göre seçmek
- Zaman aşımı ve yedek cevap davranışını önceden tanımlamak
- 1
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 5
Proje
Rotadaki projeye katkı
Kısa cevap
Servis deseni modelden değil, tahmini kimin ne zaman istediğinden çıkar. Üç temel desen vardır: toplu (önceden hesapla, sorulduğunda oku), çevrimiçi istek-cevap (istendiği anda hesapla) ve akış (olay geldikçe hesapla). Kararı üç şey belirler — gecikme bütçesi, girdinin ne zaman hazır olduğu ve tahminin ne kadar çabuk bayatladığı. Çoğu üretim sistemi sonunda karma bir desende dengelenir.
Teori: üç desen, üç kısıt#
Toplu çıkarımda tahmin, istekten önce hesaplanır ve bir anahtar-değer deposuna yazılır. Okuma gecikmesi bir aramaya iner, model gecikmesi kullanıcının yolundan tamamen çıkar. Bedeli iki kalemde ödenir: tahmin hesaplandığı andaki girdiyle sınırlıdır, yani bayatlar; ve tüm anahtar uzayı için hesap yapmak yalnızca küçük bir kısmı sorulacaksa israftır.
Çevrimiçi çıkarımda girdi istek anında oluşur — sepetin o anki içeriği, formun doldurulmuş alanları, oturum davranışı. Tahmin tazedir ama gecikme artık sizin sorununuzdur: özellik okuma, ön işleme ve modelin ileri geçişi aynı bütçeye sığmak zorundadır. Akış deseninde ise tetikleyici bir olaydır; gecikme bütçesi gevşer ama sıra bozulması, aynı olayın tekrar işlenmesi ve geç gelen olaylar yeni bir doğruluk sorunu sınıfı açar.
Desen seçimi#
| Desen | Gecikme | Tazelik | Uygun olduğu yer | Ana risk |
|---|---|---|---|---|
| Toplu (önceden hesapla) | Okuma kadar | Son koşu kadar eski | Anahtar kümesi sınırlı, girdi gün içinde değişmiyor | Bayatlama ve hiç sorulmayan tahminler için harcanan hesap |
| Çevrimiçi (istek-cevap) | Uçtan uca bütçe içinde | Anlık | Girdi istek anında oluşuyor | Kuyruk gecikmesi, kapasite ve bağımlılık zinciri |
| Akış (olay tetikli) | Saniyeler-dakikalar | Olay kadar taze | Olay akışı var, cevap hemen ekranda görünmüyor | Sıra bozulması, tekrar işleme, geç gelen olay |
| Karma (önceden hesapla, olayla tazele) | Okuma kadar | Tetikleyici olay kadar güncel | Skor ve öneri senaryolarının çoğu | İki yolun birbirinden ayrışması |
Gecikme bütçesi nasıl yazılır#
Bütçe ortalamayla değil kuyruk yüzdelikleriyle yazılır; kullanıcının hissettiği şey ortalama değil en kötü isteklerdir. Bir ekran birden çok servise soruyorsa bu kuyruklar toplanır ve tek tek makul görünen gecikmeler birleşince bütçeyi aşar. Bütçeyi bileşenlere bölün ve hangisinin baskın olduğunu ölçmeden tahmin etmeyin: pratikte baskın bileşen çoğu zaman model değil, özellik okuma veya seri hale getirmedir.
- 01Ağ ve kuyrukta bekleme: istemciden servise gidiş ve dönüş.
- 02Özellik okuma: kaç ayrı çağrı yapılıyor, paralel mi, biri yavaşladığında ne oluyor?
- 03Ön işleme: eğitimle aynı kod mu çalışıyor, satır başına mı yoksa toplu mu işliyor?
- 04Modelin ileri geçişi: yığın boyutu, iş parçacığı sayısı, hangi donanım.
- 05Son işleme ve iş kuralları: eşik uygulama, filtreleme, gerekçe üretimi.
- 06Zaman aşımı ve yedek cevap: bütçe aşıldığında ne döndürüleceği önceden tanımlı mı?
Bütçeye sığmıyorsa#
Üç kaldıraç vardır ve üçü farklı şeyden feragat eder. Birincisi hesabı kullanıcının yolundan çıkarmak: sık sorulan girdileri önbelleğe almak veya önceden hesaplamak — tazelikten feragat edersiniz. İkincisi modeli küçültmek: nicemleme ağırlıkları daha düşük hassasiyette tutarak bellek ayak izini ve bellek bant genişliği ihtiyacını düşürür, karşılığında bir miktar kaliteden feragat edersiniz; damıtma ise küçük bir modeli büyüğün davranışını taklit etmeye eğitir ve eğitim maliyeti ister. Üçüncüsü kademelendirmek: ucuz bir model isteklerin çoğunu kesin biçimde çözer, yalnızca kararsız kalan dilim pahalı modele gider — bu, ortalama maliyeti düşürür ama iki modelin tutarlılığını yönetmeniz gerekir.
Karar akışı#
- 1Tüketiciyi tanımla
Cevabı kim, hangi ekranda, ne kadar beklemeye razı olarak görecek?
- 2Girdinin hazır olma anını bul
Girdi dün de biliniyorsa toplu yol açıktır; yalnızca istek anında oluşuyorsa değildir.
- 3Bayatlama süresini yaz
Tahmin ne kadar süre geçerli kalır? Bu süre koşu aralığından uzunsa toplu desen yeterlidir.
- 4Bütçeyi böl ve ölç
En büyük bileşeni bulmadan optimizasyona başlamayın; ölçüm olmadan yapılan iyileştirme genelde yanlış yere gider.
- 5Bozulma davranışını tasarla
Model zamanında cevap veremezse ne dönülür: son bilinen skor, kural tabanlı yedek, yoksa açık hata mı?
Sık yapılan hata#
En pahalı hata, toplu yolun yeteceği bir problem için çevrimiçi servis kurmaktır: ekip bir servis, bir ölçekleme politikası ve bir nöbet sorumluluğu edinir, karşılığında kazandığı tazeliği kimse fark etmez. İkinci hata yedek cevabı tasarlamamaktır; bağımlılık zincirindeki tek bir yavaşlama, model cevap veremediği anda tüm ekranı düşürür. Üçüncüsü, çevrimiçi özellik hesabını eğitimden ayrı yazmaktır — paketleme dersinde gördüğünüz eğitim-servis sapması, gecikme baskısı altında alınan kısayollarla burada çok daha kolay oluşur.
LAB · UYGULAMALI ALIŞTIRMA
Gecikme bütçesini bileşenlere bölün
- 1Bir tahmin uç noktası seçin (kendi makinenizde çalışan küçük bir yerel servis de olur) ve tüketicinin kabul ettiği üst sınırı tek cümleyle yazın.
- 2İstek yolunu beş bileşene ayırın: özellik okuma, ön işleme, modelin ileri geçişi, son işleme, seri hale getirme. Her bileşenin başına ve sonuna zaman damgası koyun.
- 3Aynı girdi kümesini arka arkaya çok kez koşturup her bileşen için medyan ve en kötü yüzdelik değerleri kaydedin; ilk koşuları ısınma sayıp dışarıda bırakın.
- 4En büyük bileşeni belirleyin ve yalnızca ona tek bir değişiklik uygulayın: önbellek, toplu tahmin, daha küçük model veya özellik çağrılarını paralelleştirme.
- 5Ölçümü aynı koşullarda tekrarlayın, tabloyu öncesi-sonrası olarak yazın ve kazancın hangi ödünleşimle geldiğini (tazelik, kalite, karmaşıklık) altına not edin.
- 6Zaman aşımı senaryosunu deneyin: özellik kaynağını kasten geciktirip servisin ne döndürdüğünü gözleyin ve beklenen yedek davranışı yazılı hale getirin.
Beklenen çıktı
Bileşen bazlı bir gecikme ölçüm tablosu, uygulanan tek değişikliğin öncesi-sonrası karşılaştırması ve yazılı bir zaman aşımı yedek davranışı.
Sık sorulan sorular
Çevrimiçi serviste yığınlama kullanılabilir mi?
Evet, mikro yığınlama biçiminde: kısa bir pencere boyunca gelen istekler tek ileri geçişte işlenir. Verimi artırır ama tek bir isteğin gecikmesine bekleme süresi ekler. Bütçeniz sıkıysa pencere boyu bütçenin küçük bir kısmını aşmamalı; bütçe gevşekse verim kazancı ciddi olabilir.
Hızlandırıcı donanım her zaman daha mı hızlı?
Hayır. Hızlandırıcılar verim için tasarlanmıştır; küçük bir model ve tek bir istek söz konusuysa veri aktarımı ve çağrı yükü baskın gelip işlemciden daha yavaş bir sonuç bile verebilir. Kararı tek istek gecikmesi ve saniyedeki istek sayısını birlikte ölçerek verin.
Önbellek koyarsam tahminler bayatlar mı?
Anahtar tasarımına bağlı. Tahmini etkileyen tüm girdiler anahtarın parçası değilse önbellek, değişmiş bir duruma eski cevabı sunar ve bu bayatlamadan beter bir hatadır. Anahtarı eksiksiz tanımlayın, bir yaşam süresi verin ve girdi değiştiğinde geçersizleştirmeyi açıkça tetikleyin.
LEARN
Machine Learning Engineer rotasına devam et
Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.
