İçeriğe geç
academia.sh

Ders 26 / 26

Model Depoları ve Kullanım Koşulları

Bir kullanım senaryosunda dört kullanım koşulu sınıfının kaç dağıtım seçeneğini kapattığının sayılması: dört varlık türü ile dört kanaldan kurulu on altı seçenekten kullanım sınırı tek başına 6, yeniden dağıtım hakkı 3, türev çalışma koşulu 2 ve ticari kullanım kaydı 2 seçenek kapatıyor, toplam 13; birlikte kapattıkları ise 10, çünkü üç seçenek birden fazla koşulla kapanıyor. Açık kalan altı seçeneğin dördü tek kanaldadır. Kullanım sınırının kaldırılması altı değil üç seçenek açar. Aylık istek hacmi üç katına çıktığında açık seçenek altıdan dörde, on katına çıktığında bire iner. Ders M28/K03 kursunun kapanışıdır.

İçindekiler

Bir önceki derste küçük model büyük modelin çıktısından doğdu. Ondan önceki derste elde uyarlama farkları kaldı. İkisi de aynı türden nesnelerdir: bir başkasının modelinden türetilmiş, tek başına bir anlamı olmayan sayı yığınları. Bu nesneleri kendi sunucunda çalıştırmak, kiraladığın ortak bir ortama koymak, abonelere bir paket içinde vermek ya da herkese açık bırakmak birbirinin aynı değildir.

Bu dersin ölçtüğü şey bir metnin ne dediği değil, kaç seçeneğin kapandığıdır. Dağıtım seçenekleri sayılabilir bir kümedir; kullanım koşulları bu küme üzerinde birer süzgeçtir. Süzgeçler uygulandığında geriye kaç seçenek kaldığı, hangi süzgecin tek başına ne kadar kapattığı ve kaldırıldığında ne kadarını geri açtığı ayrı ayrı sayılabilir. Sayım tamamen belirlenmiştir; tohuma bağlı hiçbir çekiliş yoktur, bu yüzden ölçü koşumdan bağımsızdır.

  • YM42. Varlık türleri, kanallar, hacimler ve koşul sınıfları kurgudur ve ders içinde tanımlanır. Hiçbir depo, lisans, kurum, ülke ya da düzenleme adı geçmez; koşullar yalnız sınıflarıyla anılır.
  • YM43. Dört varlık türü dağıtılabilir: yalnız çıktı, uyarlama farkı, tam ağırlık kopyası ve damıtılmış küçük model. Son ikisi önceki iki dersin ürettiği nesnelerdir.
  • YM44. Dört kanal vardır: kurum içi, kiralanan ortak ortam, ücretli abone paketi ve açık yayım. Her kanalın aylık istek hacmi, kurum sınırının dışına çıkıp çıkmadığı, ticari olup olmadığı ve alıcısının bilinip bilinmediği yazılıdır.
  • YM45. Kullanım sınırı, taban modelin çalıştığı bir seçenekte aylık istek eşiğinin aşılamayacağını söyler. Yeniden dağıtım hakkı, taban ağırlığın bir kopyasının kurum sınırının dışına çıkamayacağını söyler. Türev çalışma koşulu, türetilmiş bir varlığın ancak koşulların alıcıyla birlikte taşınabildiği bir kanalda verilebileceğini söyler. Ticari kullanım kaydı, ticari bir kanalda kullanımın hangi tabana dayandığının kayda geçmesini ister ve bu kayıt taban modelin çağrı defterinden üretilir.
  • YM46. Bu bir hukuk dersi değildir. Sayılan şey metinlerin anlamı değil, belirli koşul yüklemlerinin kapattığı seçenek adedidir; yüklemler yukarıda yazılıdır ve kodda birebir görünür.

Dört Koşul Sınıfı ve On Altı Seçenek

Koşulların hepsi aynı anda uygulanır ve bir seçenek en az bir koşula takılıyorsa kapanır. Bu yüzden tek başına en çok kapatan koşul, kaldırıldığında en çok açan koşul olmak zorunda değildir.

# KURGUDUR. Varlik turleri, kanallar, hacimler ve dort kosul sinifi ders icinde
# tanimlanir; hicbir depo, lisans, kurum ya da duzenleme adi gecmez.
VARLIK = [  # ad, taban model calisir mi, taban agirligin kopyasi mi, turev mi
    ("yalniz cikti", True, False, False),
    ("uyarlama farki", True, False, True),
    ("tam agirlik kopyasi", True, True, False),
    ("damitilmis kucuk model", False, False, True)]
KANAL = [   # ad, aylik istek, kurum disina cikiyor mu, ticari mi, alici biliniyor mu
    ("kurum ici", 40000, False, False, True),
    ("kiralanan ortak ortam", 120000, True, True, True),
    ("ucretli abone paketi", 900000, True, True, True),
    ("acik yayim", 3000000, True, False, False)]
SECENEK = [(v, k) for v in VARLIK for k in KANAL]


def k1(v, k, esik):
    """Kullanim siniri: taban modelin calistigi secenekte aylik istek esigi asilamaz."""
    return v[1] and k[1] > esik


def k2(v, k, esik):
    """Yeniden dagitim hakki: taban agirligin kopyasi kurum sinirinin disina cikamaz."""
    return v[2] and k[2]


def k3(v, k, esik):
    """Turev calisma kosulu: turetilmis varlik ancak kosullarin aliciyla birlikte
    tasinabildigi kanalda verilebilir."""
    return v[3] and not k[4]


def k4(v, k, esik):
    """Ticari kullanim kaydi: ticari kanalda kullanimin hangi tabana dayandigi kayda
    gecer; kayit taban modelin cagri kaydindan uretilir."""
    return k[3] and not v[1]


KOSUL = [("kullanim siniri", k1), ("yeniden dagitim hakki", k2),
         ("turev calisma kosulu", k3), ("ticari kullanim kaydi", k4)]


def kapali(secenek, kosullar, esik):
    return [ad for ad, f in kosullar if f(*secenek, esik)]


def sayim(kosullar, esik, hacim=1):
    kanal = [(a, h * hacim, d, t, b) for a, h, d, t, b in KANAL]
    sec = [(v, k) for v in VARLIK for k in kanal]
    return sum(1 for s in sec if kapali(s, kosullar, esik)), len(sec)


ESIK = 250000
print(f"secenek {len(SECENEK)} = {len(VARLIK)} varlik x {len(KANAL)} kanal ,"
      f" aylik istek esigi {ESIK}")
print("\nkosul                    tek basina  kaldirilinca acilan")
kapanan = 0
for ad, f in KOSUL:
    tek = sum(1 for s in SECENEK if f(*s, ESIK))
    eksik = sayim([x for x in KOSUL if x[0] != ad], ESIK)[0]
    hepsi = sayim(KOSUL, ESIK)[0]
    kapanan += tek
    print(f"{ad:<24} {tek:>10}  {hepsi - eksik:>19}")
hepsi = sayim(KOSUL, ESIK)[0]
print(f"{'toplam':<24} {kapanan:>10}  {'':>19}")
print(f"\ndort kosul birlikte {hepsi} secenegi kapatiyor , acik kalan {len(SECENEK) - hepsi}")
print("\nvarlik                  acik kalan kanallar")
for v in VARLIK:
    acik = [k[0] for k in KANAL if not kapali((v, k), KOSUL, ESIK)]
    print(f"{v[0]:<23} {' , '.join(acik) if acik else 'yok'}")
secenek 16 = 4 varlik x 4 kanal , aylik istek esigi 250000

kosul                    tek basina  kaldirilinca acilan
kullanim siniri                   6                    3
yeniden dagitim hakki             3                    1
turev calisma kosulu              2                    1
ticari kullanim kaydi             2                    2
toplam                           13                     

dort kosul birlikte 10 secenegi kapatiyor , acik kalan 6

varlik                  acik kalan kanallar
yalniz cikti            kurum ici , kiralanan ortak ortam
uyarlama farki          kurum ici , kiralanan ortak ortam
tam agirlik kopyasi     kurum ici
damitilmis kucuk model  kurum ici

Dört koşul tek başına 6, 3, 2 ve 2 seçenek kapatıyor; toplam 13. Birlikte kapattıkları ise 10. Aradaki üç seçenek birden fazla koşula takılıyor, yani iki kez sayılmış durumda. Kapatma sayılarını toplamak, koşulların etkisini bir buçuk kat abartır.

Kaldırılınca açılan sütunu bunun karşılığıdır. Kullanım sınırı tek başına altı seçenek kapatıyor ama kaldırıldığında yalnız üç seçenek açılıyor; kalan üçü yeniden dağıtım hakkına ya da türev çalışma koşuluna zaten takılıyordu. Ticari kullanım kaydı ise tek başına yalnız iki seçenek kapatıyor ve kaldırıldığında ikisini de geri açıyor; hiçbir koşulla örtüşmüyor. Bir koşulun ağırlığı kapattığı sayıda değil, tek başına kapattığı sayıdadır.

Son tablo hangi seçeneklerin ayakta kaldığını gösteriyor. Tam ağırlık kopyası ile damıtılmış küçük model için geriye tek bir kanal kalıyor: kurum içi. Bunlar bu kursun ürettiği iki nesnedir. Uyarlama farkı ile damıtılmış model aynı sayıda seçenek kapatmıyor da: uyarlama farkı taban modeli çalıştırdığı için kullanım sınırına takılıyor, damıtılmış model çalıştırmadığı için ticari kullanım kaydını üretemiyor. İkisi de daralıyor, ama ayrı koşullardan.

Eşik ve Hacim Değişince

Aynı koşullar sabit bir sayı vermez; sayı senaryonun büyüklüğüne bağlıdır.

cok = sum(1 for s in SECENEK if len(kapali(s, KOSUL, ESIK)) > 1)
print(f"birden fazla kosulla kapanan secenek {cok} ; tek kosulla kapanan"
      f" {hepsi - cok} ; toplam kapanan {hepsi}")
print("\nesik ve hacim duyarliligi (kosumdan bagimsiz sayim):")
print("      esik  hacim  kapanan  acik  kullanim sinirinin tek basina kapattigi")
for esik, h in ((100000, 1), (250000, 1), (1000000, 1), (5000000, 1),
                (250000, 3), (250000, 10)):
    kap, top = sayim(KOSUL, esik, h)
    tek = sum(1 for v in VARLIK for k in KANAL if k1(v, (k[0], k[1] * h), esik))
    print(f"{esik:>10}  {str(h) + 'x':>5}  {kap:>7}  {top - kap:>4}  {tek:>38}")
birden fazla kosulla kapanan secenek 3 ; tek kosulla kapanan 7 ; toplam kapanan 10

esik ve hacim duyarliligi (kosumdan bagimsiz sayim):
      esik  hacim  kapanan  acik  kullanim sinirinin tek basina kapattigi
    100000     1x       12     4                                       9
    250000     1x       10     6                                       6
   1000000     1x        8     8                                       3
   5000000     1x        7     9                                       0
    250000     3x       12     4                                       9
    250000    10x       15     1                                      12

Eşik dört katına çıktığında açık seçenek altıdan sekize çıkıyor, eşik tamamen gevşediğinde dokuza. Ters yönde ise değişim daha serttir: aylık hacim üç katına çıktığında açık seçenek dörde, on katına çıktığında bire iniyor. On kat hacimde kurum içi kanal bile eşiği aşıyor ve geriye yalnız damıtılmış modelin kurum içinde çalıştırılması kalıyor. Koşullar değişmedi; büyüyen şey iş yüküydü. Bir dağıtım kararı, koşul metni okunduğu gün değil, hacim eşiği geçtiği gün kapanır.

Özet

  • On altı dağıtım seçeneği dört varlık türü ile dört kanaldan kurulur; koşullar bu küme üzerinde birer yüklemdir ve sayım koşumdan bağımsızdır.
  • Dört koşulun tek başına kapattığı toplam 13, birlikte kapattıkları 10’dur; üç seçenek birden fazla koşula takılır.
  • Kullanım sınırı tek başına 6 seçenek kapatır ama kaldırıldığında 3 seçenek açar; ticari kullanım kaydı 2 kapatır ve 2 açar, yani hiçbir koşulla örtüşmez.
  • Tam ağırlık kopyası ile damıtılmış küçük model için geriye tek kanal kalır, ama biri kullanım sınırından biri ticari kullanım kaydından daralır.
  • Aylık hacim üç katına çıktığında açık seçenek 6’dan 4’e, on katına çıktığında 1’e iner: kararı kapatan şey koşul metni değil, eşiğin geçildiği gündür.

Kurs Kapanışı

Ders Düzeneksiz Düzenekli Bedel
api-kullanimi/01 — konuşma durumu durum gönderilmiyor 0,2000 tam döküm 0,8250 (+0,6250) giriş belirteci 8346 → 31160
api-kullanimi/02 — ilk parça akışsız, etiket sonda 16,03 adım akış + etiket başta 4,96 adım (−11,07) belirteç aynı; kurtarılan kesik yanıt 0 → 31
api-kullanimi/03 — geçerli araç çağrısı oranı katalog yok 0,0500 ad + parametre 0,6917 (+0,6417) giriş 3694 → 11614; kalıntı 14 yanlış araç
api-kullanimi/04 — şemaya uyum isteme yazılan şema 0,7583 arayüz alanı 0,9000 (+0,1417) giriş belirteci 7654 → 4294; doğru kayıt başına 125,8 → 65,7
api-kullanimi/05 — kullanılabilir kayıt oranı ince ızgara 0,8167 (183 belirteç) kırpık ızgara 0,7000 (−0,1167) kayıt başına 224,1 → 60,0 belirteç
api-kullanimi/06 — üç komşunun aynı konudan olma payı 144 boyut 0,9259 72 boyut 0,9028 (−0,0231) saklanan sayı 10368 → yarısı
api-kullanimi/07 — taşınan alan sayısı sağlayıcının kendi arayüzü 12 ortak arayüz 8 (−4) çıkış belirteci 773 → 1638; okunabilen kesilme 0
api-kullanimi/08 — çağrı sayısı / etkilenen istek toplu boyut 1: 120 çağrı, 1 istek toplu boyut 12: 10 çağrı (−110), 12 istek giriş 5854 → 1784; boyut 18’de isabet 0,0667
yz-uretim-kalitesi/01 — ağır yükte tamamlama payı düzeneksiz 0,8562 geri çekilmeli deneme 0,8750 (+0,0188) koşum farkı da 0,0188; komşu akış 0,9500 → 0,8667
yz-uretim-kalitesi/02 — doğru yanıt payı önbelleksiz 0,9333 uzun ömürlü yanıt önbelleği 0,5542 (−0,3791) çağrı 240 → 29; bayat pay 0,0208 → 0,4417
yz-uretim-kalitesi/03 — bekleme adımı / doğruluk büyük bağlam 3,0000 adım, 0,9292 iki aşamalı 1,7500 adım (−1,2500), −0,0125 giriş belirteci 19716
yz-uretim-kalitesi/04 — istek başına belirteç kısaltmasız 81,6 üç kısaltma politikası 50,5 (−31,1) doğru etiket başına okununca sıralama değişiyor
yz-uretim-kalitesi/05 — toplam isabet yedeksiz 0,8450 yedekli 0,8850 (+0,0400) kesintisiz tabana göre 0,8975 → 0,8850; yedek katman 0,6667
yz-uretim-kalitesi/06 — isabet / oynayan yanıt payı kalemler sabit 0,9125 biçim sözcüğü serbest 0,5525 (−0,3600) sağlayıcıdaki üç kalem oynadığında pay 0,1150
yz-destekli-gelistirme/01 — kabul edilen görev (24) bağlamsız 7 bütün kod tabanı 18 (+11) 1104 → 4224 belirteç; bin belirteçte kabul 6,34 → 4,26
yz-destekli-gelistirme/02 — beklenen kabul bütün dosyalar 0,6921 seçilmiş dosyalar 0,8233 (+0,1312) 4224 → 2274 belirteç; 120 → 45 dosya
yz-destekli-gelistirme/03 — doğru adım (480) sekiz adımda bir durma 355 her adımda durma 478 (+123) durma 60 → 479; kaçan hata 21 → 1
yz-destekli-gelistirme/04 — yakalanan kusur (28) denetimsiz 0 üç denetim 26 (+26) kaçan 2; biri hiç uyarı almadan giriyor
yz-destekli-gelistirme/05 — ayırt edilen bozuk sürüm (6) üretilen sınama kümesi 3 tek elle hiza maddesi 4 (+1) 14 sınamanın 2’si temiz kodda düşüyor, 9’u hiçbir şey ayırmıyor
yz-destekli-gelistirme/06 — sır sınıfı kapsaması süzgeçsiz 0,0000 alan adı süzgeci 0,9333 (+0,9333) serbest metinde 12 iz kalıyor; kabul edilenlerde yanlış payı 0,5263
yerel-modeller/01 — etiket isabeti / eşzamanlı istek küçük ölçek 0,6333, 248 istek büyük ölçek 0,8667 (+0,2334), 5 istek isabet çarpı eşzamanlı istek 157,1 → 4,3
yerel-modeller/02 — beş sınıflı konu isabeti 16 basamak 0,8667 4 basamak 0,8000 (−0,0667) bellek 34,3 → 8,6 milyar basamak; eşzamanlı istek 5 → 62
yerel-modeller/03 — isabet (60 kayıt) taban 0,6000 60 örnekle istem 0,9667, ince ayar 0,9500 (−0,0167) istek başına bağlam 28,48 → 623,48 belirteç; 180 adım, ağırlığın 0,2992’si
yerel-modeller/04 — saha isabeti uyarlama yok 0,2500 düşük ranklı ek 0,9583 (+0,7083) güncellenen pay 0,2094; sekiz sahada 18336 → 6132 sayı
yerel-modeller/05 — konu isabeti altı insan etiketi 0,5000 240 öğretmen etiketi 0,6333 (+0,1333) 240 çağrı, 3256 belirteç; sayma görevi 0,5833 → 0,3667
yerel-modeller/06 — açık dağıtım seçeneği (16) koşul okunmadan 16 dört koşul sınıfı 6 (−10) hacim on katına çıkınca 1

Kursun kuralı tabloda satır satır yazılıdır: bir model çağrısı bir işlev çağrısı değil bir ağ işlemidir; başarısızlığı yazılmayan çağrı ölçülmemiş sayılır. Düzeneksiz sütunundaki sayıların hiçbiri kötü bir kod yüzünden düşük değildir. Hepsi, çağrının gecikeceği, sıraya gireceği, yarıda kesileceği, reddedileceği ya da bir başkasının sınırını tüketeceği hesaba katılmadığı için düşüktür.

İkinci iddia da aynı tablodan okunur: eklenen dayanıklılık işi kötüleştirebilir. Bunu adıyla yazan satırlar şunlardır. yz-uretim-kalitesi/01‘de sabit aralıklı yeniden deneme ağır yükte tamamlamayı düzeneksizin altına indirir ve aynı sınırı paylaşan etkileşimli akışı 0,9500’den 0,8667’ye düşürür. yz-uretim-kalitesi/02‘de yanıt önbelleği çağrıyı 240’tan 29’a indirirken doğru yanıt payını 0,9333’ten 0,5542’ye götürür. yz-uretim-kalitesi/05‘te yedek katman toplam isabeti yükseltiyor gibi görünür, ama kesintisiz tabana göre okunduğunda düşüş vardır ve yedeğe düşen isteklerin isabeti 0,6667’dir. yz-destekli-gelistirme/02‘de bağlamı büyütmek beklenen kabulü 0,8233’ten 0,6921’e indirir. api-kullanimi/07‘de ortak arayüz çıkış belirtecini iki katına çıkarır ve 117 kesilmenin hiçbirini okunabilir kılmaz. api-kullanimi/08‘de toplu boyutu büyütmek çağrıyı 120’den 10’a indirirken bağlam penceresini aşırma noktasında isabeti 0,0667’ye düşürür. yerel-modeller/03‘te altmış örnekle ince ayar istem düzeneğini geçmez. yerel-modeller/05‘te damıtma sayma görevinde 0,5833’ten 0,3667’ye götürür. Sekiz ayrı yerde düzenek, eklendiği için ödedi.

Yirmi altı derste çağrı bir ağ işlemi olarak ele alındı ve her düzeneğin bedeli yazıldı. Bir şey hiç sorulmadı: modele verilen bilgi hep istemin içine elle kondu. Belge dağarcığı kurgu olarak vardı, ama bin belgelik bir dağarcıktan o isteme hangi üçünün gireceği, o seçimin hangi tabana karşı ölçüleceği ve yanlış üçlüyü seçmenin bedelinin ne olduğu bir kez bile sayılmadı. Sonraki kurs bu seçimi bir ölçüm nesnesine dönüştürür.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat