Ders 18 / 18
Paralel İşleme Sınırları
Dağıtımın maliyeti ve ne zaman gereksiz olduğu, bölünemeyen pay ile hızlanma tavanı üzerinden sayılıyor: kurgu rapor zincirinin 6.753 dokunuşunun 310'u bölünemez, pay yüzde 4,59 ve tavan 21,78 kattır. Bölünemeyen pay yüzde 2 iken tavan 50, yüzde 30 iken 3,33 kattır ve 4.096 birim bile tavanı geçemez. Eklenen birim başına kazanç 0,91'den 0,00011'e iner; 256 birimden sonra her yeni birim binde ikiden az kazandırır. Tavanın iş boyuyla nasıl davrandığı bir varsayım kararıdır: bölünemeyen kalemler sabit sayılırsa tavan 206.388 kata çıkar, eşgüdüm kalemi ile satır kümesi başlığı iş boyuyla büyütülürse 43,64 katta doyar. Kurs kapanışı on sekiz dersin kaynaktaki ve geri okunan sayısını, müfredat kapanışı M26'nın altı kursunu ve 90 dersini tek tabloda toplar.
İçindekiler
Dört ders dağıtımın kalemlerini tek tek saydı: karışım geçişinde taşınan kayıt, iş başına eklenen eşgüdüm kalemi, dosya düzeninin okuttuğu değer. Üçü de azaltılabilir kalemlerdi ve her birinde savunulabilir iki karar bulundu. Bu ders azaltılamayan payı ölçer.
Bir işin her adımı bölünmez. Kaynağın şeması bir kez okunur, iş planı bir kez çıkarılır, sonuç tablosu bir kez kurulur ve yazılır; bu adımlar kaç birim eklenirse eklensin bir kez yapılır ve süreleri kısalmaz. Dersin ölçüsü bölünemeyen paydır — işin bölünemeyen kısmının toplam işe oranı — ve o paydan türeyen ikinci sayı hızlanma tavanıdır: birim sayısı sonsuza gitse bile hızlanmanın çıkabileceği en yüksek kat.
- OA25. Rapor zinciri önceki dört dersin saydığı kalemlerden kurulur ve kurgudur: satır sayısı 3.199, başlık değeri 150 (dördüncü dersin en iyi satır kümesi boyutundan), eşgüdüm kalemi 100 (üçüncü dersin dört aşama ve sekiz bölümlü zincirinden), karışım geçişinde taşınan kayıt 40 (ikinci dersten). Modeldir.
- OA26. İş birimi bir dokunuştur; ham milisaniye yazılmaz ve ölçülen sayı hızlanma katıdır.
- OA27. Hızlanma, bölünemeyen pay ve birim sayısı ile olarak hesaplanır; sonsuza giderken tavan olur.
- OA28. Bölünebilir adımların birimler arasında eşit dağıldığı varsayılır. Bölüm dengesizliği M26/K04’te ölçüldü ve burada hesaba katılmaz; bu varsayım tavanı iyimser verir.
- OA29. Bölünemeyen kalemlerin iş boyuyla büyüyüp büyümediği bir karardır ve iki varsayımla sınanır: sabit kalan seri ile üçüncü ve dördüncü dersin formüllerine göre büyüyen seri.
- OA30. Tavanın yüzde 90’ına varmak için gereken birim sayısı ikinin katları taranarak bulunur.
İşin Bölünemeyen Payı
# tavan.py — isin bolunemeyen payi ve hizlanma tavani. MODELDIR: rapor zinciri # adimlara ayrilir, her adima bir dokunus sayisi ve bolunup bolunmedigi yazilir; # olcu hizlanma katidir, ham sure degil. N = 3199 ADIM = (("kaynak semasinin okunmasi", 150, "hayir"), ("is planinin cikarilmasi ve gorev dagitimi", 100, "hayir"), ("satirlarin okunmasi ve suzulmesi", N, "evet"), ("yerel indirgeme", N, "evet"), ("karisim gecisinde tasinan kayit", 40, "evet"), ("son indirgeme (5 anahtar)", 5, "evet"), ("tek rapor tablosunun kurulmasi ve yazimi", 60, "hayir")) print(f"{'adim':<42}{'dokunus':>9}{'bolunur':>9}") for ad, d, b in ADIM: print(f"{ad:<42}{d:>9}{b:>9}") TOPLAM = sum(d for _, d, _ in ADIM) SERI = sum(d for _, d, b in ADIM if b == "hayir") S = SERI / TOPLAM print(f"toplam dokunus {TOPLAM}, bolunemeyen {SERI}, bolunemeyen pay " f"{100 * S:.2f} yuzde, hizlanma tavani {1 / S:.2f} kat")
adim dokunus bolunur kaynak semasinin okunmasi 150 hayir is planinin cikarilmasi ve gorev dagitimi 100 hayir satirlarin okunmasi ve suzulmesi 3199 evet yerel indirgeme 3199 evet karisim gecisinde tasinan kayit 40 evet son indirgeme (5 anahtar) 5 evet tek rapor tablosunun kurulmasi ve yazimi 60 hayir toplam dokunus 6753, bolunemeyen 310, bolunemeyen pay 4.59 yuzde, hizlanma tavani 21.78 kat
Bölünemeyen pay bir kod özelliği değil, bir adım listesidir. Tablodaki üç adım toplam 310 dokunuş tutuyor ve 6.753 dokunuşluk işin yüzde 4,59’unu ediyor. Üçünün de bölünmemesinin ayrı bir sebebi var: şema okuma kaynağın tek bir yerinde durur, iş planı bütün bölümleri görmek zorundadır, sonuç tablosu tek bir çıktı olmalıdır.
Yüzde 4,59 küçük bir sayı gibi durur. Karşılığı 21,78 kattır: bu işi kaç birime bölerseniz bölün, hızlanma 21,78 katı geçemez. Yüzde 4,59’luk bir pay hızlanmanın yirmi ikide birini baştan kesiyor.
Hızlanma Tavanı
# hizlanma.py — ayni is farkli bolunemeyen paylarla ve artan birim sayisiyla # kosulur. hizlanma(p) = 1 / (s + (1 - s) / p); tavan p sonsuza giderken 1 / s. BIRIM = (1, 2, 4, 8, 16, 64, 256, 1024, 4096) def hizlanma(s, p): return 1.0 / (s + (1.0 - s) / p) def yuzde90(s): p = 1 while hizlanma(s, p) < 0.9 / s and p < 10 ** 7: p *= 2 return p PAY = (0.02, S, 0.10, 0.30) print("birim".ljust(8) + "".join(f"s={s:.4f}".rjust(10) for s in PAY)) for p in BIRIM: print(f"{p:<8}" + "".join(f"{hizlanma(s, p):>10.2f}" for s in PAY)) print(f"{'tavan':<8}" + "".join(f"{1 / s:>10.2f}" for s in PAY)) print(f"{'p90':<8}" + "".join(f"{yuzde90(s):>10}" for s in PAY))
birim s=0.0200 s=0.0459 s=0.1000 s=0.3000 1 1.00 1.00 1.00 1.00 2 1.96 1.91 1.82 1.54 4 3.77 3.52 3.08 2.11 8 7.02 6.05 4.71 2.58 16 12.31 9.48 6.40 2.91 64 28.32 16.44 8.77 3.22 256 41.97 20.15 9.66 3.30 1024 47.72 21.35 9.91 3.33 4096 49.41 21.67 9.98 3.33 tavan 50.00 21.78 10.00 3.33 p90 512 256 128 32
Tablonun sağ sütunu en öğreticisidir. Bölünemeyen pay yüzde 30 olduğunda 4.096 birim 3,33 kat veriyor: dört bin doksan altı birim, üç buçuk kat. Aynı işin iki birimle hızlanması 1,54 kat; yani son 4.094 birim yalnız 1,79 kat ekliyor. Payın yüzde 30 olması işin yüzde 70’inin bölünebildiği anlamına gelir ve bu, kulağa dağıtılabilir bir iş gibi gelir.
Sol sütun aynı şeyi tersinden gösteriyor. Bölünemeyen pay yüzde 2 iken tavan 50 kat ve 4.096 birim 49,41 kat veriyor. Yüzde 2 ile yüzde 30 arasındaki fark on beş kat değil, tavanda on beş kat farktır: 50’ye karşı 3,33. Bölünemeyen pay doğrusal artar, tavan tersine orantılı düşer.
Son satır işin pratik tarafını veriyor. Tavanın yüzde 90’ına varmak için gereken birim sayısı, pay küçüldükçe büyüyor: yüzde 30’da 32 birim yetiyor, yüzde 2’de 512 birim gerekiyor. Küçük bölünemeyen pay yüksek tavan verir, ama o tavana varmak için daha çok birim ister.
Eklenen Birim ve Tavanın Kendisi
# sinir.py — tavan yaklastikca eklenen birimin kazandirdigi kat erir; ve # bolunemeyen pay is boyuyla degisir cunku bolunebilir kalemler buyur, # bolunemeyen kalemler buyumez. print(f"bolunemeyen pay {100 * S:.2f} yuzde; tavan {1 / S:.2f} kat") print(f"{'birim':<8}{'hizlanma':>10}{'onceki katindan artis':>23}" f"{'eklenen birim basina':>22}{'tavana uzaklik':>16}") onceki_p, onceki_h = 1, 1.0 for p in BIRIM[1:]: h = hizlanma(S, p) print(f"{p:<8}{h:>10.2f}{h - onceki_h:>23.3f}" f"{(h - onceki_h) / (p - onceki_p):>22.5f}{1 / S - h:>16.2f}") onceki_p, onceki_h = p, h import math SABIT = sum(d for _, d, b in ADIM if b == "hayir") def buyuyen(n): """03'un esgudum kalemi ve 04'un baslik degeri is boyuyla buyur.""" bolum = max(8, math.ceil(n / 400000)) return 4 * bolum * 3 + 4 + 3 * math.ceil(n / 64) + 60 print(f"{'is boyu':<12}{'bolunebilir':>13}{'sabit seri':>11}{'sabit tavan':>13}" f"{'buyuyen seri':>14}{'buyuyen tavan':>15}{'p90':>9}") for n in (3199, 31990, 319900, 3199000, 31990000): bol = 2 * n + 45 s1, s2 = SABIT / (bol + SABIT), buyuyen(n) / (bol + buyuyen(n)) print(f"{n:<12}{bol:>13}{SABIT:>11}{1 / s1:>13.1f}{buyuyen(n):>14}" f"{1 / s2:>15.2f}{yuzde90(s2):>9}") EN_BUYUK = 31990000 doyum = (2 * EN_BUYUK + 45 + buyuyen(EN_BUYUK)) / buyuyen(EN_BUYUK) print(f"sabit seri varsayimi tavani is boyuyla dogru orantili buyutur; buyuyen " f"seri varsayiminda tavan {doyum:.2f} katta doyar ve yuzde 90'ina 512 " f"birimde varilir")
bolunemeyen pay 4.59 yuzde; tavan 21.78 kat birim hizlanma onceki katindan artis eklenen birim basina tavana uzaklik 2 1.91 0.912 0.91222 19.87 4 3.52 1.604 0.80180 18.27 8 6.05 2.539 0.63466 15.73 16 9.48 3.421 0.42762 12.31 64 16.44 6.968 0.14517 5.34 256 20.15 3.704 0.01929 1.64 1024 21.35 1.202 0.00157 0.43 4096 21.67 0.323 0.00011 0.11 is boyu bolunebilir sabit seri sabit tavan buyuyen seri buyuyen tavan p90 3199 6443 310 21.8 310 21.78 256 31990 64025 310 207.5 1660 39.57 512 319900 639845 310 2065.0 15157 43.21 512 3199000 6398045 310 20639.9 150115 43.62 512 31990000 63980045 310 206388.2 1500556 43.64 512 sabit seri varsayimi tavani is boyuyla dogru orantili buyutur; buyuyen seri varsayiminda tavan 43.64 katta doyar ve yuzde 90'ina 512 birimde varilir
İlk tablo eklenen birimin ne kazandırdığını veriyor. İkinci birim 0,91 kat ekliyor; 4.096’ncı birim grubundaki her birim 0,00011 kat. 256 birimden sonra eklenen her birim binde ikiden az kazandırıyor ve tavana uzaklık 1,64 kata inmiş oluyor. Aradan sonrası ölçülebilir bir kazanç değil, yalnızca tavana asimptotik yaklaşmadır.
İkinci tablo dersin gizlenen kararıdır. “Küme büyüdükçe dağıtım daha çok kazandırır” cümlesi doğrudur, ama ne kadar kazandırdığı bir varsayıma bağlıdır. Bölünemeyen kalemler sabit sayılırsa tavan iş boyuyla doğru orantılı büyür ve 31.990.000 satırda 206.388 kata çıkar. Oysa üçüncü ders eşgüdüm kaleminin bölüm sayısıyla, dördüncü ders satır kümesi başlığının satır kümesi sayısıyla büyüdüğünü ölçtü. Bu iki formül hesaba katıldığında tavan 43,64 katta doyuyor ve iş boyunu büyütmek onu bir daha oynatmıyor.
İki sayı arasındaki oran 4.729 kattır ve ikisi de aynı modelden, aynı kümeden, aynı zincirden çıkıyor. Aradaki tek fark bölünemeyen kalemlerin iş boyuyla büyüyüp büyümediği varsayımıdır ve o varsayım hiçbir hızlanma raporunda kendiliğinden yazılmaz.
Dağıtımın ne zaman gereksiz olduğu da buradan okunur. Kurgu kümenin 3.199 satırında tavan 21,78 kat görünüyor, ama üçüncü ders bu iş boyunda bir eşgüdüm kalemine yalnız 61,5 satır düştüğünü ve kalem başına 10.000 satır hedefinin 520.000 satırda karşılandığını saymıştı; birinci ders de kümenin seçilen kararla 23.173.893 satırda tek makineye sığmaz hale geldiğini yazmıştı. Üç sayı aynı yöne işaret ediyor: bu küme dağıtılmaz. Tavanın yüksek olması dağıtmayı gerektirmez; dağıtmayı gerektiren şey işin kendisinin tek makineyi aşmasıdır.
Özet
- Bölünemeyen pay bir kod özelliği değil bir adım listesidir: şema okuma, iş planı ve tek rapor tablosunun yazımı 310 dokunuş tutar ve 6.753 dokunuşluk işin yüzde 4,59’unu eder.
- Yüzde 4,59’luk pay hızlanma tavanını 21,78 kata çiviler; pay yüzde 2 iken tavan 50, yüzde 30 iken 3,33 kattır ve 4.096 birim bile tavanı geçemez.
- Tavana varmak da bedavaya gelmez: tavanın yüzde 90’ına yüzde 30’luk payda 32, yüzde 2’lik payda 512 birimde varılır.
- Eklenen birimin kazancı erir: ikinci birim 0,91 kat ekler, 256 birimden sonra her birim binde ikiden az ekler ve tavana uzaklık 1,64 kata iner.
- Tavanın iş boyuyla davranışı bir varsayım kararıdır: bölünemeyen kalemler sabit sayılırsa tavan 206.388 kata çıkar, üçüncü ve dördüncü dersin formülleriyle büyütülürse 43,64 katta doyar; iki sayı arasında 4.729 kat vardır.
- Yüksek tavan dağıtmayı gerektirmez: 3.199 satırlık kümede tavan 21,78 kat olduğu halde kalem eşiği 520.000, hacim eşiği 23.173.893 satırdır.
Kurs Kapanışı
On sekiz dersin her birinde iki sayı yan yana durdu: veride ne olduğu ve okuyana ne ulaştığı. Her sayı kendi dersinden okundu.
| Ders | Kaynaktaki sayı | Geri okunan sayı | Fark |
|---|---|---|---|
| Grafik 01 grafik türü seçimi | doğu - kuzey 4,463 m³ | alan kanalından 2,500 m³ | -1,963 m³ |
| Grafik 02 dağılım görselleştirme | 2 tepe, uç değer 45,47 m³ | kutu özetinde 0 tepe | 2 tepe kayıp |
| Grafik 03 kategorik görselleştirme | ayrılması gereken 39 çift | yığılmışta 35 çift | 4 çift, hata yüzde 47,2 |
| Grafik 04 ilişki görselleştirme | 1.101 nokta | 309 dolu hücre | 792 nokta, yüzde 71,9 |
| Grafik 05 zaman serisi görselleştirme | eğilim -0,140 m³/dönem | -0,1347 m³/dönem | 0,0053, bedeli 12 dönem |
| Grafik 06 coğrafi görselleştirme | ortalama 19,713 m³ | alanla ağırlıklı 18,484 m³ | -1,228 m³ |
| Grafik 07 görsel yanıltma | kuzey 20,210 m³ | kırpılmış eksende 8,019 m³ | -12,191 m³ |
| Grafik 08 erişilebilir grafik | 8 seri | ton okunmayınca 4 seri | 4 seri, yedeklemeyle 0 |
| Rapor 01 gösterge tablosu tasarımı | 12 ölçüt | karara göre düzende 9 ölçüt | 3 ölçüt dışarıda |
| Rapor 02 anahtar başarım göstergeleri | kapsama 60,948 | altı yolla 93,766’ya kadar | 32,818 puan |
| Rapor 03 iş zekâsı araçları | nihai değer 63,055 | önceden toplanmışta 36,042 | 27,013 puan |
| Rapor 04 veriyle anlatı kurma | 16 önerme | bir adım eksikken 2-4 çıkarım | 11 yanlış varsayılan, 9’u lehte |
| Rapor 05 rapor yeniden üretilebilirliği | 59 sabitlenecek kalem | 11 kalemin 10’u oynatır | 36,042 ↔ 100,000 |
| Ölçek 01 büyük veri kavramı | satır başına 278,0 bayt | eşik 23.173.893 satır | 7.724.631 ↔ 247.188.193 |
| Ölçek 02 eşle-indirge modeli | 3.199 kayıt | karışımda 40 kayıt | 79,97 kat |
| Ölçek 03 dağıtık analiz motorları | 8 işlem | 4 aşama, 100 kalem | 61,5 satır/kalem |
| Ölçek 04 sütunlu depolama biçimleri | 22.393 değer | en iyi düzende 1.174 değer | 19,07 kat |
| Ölçek 05 paralel işleme sınırları | 6.753 dokunuş | tavan 21,78 kat | 43,64 ↔ 206.388 |
Üçüncü sütun kursun kuralıdır: bir gösterim, okuyucunun geri okuyabildiği sayı kadar doğrudur; geri okunamayan gösterim raporlanmamış sayılır. İlk sekiz satırda geri okunan şey bir m³ değeri, bir tepe sayısı ya da bir seri sayısıdır ve fark sütunu kanalın kaybettiğini verir. Ortadaki beş satırda okuyucu bir karar vericidir ve geri okunan şey tek bir sayı değil karardır: kaç ölçüt görülüyor, ölçüt ölçtüğünü oynatmadan nereye taşınabiliyor, aynı rapor ikinci kez üretilebiliyor mu.
Son beş satırda geri okunan sayı bir gösterimden değil ölçekten okunuyor: taşınan kayıt, eşgüdüm kalemi, okunan değer, hızlanma katı. Kural değişmiyor. Bir hesabın bölünebilirliği de ancak sayıldığı kadar bilinir ve sayılmayan kalem hesabın içinde değil, faturanın içinde çıkar.
M26’nın altı kursu aynı ekseni altı ayrı yerde okudu.
| Kurs | Ders | Ölçü ekseni | Birim |
|---|---|---|---|
| K01 Veri Analitiğine Giriş | 9 | sayı tanım anında oynar | tanım |
| K02 Elektronik Tablolarla Analiz | 11 | kararın yeri | kararın kurtarılabilirliği |
| K03 Veri Toplama ve Hazırlama | 17 | satır sayısı yolda değişir | giren ve çıkan satır |
| K04 Python ile Veri Analizi | 22 | soyutlamanın kazandırdığı ve gizlediği | kazanç ve gizlenen karar |
| K05 İstatistiksel Analiz ve Keşifsel Veri Analizi | 13 | sayının oynama payı | pay |
| K06 Görselleştirme, Raporlama ve Ölçekli Analiz | 18 | kanalın geri okuttuğu sayı | geri okuma hatası |
| Toplam | 90 |
Doksan ders tek bir kuralı altı kez kurdu: bir sayının yanında hangi kararla üretildiği yazılmıyorsa o sayı bir bulgu değil, bir seçimdir. Kural her kursta başka bir yerde sınandı — tanımda, elektronik tablonun hücresinde, hazırlama adımında, çağrının varsayılanında, oynama payında ve kodlama kanalında — ve her seferinde aynı biçimde ödendi: aynı veriden, aynı soruya, iki savunulabilir kararla iki farklı sayı çıktı ve ikisi de yan yana basıldı. Doğu ile kuzey arasındaki 4,463 m³’lük fark bu doksan dersin hepsinde durdu ve hiçbir yerde kendiliğinden bir şey söylemedi.
Doksan derste veriden karara giden yolun her adımı ölçüldü ve her adımda kararın sayıyı oynattığı gösterildi. Ama bütün bu kararları insan verdi: hangi satır sayılacak, hangi eşik seçilecek, hangi kanal kullanılacak, iş hangi anahtara göre bölünecek. Kararı veriden öğrenen bir yordamın hangi sayıyı oynattığı ve o yordamın kendi kararlarının nerede durduğu hiç sorulmadı. Sonraki müfredat, Makine Öğrenmesi ve Veri Bilimi, bu soruyla açılır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.