# IteraGPU Lab v1

24 Eylül 2026 sürümü, yinelenebilir bir GPU deneyi hazırlamak için özgün kaynaklar. Bellek not defteri ve onun eşlikçisi küçük bir sentetik ağ çalıştırır: `Linear → GELU → Linear`. Hiçbir model veya veri kümesi indirmezler. Bu ağ ne bir LLM'dir, ne bir eğitimdir, ne de kiralık sunulan GPU'ları temsil eden bir kıyaslamadır.

## İçerik

- `mesure-memoire.ipynb`: bağımsız not defteri, kod dahil, hücreler kayıtlı çıktı içermez.
- `mesure_memoire.py`: aynı aritmetik ve aynı ölçüm protokolü, komut satırından kullanılabilir.
- `protocole-qualite.md`: süre ve maliyeti karşılaştırmadan önce tamamlanması gereken iş protokolü.
- `resultats-bruts.csv`: boş tablo, her gerçek geçiş için doldurulacak bir satır.
- `calcul_forfaits.py`: tam paket hesaplaması, harici bağımlılık olmadan.
- `tarifs-forfaits.csv`: 45 IteraGPU tarifesi, 15 model × 3 süre, 24 Eylül 2026 anlık görüntüsü.
- `LICENSE.txt`: kodun, not defterinin ve özgün belgelerin MIT lisansı.
- `MANIFEST.json`: arşivin dokuz üyesinin tam listesi, sekiz içerik dosyasının boyutları ve SHA-256'sı. Manifesto, kendine referans veren bir özetten kaçınmak için kendini özetsiz olarak bildirir.

`iteragpu-lab-v1.zip` arşivi bu dokuz dosyayı tek bir klasör altında içerir. İçinde ne GPU sonucu, ne Python ortamı, ne sürücü, ne de kimlik bilgisi bulunur. Dosyaları yeni bir dizine çıkarın. Not defteri tek başına da indirilebilir: eşlik eden betiği içe aktarmaz.

## Ön koşullar ve sınırlar

Aritmetik ve paket hesaplamaları yalnızca Python 3.10 veya üstünü ve standart kütüphanesini kullanır. Not defteri, bir Python not defterini açabilen bir araç gerektirir; hiçbir Jupyter sunucusu sağlanmaz. Ölçüm ayrıca, GPU, sürücü ve CUDA veya ROCm çalışma zamanıyla uyumlu mevcut bir PyTorch kurulumu gerektirir. Klasördeki hiçbir komut bu bileşenleri kurmaz.

Açık bir device seçin, örneğin `cuda:0`. PyTorch'un ROCm arka ucu da bu arayüz adını kullanır; bu, belirli bir AMD kurulumunun uyumluluğunu kanıtlamaz. Yüklenebilir PyTorch veya erişilebilir GPU olmadan `measure`, 2 çıkış koduyla ve net bir mesajla sonlanır. Hiçbir sahte ölçüm yazmaz ve CPU'ya geçmez. `environment` bir tanılamadır: geçerli bir çıktı, kullanılamayan bir GPU'yu bildirebilir.

## 1. Ağırlıkları GPU olmadan tahmin edin

```console
python mesure_memoire.py estimate --parameters 7000000000 --bits 16 --reserve-gib 4
```

Bu hesaplama bir parametre sayısı ve bir depolama genişliği alır. Bitleri bir üst tam bayt sayısına yuvarlar, ardından Gio'ya (`2**30` bayt) dönüştürür. Bir ondalık GB, `10**9` baytı temsil eder. 4 Gio, bu örnekte seçilen bir varsayımdır, ölçülen bir rezerv değildir. Sonuç; aktivasyonları, KV önbelleğini, niceleme üst verilerini, gradyanları, iyileştirici durumlarını veya kütüphaneleri otomatik olarak içermez. Gerçek bir modelin bir karta sığıp sığmayacağını öngörmez.

## 2. Mevcut ortamı doğrulayın

```console
python mesure_memoire.py environment --device cuda:0
```

Python'u, PyTorch sürümünü, CUDA/HIP derleme sürümünü, gerçekten görünen GPU'yu ve çalışma zamanının bildirdiği belleği kaydedin. Sürücü, sağlayıcının aracıyla ayrıca tespit edilmelidir. Betik ne ortam değişkenlerini ne de kişisel verileri toplar. PyTorch'a gömülü çalışma zamanı sürümü, sürücü sürümü değildir.

## 3. Açıkça sınırlandırılmış bir ölçüm yapın

Küçük başlayın, yeni bir süreçte:

```console
python mesure_memoire.py measure --device cuda:0 --batch 1 --context 16 --width 64 --dtype float32 --warmup 1 --repeats 2 --output mesures-petit-essai.json
```

Ardından MLP boyutlarını keşfetmek için daha büyük bir örnek komut şudur:

```console
python mesure_memoire.py measure --device cuda:0 --batch 2 --context 128 --width 1024 --dtype float32 --warmup 3 --repeats 5 --output mesures.json
```

Bir seferde tek bir boyutu artırın ve kullanılabilir belleği izleyin. İkinci komut önerilen bir yapılandırmadır; garantili bir kapasite ya da yayımlanmış bir sonuç değildir. Burada `context`, `[batch, context, width]` girdisinin konum sayısını ifade eder; dikkat mekanizması veya KV önbelleği yoktur. Ağırlıklar ve girdiler istenen dtype'ı paylaşır; autocast, gradyan, optimize edici, niceleme veya GPU'lar arası dağıtım yoktur. `float16` ve `bfloat16` fiili kuruluma bağlıdır ve yalnızca float32 denemesiyle doğrulanmaz.

JSON `environment`, `configuration`, `synthetic_model` ve `phases` içerir. Dosyanın yeni bir adı olmalıdır; betik mevcut bir sonucun üzerine yazmayı reddeder.

| Aşama | Kapsam |
| --- | --- |
| `model_load` | Modelin CPU'da oluşturulması ve başlatılması, seçilen GPU'ya aktarılması. Süre bu CPU hazırlığını içerir; bellek sayaçları yalnızca GPU'yu kapsar. |
| `inputs` | Sentetik girdilerin bu GPU'da oluşturulması. |
| `cold_forward` | Device, üretici ve girdiler başlatıldıktan sonra modelin ilk geçişi. Bu, makinenin veya sürücünün soğuk başlatması değildir. |
| `warmup` | Isınma geçişlerinin tamamı; bu süre sonraki tekrarlarla karıştırılmaz. |
| `warm_forward` | Isınmadan sonra her tekrar için bir satır. |

Her aşama, işlemden önce ve sonra device'ı senkronize eder, baseline'ları kaydeder ve ardından pikleri sıfırlar. Çıktılar bitiş ölçümünde hâlâ mevcuttur; bir sonraki geçişten önce serbest bırakılır. Ağırlıklar ve girdiler geçişler arasında kalıcıdır. Ayırıcı önbelleği korunur. Süreler Python maliyetini ve senkronizasyonu içerir: bunlar izole çekirdek süreleri değildir.

`allocated`, `reserved`'ın bir parçasıdır, dolayısıyla toplanmazlar. `peak_allocated_bytes` ve `peak_reserved_bytes` iki ayrı maksimumdur: bir önbellek hesaplamak için çıkarılmazlar. Baseline'ları, bitişleri ve mutlak pikleri ayrı ayrı karşılaştırın. Sayaçlar yalnızca bu sürecin seçilen GPU'daki PyTorch ayırıcısını kapsar; GPU'nun tüm belleğini, sürücüyü veya diğer süreçleri kapsamaz. Olası başka bir GPU ölçülmez. Değerler ayırıcıya ve yazılıma da bağlıdır: ortamı sonuçlarla birlikte saklayın.

## 4. Kaliteyi ve maliyeti ilişkilendirme

`protocole-qualite.md` dosyasını okuyun, faydalı işi ve eşiği denemeden önce belirleyin, ardından `resultats-bruts.csv` dosyasını gerçek gözlemlerle doldurun. Bu klasör hiçbir sınıflandırma külliyatı veya kalite ölçümü sağlamaz.

```console
python calcul_forfaits.py --gpu b200 --days 7 --lots 2
```

Bir B200 lotunun fiyatı zaten iki GPU içerir. İki lot dört GPU verir, ancak lot fiyatı yalnızca ikiyle çarpılır. Tarifeler, bu anlık görüntünün alındığı günkü IteraGPU kataloğuna aittir: tam birimler halinde sent USD, 3, 7 veya 30 günlük süreler, dönüşüm veya saatlik oran olmadan. CSV ne güncel kullanılabilirliği ne de rezervasyonu kanıtlar. Herhangi bir satın alma kararından önce sunulan teklifi doğrulayın.

`--accepted-results` seçeneği bilinçli olarak varsayılan değersizdir. Yalnızca gerçekten kabul edilen farklı faydalı birimlerin pozitif tam sayısıyla ekleyin. Birim maliyet, tam forfait fiyatını kullanır. Aynı benchmark'ın tekrarları yeni faydalı külliyatlar değildir. Payda girilmezse birim maliyet `null` kalır; sıfır reddedilir.

## Bu sürümün doğrulanması

Aritmetik, tarifeler ve önceden doldurulmuş çıktıların yokluğu Python 3.12.14 ve standart kütüphanesiyle doğrulanmıştır. Bu ortamda PyTorch yoktur: bu nedenle yokluk koruması gerçekten test edilmiştir. Hiçbir kurulum yapılmamıştır.

24 Eylül 2026'da yerel bir **GeForce RTX 5070** üzerinde, sürücü 610.62, Python 3.14.6, PyTorch 2.11.0+cu128, CUDA 12.8 ile sınırlı bir işlevsel deneme de yürütülmüştür: batch 1, bağlam 16, genişlik 64, float32, bir ısınma ve iki tekrar. Bu deneme, betiğin altı aşama satırının yalnızca bu tek durumda çalışmasını doğrular. Ne katalogdaki GPU'ların performansını, ne kiralık bir makineyi, ne bir LLM'yi, ne ROCm'i ne de diğer hassasiyetleri doğrular. Bu denemenin ölçümleri dağıtılan dosyalara önceden doldurulmamıştır. Notebook tüm çıktılarını boş tutar.

## Birincil teknik kaynaklar

24 Eylül 2026'da incelenen belgeler. Bu referanslar API'leri açıklar; gerçekten yürütülen PyTorch sürümü yukarıda belirtilmiştir ve belge sayfalarındakinden farklıdır.

- [PyTorch: CUDA bellek yönetimi](https://docs.pytorch.org/docs/2.14/notes/cuda.html#memory-management)
- [PyTorch: HIP/ROCm semantiği](https://docs.pytorch.org/docs/2.14/notes/hip.html)
- [PyTorch: device senkronizasyonu](https://docs.pytorch.org/docs/2.14/generated/torch.cuda.synchronize.html)
- [PyTorch: tepe değerlerin sıfırlanması](https://docs.pytorch.org/docs/2.14/generated/torch.cuda.memory.reset_peak_memory_stats.html)
- [PyTorch: ayrılan bellek](https://docs.pytorch.org/docs/2.14/generated/torch.cuda.memory.memory_allocated.html) ve [rezerve edilen bellek](https://docs.pytorch.org/docs/2.14/generated/torch.cuda.memory.memory_reserved.html)
- [PyTorch: ayrılan maksimum](https://docs.pytorch.org/docs/2.14/generated/torch.cuda.memory.max_memory_allocated.html) ve [rezerve edilen maksimum](https://docs.pytorch.org/docs/2.14/generated/torch.cuda.memory.max_memory_reserved.html)
- [Python: ondalık aritmetiği](https://docs.python.org/3/library/decimal.html) ve [CSV dosyaları](https://docs.python.org/3/library/csv.html)

## Lisans

Dosyadaki özgün eserler, `LICENSE.txt` içinde çoğaltılan MIT lisansı altında dağıtılmaktadır. Yeniden dağıtım sırasında bildirimi koruyun. Python, PyTorch ve adı geçen diğer araçlar arşivle birlikte dağıtılmaz ve kendi lisanslarını korur.
