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.