---
title: 'Kenar ve Aygıt Üzerinde Çıkarım'
source: 'https://academia.sh/tr/kurslar/mlops-temelleri/kenar-ve-aygit-uzerinde-cikarim'
course: 'MLOps Temelleri'
language: tr
updated: '2026-08-17T18:08:53+00:00'
license: 'CC BY-SA 4.0'
---

# Kenar ve Aygıt Üzerinde Çıkarım

Modeli isteğin kaynağına taşımanın isabetten ne götürdüğünün ve hangi görevde önce götürdüğünün sayılması: aygıta yazılan sayı beştir, bırakılan şey bölge özniteliğini üreten 341 ile 539 satırlık geçmiştir ve o geçmiş bırakıldığında iki sınıflı görev 0,8067'de kalırken üç kademeli görev 0,4833'ten 0,4733'e iner. Nicemleme süpürmesi aynı sırayı verir: iki sınıflı görev seviye 4'e kadar tek bir tahmin oynatmaz, üç kademeli görev seviye 16'da iki ve seviye 8'de beş tahmin oynatır, seviye 2'de ikisi 0,3833 ile 0,2250'ye çöker. Kenarda çalıştırmanın kazandırdığı bağımsızlık doğru yanıt sayısıyla ölçülür: ağ kesintisi payı 0,20'ye çıktığında merkezî kurulumun doğru yanıtı 484'ten 391'e ve 290'dan 234'e iner, kenardaki 484 ile 284'te sabit kalır; iki kurulumun eşitlendiği kesinti payı iki sınıflı görevde 0,0000, üç kademeli görevde 0,0207'dir. Ders kursun kapanışıdır ve on iki dersin sayılarını tek tabloda toplar.

Bir önceki ders isteği sunucu tarafında ucuzlattı: toplu boyut iki yüze çıktığında tahmin başına
okunan satır 22,00'ye indi. Beş derste model paketlendi, yerleştirildi ve ölçeklendi; beşinin altında
aynı sessiz varsayım duruyordu — model, isteğin doğduğu yerden **ağ üzerinden** erişilebilir bir
uçtadır. O ağ koptuğunda tahmin başına maliyet tanımsızdır, çünkü tahmin yoktur.

Bu ders modeli isteğin kaynağına taşır. Taşınacak şey küçüktür: üç ağırlık. Taşınamayan şey o
ağırlıkların **çarptığı** özniteliği üreten geçmiştir. Ders önce onu sayar, sonra geçmişin
bırakılmasının ve **nicemlemenin (quantisation)** iki görevden ne götürdüğünü ölçer, en sonunda
kenarın bağımsızlığını yanıtlanan istek olarak yazar.

- **ED55.** Kaynak, hat, model ve küçültme adımları **kurgudur**; hiçbir kenar aygıtı, çalışma
  zamanı, hızlandırıcı donanım ya da bulut servisi adı yazılmaz. Tohum 20260218.
- **ED56.** Etiket dengesizdir: `{0: 1752, 1: 448}`, **taban sınıf oranı 0,7964**; sınama kümesi
  600 satır, adım **0,0017**.
- **ED57.** Nicemleme ve **damıtma (distillation)** yordamı Model API'leri ile Uygulama Geliştirme
  kursunda ölçüldü; **tekrarlanmaz**, sayıları **girdidir**.
- **ED58.** Küçültme iki adımdır: bölge geçmişi aygıtta olmadığı için `bolge_ort` düşer ve model
  dokuz adaylık ızgarada yeniden eğitilir; ardından öznitelikler `seviye` ayrı değere indirgenir.
- **ED59.** İki görev ölçülür: **görev A** iki sınıflı (eşik 40), **görev B** üç kademeli (eşik 20
  ve 40).
- **ED60.** Ağ kesintisi payı `p`, isteklerin `p` payının merkezden **hiç yanıt alamaması**
  demektir; kenar **tamamını** yanıtlar. İkisini ortak birimle karşılaştıran tek sayı **doğru yanıt
  sayısıdır** (yanıtlanan istek çarpı isabet).

## Aygıta Taşınamayan Geçmiş

İlk blok kaynağı, hattı ve iki görevi kurar; iki modeli ayrı eğitir ve seviyeyi süpürür.

```python
# KURGUDUR. Olcum aginin sayac okumalari , hattin ilk uc asamasi , oznitelik
# yolu , uc agirlikli esik modeli ve kucultme adimlari ders icinde uretilir;
# hicbir kenar aygiti , calisma zamani ya da donanim cagrilmaz. Tohum 20260218.
TOHUM, M32 = 20260218, 0xFFFFFFFF


def uretec(t):
    x = ((t ^ (t >> 16)) * 2246822507) & M32
    x = ((x ^ (x >> 13)) * 3266489909) & M32
    s = [(x ^ (x >> 16)) & M32]

    def sonraki():
        s[0] = (s[0] * 1664525 + 1013904223) & M32
        return s[0] / 4294967296
    return sonraki


BOLGE = ["dogu", "bati", "kuzey", "guney", "merkez"]
TIP = ["mesken", "isyeri"]
DONEM = [f"2026-{a:02d}" for a in range(1, 13)]
ABONE = {}
for i in range(200):
    r = uretec(TOHUM + 37 * i)
    ABONE[f"A{i + 1:03d}"] = {"bolge": BOLGE[int(r() * 5)], "tip": TIP[int(r() * 2)],
                              "baslangic": 10000 + int(r() * 60000)}


def kaynak_uret():
    kayit = []
    for i, (ab, a) in enumerate(ABONE.items()):
        e = a["baslangic"]
        for d in DONEM:
            r = uretec(TOHUM + 101 * i + 7 * DONEM.index(d))
            e += 4 + int(r() * 46)
            kayit.append({"abone": ab, "donem": d, "bolge": a["bolge"], "tip": a["tip"],
                          "endeks": e, "birim": "m3"})
    return kayit


def a3_tuketim(kayit):
    tablo = {(k["abone"], k["donem"]): k for k in kayit}
    cikti = []
    for k in kayit:
        i = DONEM.index(k["donem"])
        onceki = tablo.get((k["abone"], DONEM[i - 1])) if i else None
        if onceki is not None:
            cikti.append(dict(k, m3=int(k["endeks"]) - int(onceki["endeks"])))
    return cikti


EGITIM, SINAMA, ESIK = DONEM[1:9], DONEM[9:], 40


def oznitelikler(kayitlar):
    """Egitim yolu tam gecmisi gorur. Agirliktan bagimsiz , bir kez hesaplanir."""
    sirali = sorted(kayitlar, key=lambda k: DONEM.index(k["donem"]))
    ab, bo = {}, {}
    for k in sirali:
        ab.setdefault(k["abone"], []).append((DONEM.index(k["donem"]), k["m3"]))
        bo.setdefault(k["bolge"], []).append((DONEM.index(k["donem"]), k["m3"]))

    def ortalama(dizi, i):
        secili = [v for d, v in dizi if d < i]
        return round(sum(secili) / len(secili), 4) if secili else 0.0

    return {(k["abone"], k["donem"]): {
        "abone_ort": ortalama(ab[k["abone"]], DONEM.index(k["donem"])),
        "bolge_ort": ortalama(bo[k["bolge"]], DONEM.index(k["donem"])),
        "isyeri": 1 if k["tip"] == "isyeri" else 0} for k in kayitlar}


def puan(o, w):
    return w[0] * o["abone_ort"] + w[1] * o["bolge_ort"] + w[2] * o["isyeri"]


IZGARA = [(a, b, c) for a in (0.6, 0.8, 1.0) for b in (0.0, 0.2, 0.4) for c in (0, 4, 8)]
KENAR_IZGARA = [w for w in IZGARA if w[1] == 0.0]      # bolge gecmisi aygitta yok

TUM = a3_tuketim(kaynak_uret())
OZ = oznitelikler(TUM)
M3 = {(k["abone"], k["donem"]): k["m3"] for k in TUM}
EGK = [c for c in M3 if c[1] in EGITIM]
SNK = [c for c in M3 if c[1] in SINAMA]
N = len(SNK)
ALT_A, UST_A = min(o["abone_ort"] for o in OZ.values()), max(o["abone_ort"] for o in OZ.values())
ALT_B, UST_B = min(o["bolge_ort"] for o in OZ.values()), max(o["bolge_ort"] for o in OZ.values())


def gorev_a(v):
    return 1 if v > ESIK else 0


def gorev_b(v):
    return 0 if v <= 20 else (1 if v <= ESIK else 2)


def egit(gorev, izgara, oz):
    return max(izgara, key=lambda w: sum(1 for c in EGK
                                         if gorev(puan(oz[c], w)) == gorev(M3[c])))


def isabet(gorev, w, oz):
    return round(sum(1 for c in SNK if gorev(puan(oz[c], w)) == gorev(M3[c])) / N, 4)


def payi(gorev):
    return round(max(sum(1 for c in SNK if gorev(M3[c]) == s) for s in (0, 1, 2)) / N, 4)


def nicem_oz(seviye):
    def q(x, alt, ust):
        adim = (ust - alt) / (seviye - 1)
        return alt + round((x - alt) / adim) * adim

    return {c: {"abone_ort": q(o["abone_ort"], ALT_A, UST_A),
                "bolge_ort": q(o["bolge_ort"], ALT_B, UST_B),
                "isyeri": o["isyeri"]} for c, o in OZ.items()}


WA, WB = egit(gorev_a, IZGARA, OZ), egit(gorev_b, IZGARA, OZ)
WAK, WBK = egit(gorev_a, KENAR_IZGARA, OZ), egit(gorev_b, KENAR_IZGARA, OZ)
bs = [sum(1 for c in M3 if ABONE[c[0]]["bolge"] == b) for b in BOLGE]
print(f"sunum ufkunda en kalabalik sinif payi: gorev A {payi(gorev_a)} , gorev B {payi(gorev_b)}")
print(f"merkez modeli  A {WA} isabet {isabet(gorev_a, WA, OZ)}"
      f" | B {WB} isabet {isabet(gorev_b, WB, OZ)}")
print(f"kenar modeli   A {WAK} isabet {isabet(gorev_a, WAK, OZ)}"
      f" | B {WBK} isabet {isabet(gorev_b, WBK, OZ)}")
print(f"aygita yazilan sayi 5 (3 agirlik + abonenin 2 toplami) ;"
      f" birakilan bolge gecmisi {min(bs)}-{max(bs)} satir")

t0a = {c: gorev_a(puan(OZ[c], WA)) for c in SNK}
t0b = {c: gorev_b(puan(OZ[c], WB)) for c in SNK}
print("\nseviye  farkli deger  A degisen  A isabet  B degisen  B isabet")
for s in (256, 16, 12, 8, 4, 2):
    oz = nicem_oz(s)
    ta = {c: gorev_a(puan(oz[c], WA)) for c in SNK}
    tb = {c: gorev_b(puan(oz[c], WB)) for c in SNK}
    fd = (len(set(o["abone_ort"] for o in oz.values()))
          + len(set(o["bolge_ort"] for o in oz.values())))
    print(f"{s:>6}  {fd:>12}  {sum(1 for c in SNK if ta[c] != t0a[c]):>9}"
          f"  {isabet(gorev_a, WA, oz)}  {sum(1 for c in SNK if tb[c] != t0b[c]):>9}"
          f"  {isabet(gorev_b, WB, oz)}")
```

```
sunum ufkunda en kalabalik sinif payi: gorev A 0.8067 , gorev B 0.4833
merkez modeli  A (0.6, 0.4, 0) isabet 0.8067 | B (0.6, 0.4, 4) isabet 0.4833
kenar modeli   A (0.6, 0.0, 0) isabet 0.8067 | B (1.0, 0.0, 4) isabet 0.4733
aygita yazilan sayi 5 (3 agirlik + abonenin 2 toplami) ; birakilan bolge gecmisi 341-539 satir

seviye  farkli deger  A degisen  A isabet  B degisen  B isabet
   256           199          0  0.8067          0  0.4833
    16            21          0  0.8067          2  0.48
    12            16          0  0.8067          0  0.4833
     8            11          0  0.8067          5  0.4783
     4             7          0  0.8067          0  0.4833
     2             4        402  0.3833        600  0.225
```

Dördüncü satır dersin ilk cümlesidir: aygıta yazılan sayı **beştir**, bırakılan şey 341 ile 539
satırlık **bölge geçmişidir**. **Kenara taşınamayan şey model değil, özniteliği üreten geçmiştir.**
Bedeli ayrışır: görev A'da isabet 0,8067'de kalır, görev B'de **0,4733**'e iner.

İki isabeti tabanın yanına koymak bedelin adını değiştirir. Etiket dengesizdir, **taban sınıf oranı
0,7964**'tür; sunum ufkunda görev A'nın en kalabalık sınıfı 0,8067, görev B'nin en kalabalık kademesi
0,4833 pay tutar ve merkez ikisinde de tam o payı verir. Görev A'daki sıfır düşüş bundan gelir:
küçültmenin oradan **götüreceği bir şey yoktur**. Kenar modeli ise görev B'de tabanın **0,0100
altına** düşer — her satıra en kalabalık kademeyi diyen bir yordamdan **altı adım kötü**. Küçültmenin
bedeli isabetteki düşüş değil, **tabanın hangi yanında kalındığıdır**.

Nicemleme aynı sırayı bağımsız doğrular. Görev A seviye 4'e kadar **tek bir tahmin oynatmaz**; görev
B seviye 16'da iki, seviye 8'de beş tahmin oynatır. Bu oynamalar 0,0017'lik çözünürlüğün hemen
üstündedir ve süpürme monoton değildir, bu yüzden bozulmanın başladığı yer "16 ile 2 arasında" diye
yazılır. Seviye 2'de ikisi de tabanın altına iner: görev A **0,3833** (0,4234 altı), görev B
**0,2250** (0,2583 altı). **Küçültme ayrımı siler, en ince görevi önce siler ve yeterince
ilerlediğinde modeli taban çizgisinin altına taşır.**

## Kesinti Altında Yanıtlanan İstek

Küçültmenin götürdüğü yazıldı; kazandırdığı yazılmadı.

```python
# Bu blok ilk bloktaki N , OZ , WA , WB , WAK , WBK , gorev_a , gorev_b ,
# isabet , nicem_oz , uretec ve TOHUM tanimlarini surdurur.
mA, mB = isabet(gorev_a, WA, OZ), isabet(gorev_b, WB, OZ)
kA, kB = isabet(gorev_a, WAK, OZ), isabet(gorev_b, WBK, OZ)
r = uretec(TOHUM + 733)
kesinti = [r() for _ in range(N)]
print("kesinti payi  yanitlanan  merkez A  kenar A  merkez B  kenar B")
for p in (0.00, 0.02, 0.05, 0.10, 0.20):
    y = sum(1 for x in kesinti if x >= p)
    print(f"{p:>12.2f}  {y:>10}  {round(y * mA):>8}  {round(N * kA):>7}"
          f"  {round(y * mB):>8}  {round(N * kB):>6}")
print(f"donus noktasi: gorev A {1 - kA / mA:.4f} , gorev B {1 - kB / mB:.4f}")
print("kenar modeli nicemlenince  seviye 8: gorev B", isabet(gorev_b, WBK, nicem_oz(8)),
      ", seviye 4:", isabet(gorev_b, WBK, nicem_oz(4)))
```

```
kesinti payi  yanitlanan  merkez A  kenar A  merkez B  kenar B
        0.00         600       484      484       290     284
        0.02         589       475      484       285     284
        0.05         566       457      484       274     284
        0.10         536       432      484       259     284
        0.20         485       391      484       234     284
donus noktasi: gorev A 0.0000 , gorev B 0.0207
kenar modeli nicemlenince  seviye 8: gorev B 0.4767 , seviye 4: 0.4533
```

Kenar sütunları sabittir ve bu kenarın tek gerçek kazancıdır: kesinti payı ne olursa olsun 600
isteğin **hepsi** yanıtlanır, merkezde yanıtlanan istek 485'e iner. Doğru yanıt görev A'da 484'ten
**391**'e, görev B'de 290'dan **234**'e düşer. İki kurulum görev A'da **0,0000**, görev B'de
**0,0207** kesinti payında eşitlenir: bu payın üstünde, tabanın altına düşmüş kenar modeli yine de
daha çok doğru yanıt üretir. **Bağımsızlık bir isabet sayısı değildir; isabetle ancak doğru yanıt
sayısı üzerinden aynı tabloya girer.** Son satır iki küçültmeyi birlikte gösterir: seviye 8'de
0,4767, seviye 4'te 0,4533.

## Özet

- Aygıta yazılan sayı **beştir**; taşınamayan şey 341 ile 539 satırlık **bölge geçmişidir**.
- Geçmişin bırakılması görev A'da isabeti değiştirmez, görev B'de **0,4733**'e indirir. Taban sınıf
  oranı 0,7964, görev B'nin en kalabalık kademesi 0,4833'tür: kenar modeli **tabanın 0,0100
  altındadır**, A'daki sıfır ise dayanıklılık değil ölçüsüzlüktür.
- Nicemleme aynı sırayı doğrular: görev A seviye 4'e kadar tek bir tahmin oynatmaz, görev B seviye
  16'da iki ve seviye 8'de beş oynatır; seviye 2'de ikisi **0,3833** ve **0,2250**'ye çöker.
- Kenar, kesinti payı ne olursa olsun 600 isteğin hepsini yanıtlar; merkezin doğru yanıtı payı
  0,20'de 484'ten **391**'e ve 290'dan **234**'e iner. İki kurulum görev A'da 0,0000, görev B'de
  **0,0207** kesinti payında eşitlenir ve kenarın gerekçesi o orandır.

## Kurs Kapanışı

Satırlar ortak birim taşımaz; hangi ölçütle okunduğu ders adının yanındadır ve parantezdeki fark
**sabitlenmiş kurulum eksi tabandır**.

| Ders | Sabitlemesiz taban | Sabitlenmiş kurulum | Bedel |
|---|---|---|---|
| `yeniden-uretilebilirlik/01` — üç koşumun sınama isabeti | sabitleme yok: **0,8067 / 0,7955 / 0,8078** (yayılım **0,0123**) | üç koşumun ağırlığı aynı: `(0.6, 0.4, 0)` | isabet sınama kümesinin taban oranının kendisi, duyarlılık **0,0000** |
| `yeniden-uretilebilirlik/02` — bir sayıyı üreten koşumu bulmak | kayıtsız: **1, 2, 3, 5, 18** koşum tekrarı | tam kayıtla beşinde de **0** (**−18**'e kadar) | **162 alan**; yalnız ölçüt tutan defter beş aramadan birini kısaltır |
| `yeniden-uretilebilirlik/03` — belirsiz koşum sayısı | sürümsüz: **1 ad**, belirsiz koşum **4** | içerik adlı: **3 ad**, belirsiz koşum **0** (**−4**) | **6540 satır** (tarih adlı şema 8740); çıktı imzası yutulan yinelenmeyi görmez |
| `yeniden-uretilebilirlik/04` — aynı ağırlıkla sınama isabeti | sunum yolu, pencere 1: **0,7800** | öznitelik deposu, pencere 2: **0,8067** (**+0,0267**) | 6600 saklanan değer ve dördüncü aşama; sapma 600 özniteliği değiştirir, tahmini **16** satırda çevirir |
| `yeniden-uretilebilirlik/05` — üç koşumun aynılığı | sabitleme yok: **[0,8067 , 0,7955 , 0,8078]** | üç kalemle: **[0,8067 x 3]** | 15 kalem kaydı, **81** aday, **6600** satır; ızgara ile yuvarlamanın katkısı **ölçülemez** |
| `yeniden-uretilebilirlik/06` — üretimdeki modelin koşumunu bulmak | deftersiz: **16 kayıt**, **12 aday** | defterle: **1 kayıt** (**−15**), **1 aday** (**−11**) | **21 kayıt**; aynı ağırlıklı koşumlar 0,7950 ve 0,8067 bildirir |
| `egitim-ve-dagitim/01` — eğitim satırı | geç gelen 40 satırla: **1520** | uçtan uca koşum: **1600** (**+80**), bayat adım **0** | **13800 işlenen satır**; yedi kurulumun yedisi de aynı **0,8067**'yi bildirir |
| `egitim-ve-dagitim/02` — durdurulan bozulma sınıfı | kapısız: **0 / 6** | veri kapısı **4**, model kapısı **3**, kod kapısı **0** | durdurulan dört koşumun **ikisi** zaten aynı modeli verecekti; **geç gelen** hiçbir kapıda durmaz |
| `egitim-ve-dagitim/03` — 1800 çağrının düşeni | sözleşmesiz: **600**, alan adı değişince **1200** | sözleşmeli: **0** (**−1200**) | 5 bildirim; eşik alanı düştüğünde **hiçbir çağrı düşmez** ve 1200 yanıt sessizce değişir |
| `egitim-ve-dagitim/04` — tahmin başına okunan satır | kalıbı yazılmamış çağrı: **463,87** | toplu: **11,00** (**−452,87**), akış: **3,67** | toplu kalıpta yanıt bir dönem yaşlanır ve tek tahmin kullanıldığında 200'ün **199**'u boşa üretilir; akışta **1600** kullanılmayan tazeleme |
| `egitim-ve-dagitim/05` — tahmin başına satır ve bekleme | boyut 1: **463,87**, bekleme **0 varış** | boyut 200: **22,00** (**−441,87**), bekleme **199 varış** (**+199**) | dönem başına **8** istek dolmayan grupta bekler ve sütunda görünmez; hızlandırıcının dönüşü **80** istek |
| `egitim-ve-dagitim/06` — doğru yanıt, kesinti payı 0,20 | merkez: **391** (A), **234** (B) | kenar: **484** (**+93**), **284** (**+50**) | bölge geçmişi bırakılır, görev B **0,4833'ten 0,4733**'e iner; kesişme noktası **0,0207** |

Tablo tek bir kuralın on iki kez yazılmasıdır. **Bir modelin sayısı onu üreten yolla birlikte
anlamlıdır; yeniden üretilemeyen sayı bir ölçüm değil bir anıdır.** `yeniden-uretilebilirlik/01`'de
aynı iş üç ayrı sayı verir ve ağırlık üçünde de aynıdır; `/03`'te aynı ad üç ayrı içerik taşır;
`/06`'da aynı ağırlıklı koşumlar 0,7950 ve 0,8067 bildirir. Değişen model değil, sayının **hangi
yolla** üretildiğidir.

**İkinci iddia aynı tablodan okunur: sabitlemek de bedel getirir ve katkısı gösterilemeyen
sabitleme ölçülmemiş bir güvence verir.** `yeniden-uretilebilirlik/05`'te üç kalem yeter ve **ızgara
ile yuvarlamanın katkısı ölçülemez**; `/02`'de yalnız ölçüt tutan defter beş aramadan yalnız birini
kısaltır; `egitim-ve-dagitim/02`'de veri kapısının durdurduğu dört koşumun ikisi zaten aynı modeli
verecekti; `/04`'te bayatlığın ölçülememesi kalıbın güvencesi değil, karar puanının eşiğe 7,6468
uzaklıkta durmasının sonucudur. Dört satırda ödenen sabitlemenin karşılığı alınmamış ya da
gösterilememiştir.

**Üçüncü iddia tek bir satırda en keskin hâline gelir.** `yeniden-uretilebilirlik/04`'te aynı ağırlık
üçlüsüyle isabet eğitim yoluyla **0,8067**, sunum yoluyla **0,7800**'dür; **model hiç değişmemiştir**
ve 0,0267'nin tamamı özniteliğin hangi geçmişle hesaplandığından gelir. `egitim-ve-dagitim/03` bunun
sessiz eşidir: eşik alanı paketten düştüğünde hiçbir çağrı düşmez, 1200 çağrının 1200'ü yanıt
değiştirir. **Modeli sınamak yetmez; sunumdaki öznitelik yolu ve paketin bildirimi de
sınanmalıdır.**

Otuz dokuz derste veri alındı, taşındı, saklandı ve bölüştürüldü; sonra bir modele bağlandı, yeniden
üretilebilir kılındı, paketlendi, sunuldu, ölçeklendi ve aygıta taşındı. Hiçbiri modelin **çıktıktan
sonrasını** sormadı. Dünya değişir ve girdi **kaymaya** başlar; etiket **haftalar sonra** gelir, yani
bugünün isabeti bugün ölçülemez; ve modelin ne zaman **emekliye ayrılacağı** hiçbir yerde yazılı
değildir. Sonraki kurs üretimdeki modeli bir teslim değil bir gözlem konusu sayar ve bu üç
soruyu ölçer.
