# Kernodeck Reprise v1 — gerçekten sürdürülen bir kontrol noktası

Bu özgün alıştırma, 24 sentetik satır üzerinde küçük bir sayısal ilişki öğrenir. Amacı **bir eğitimin sürdürülmesini doğrulamaktır**, en iyi modeli elde etmek veya bir GPU'yu ölçmek değil. Hesaplama açıkça **CPU** üzerinde, `float64` ile ve tek bir PyTorch iş parçacığıyla zorlanır.

Kontrol, 10 sürekli adımı 5 adım, bir kontrol noktası ve ardından **başka bir Python sürecinde** 5 yeni adımla karşılaştırır. Dördüncü bir süreç, rastgele üreteçlerin geri yüklenmesini kasıtlı olarak atlar: sapmasının tespit edilmesi gerekir. Hiçbir uzak kaynak, müşteri verisi veya önceden eğitilmiş ağırlık indirilmez.

## Ön koşullar

- PyTorch ve NumPy zaten kurulu bir Python ortamı. Sağlanan kanıt **Python 3.14.6, PyTorch 2.11.0+cu128 ve NumPy 2.4.4** ile çalıştırılmıştır.
- Dört küçük çıktı klasörü için yaklaşık 1 MB boş alan. Python bağımlılıkları kendi alanlarını kaplar.
- Komutları çıkarılan `kernodeck-reprise-v1` klasöründen çalıştırın.

`+cu128` son eki, test sırasında mevcut olan paketi tanımlar; bu alıştırmanın CUDA kullandığı anlamına gelmez. **Bu kaynak tarafından hiçbir CUDA, ROCm, AMP, çok kartlı veya dağıtılmış hesaplama doğrulanmaz.** DataLoader worker'ları kullanmaz. Başka bir ortam kendi kanıtını üretmelidir; sürümler veya platformlar arasında eşitlik garanti edilmez.

## Doğrulama komutu

```console
python -B verify_resume.py --output runs/preuve-cpu
```

`-B`, proje klasöründeki bytecode önbelleklerini önler. Çıktı dizini yeni olmalıdır: mevcut hiçbir deneme üzerine yazılmaz. Yeniden başlamak için örneğin `runs/preuve-cpu-2` kullanın.

Program, aynı Python yorumlayıcısıyla dört komut çalıştırır ve ardından `runs/preuve-cpu/verification.json` dosyasını yazar. Tam bir çalıştırma şunu bekler:

```json
{"device":"cpu","all_checks_passed":true,"positive":true,"negative_divergence_detected":true,"report":"verification.json"}
```

Çıkış kodu, protokol başarılıysa **0**, karşılaştırma başarısızsa **1**, doğrulama tamamlanamazsa **2** olur. Başarı hem olumlu sürdürmeyi hem de olumsuz kontrolün gözlemlenebilir başarısızlığını gerektirir. Yalnızca var olan bir kontrol noktası dosyası yeterli değildir.

## Üç adımı elle yapma

```console
python -B train.py --steps 10 --output runs/continu
python -B train.py --steps 5 --output runs/coupure
python -B train.py --steps 5 --resume runs/coupure/checkpoint.pt --output runs/reprise
```

Her satır ayrı bir süreç başlatır. `--steps` **ek adımlar** anlamına gelir, dolayısıyla üçüncü komut 10. adımda biter. Her klasör `checkpoint.pt`, onun özeti `checkpoint.pt.sha256` ve okunabilir bir özet olan `summary.json` içerir. Kontrol noktaları çalıştırma sırasında alıştırma tarafından oluşturulur; arşivde dağıtılmazlar.

Eksik durumu gözlemlemek için yeni bir klasör kullanın:

```console
python -B train.py --steps 5 --resume runs/coupure/checkpoint.pt --omit-rng-restore --output runs/reprise-incomplete
```

Bu son komut Python hatası olmadan bitebilir. **Bu, doğru bir sürdürmeyi kanıtlamaz.** `verify_resume.py` komutu sonuçları karşılaştırır ve farkı tespit eder.

## Modelin gerçekte yaptığı şey

`data.csv` iki değişkenli bir ızgara ve sentetik bir hedef içerir: `target = 0.7*x1 - 0.4*x2 + 0.15*x1*x2 + 0.1`. Hiçbir müşteri ölçümünü taklit etmez. Ağ iki giriş, sekiz nöronlu bir katman, `Tanh`, 0,25 dropout ve bir çıkıştan oluşur, yani 33 parametre.

Eğitim, başlangıç oranı 0,03 olan Adam kullanır. StepLR bu oranı her üç adımda bir ikiye böler. Her batch dört satır içerir: dolayısıyla 10 adım, ilk epoch'tan sonra bazı satırları yeniden gezerek 40 gözlem tüketir. Permütasyon, epoch, imleç ve tüketilen gözlem sayısı saklanır. Beş adım sonraki kesintide imleç 24 üzerinden 20'dir: sürdürme **veri gezintisinin içinde** gerçekleşir.

Üç rastgele kaynak çalışmayı etkiler: Python girişler üzerinde hafif bir kazanç ayarlar, bir NumPy PCG64 üreteci gürültüyü ve permütasyonları üretir, PyTorch dropout'u üretir. Başlangıç seed'ini yeniden sabitlemek, kesinti anında ulaşılan durumları yeniden oluşturmaz.

## Kontrol noktasının sakladığı ve hangi sırayla yeniden okunduğu

Sözlük ağırlıkları, Adam durumunu, StepLR durumunu, veri ilerlemesini, üç RNG'yi, kayıp ve oran geçmişini ve ayrıca kod ile CSV'nin parmak izlerini içerir. Devam ettirme için `train()` modu yeniden etkinleştirilir; son MSE ölçümü `eval()` kullanır ve dropout tüketmez.

Devam ettirmede kod önce modeli, iyileştiriciyi ve **zamanlayıcıyı** oluşturur, ardından ağırlıkları, zamanlayıcı durumunu ve iyileştirici durumunu yükler. RNG'ler en son, rastgelelik tüketen yapılar oluşturulduktan sonra geri yüklenir. Bu tercih [Optimizer.load_state_dict](https://docs.pytorch.org/docs/2.11/generated/torch.optim.Optimizer.load_state_dict.html) belgelerindeki uyarıya uyar.

Python durumu bir ilkel yapılar yapısıdır. PCG64 bir tamsayı ve dize sözlüğü sağlar; hiçbir NumPy `ndarray` nesnesi RNG durumu olarak serileştirilmez. PyTorch CPU durumu bir bayt tensörüdür. Sonraki çekilişler kaydedilen durum değiştirilmeden denetlenir.

## Kanıtın okunması ve tolerans

`verification-cpu.json`, bu sürümün gerçek bir çalıştırmasından elde edilen genel kanıttır. `source`, betiklerin ve CSV'nin SHA-256 değerlerini içerir. `protocol`, dört süreci, hassasiyeti ve toleransı tanımlar. `resume_boundary`, her RNG'nin sonraki çekilişini ve kesintiden sonra kullanılan sonraki oranı doğrular.

Karşılaştırma aynı satır sırasını, aynı ilerlemeyi ve aynı zamanlayıcı durumunu gerektirir. Ağırlıklar, iyileştirici durumu, kayıplar, MSE ve oranlar için kabul edilen maksimum mutlak sapma **1e-12** olup göreli tolerans yoktur (`rtol=0`). Rapor, sıfır olsalar bile ölçülen sapmaları korur. Ayrıca her iki yolculuğun sonunda RNG'lerin sonraki çekilişini doğrular.

Negatif kontrol, RNG'lerin unutulmasının sonucu değiştirdiğini göstermelidir. MSE'si daha düşük veya daha yüksek olabilir: bu test bir devam ettirme yörüngesini doğrular, bir kalite sıralamasını değil. Dolayısıyla beklenen bir sapma bu alt testte `passed: false` ve `divergence_detected: true` verir; genel protokol yine de başarılı olabilir.

## Yalnızca kendi checkpoint'inizi yükleyin

Yükleyici açıkça `torch.load(..., map_location="cpu", weights_only=True)` kullanır ve `weights_only=False` seçeneğine hiçbir geri dönüş sunmaz. Önce ilişkili parmak izini doğrular, boyutu sınırlar ve şemayı, sürümleri, kodu ve verileri kontrol eder. Eğitimin bir bölümünü sessizce sıfırlamak yerine eksik bir durumu reddeder.

Yalnızca **bu alıştırmayla oluşturduğunuz ve denetiminiz altında tuttuğunuz** checkpoint'leri kullanın. Parmak izi bir değişikliği algılamaya yarar; bir göndericiyi kimlik doğrulamaz. Kısıtlı yükleme, bilinmeyen bir dosyayı güvenilir kılmaz. Bkz. [torch.load](https://docs.pytorch.org/docs/2.11/generated/torch.load.html) ve [PyTorch serileştirmesi](https://docs.pytorch.org/docs/2.11/notes/serialization.html).

## Alıştırmayı projenize uyarlayın

Kendi eğitiminizin gerçekte tükettiği durumları belirleyin: sampler, augmentation, iyileştirici, zamanlayıcı ve özel üreteçler. AMP kullanıyorsanız scaler durumunu tutarlı bir sınıra ekleyin; bu alıştırma bunu yapmaz. Dağıtılmış bir eğitim ayrıca süreçlerini ve veri dağılımlarını ele almayı gerektirir.

Bu küçük kanıttan farklı bir model için kiralama süresi, verim, VRAM parmak izi veya devam ettirme garantisi çıkarmayın. Yöntemi izleyin: temsili kısa bir oyun, işin ortasında kesinti, başka bir süreç, açık karşılaştırma ve negatif kontrol.

## İçerik ve lisanslar

- `train.py`, `verify_resume.py`, bu belge ve manifest: MIT lisansı, bkz. `LICENSE-MIT.txt`.
- `data.csv`: CC0 1.0 kapsamında sunulan özgün sentetik veriler, bkz. `DATA-LICENSE-CC0.txt`.
- `verification-cpu.json`: bu alıştırmanın ölçümleri; kişisel veri, tam ortam, yerel makine yolları, jeton veya oturum kimlikleri içermez.
- `manifest.json`: dağıtılan dosyaların ve SHA-256 değerlerinin tam listesi. Manifest kendine referans vermez.
- `SOURCES.md`: resmi bağlantılar ve belgesel sınırlamalar.

PyTorch, NumPy ve Python bağımlılıkları kendi lisanslarını korur. ZIP içinde yeniden dağıtılmazlar.


## Kernodeck sunumu ve proje uyumluluğu

Bu 25 Eylül 2026 tarihli yeniden yayım, arşiv adını, dokümantasyonu ve markayı günceller. `train.py` ve `verify_resume.py` betikleri, CSV ve `verification-cpu.json`, 24 Eylül 2026 tarihinde yürütülen teslimattakiyle aynı kalır. `project` teknik alanı, mevcut rapor okuyucuları için tanımlayıcısını korur. Bu yeniden yayım için hiçbir CPU/GPU hesaplaması veya kontrolü yeniden çalıştırılmadı.
