İçeriğe geç
academia.sh

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 ss ve birim sayısı pp ile 1/(s+(1s)/p)1 / (s + (1 - s) / p) olarak hesaplanır; pp sonsuza giderken tavan 1/s1 / s 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.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat