ŞEK. 01
KAYIT KÜNYESİ
Kategori
Yazılım
TARİH
Bir yarışma takımının donanım bütçesi neredeyse her zaman uçan kısma gider. Eğitime kalan
genelde bir dizüstü bilgisayar ve bir Google Colab sekmesidir. Colab da işi görür;
ta ki koşunun üçüncü saatinde sekme "runtime disconnected" deyip her şeyi silene kadar.
İlk eğitimlerimizi tam olarak böyle kaybettik. YOLO11m'i imgsz=1280 ile eğitiyorduk;
eğitim çıktıları Google Drive'a yazılıyordu, veri seti de Drive'da duruyordu.
Oturum düştüğünde ne kullanılabilir bir ağırlık dosyamız kaldı ne de eğitimi kaldığı
yerden sürdürmenin bir yolu. Sıfırdan başladık.
Bu yazı, aynı hatayı bir daha yapmamak için kurduğumuz düzeni anlatıyor: hangi GPU'yu
neden seçiyoruz, veriyi nereye koyuyoruz, checkpoint'i (ara kayıt dosyası) nasıl alıyoruz ve
kopmadan sonra eğitimi nasıl sürdürüyoruz. Anlatılanlar Colab'a özel, ama mantık sizi
her an kesebilecek her ortamda geçerli.
Colab katmanları ve GPU tipleri
Colab'ın ücretsiz katmanında genelde bir NVIDIA T4 düşer. Ücretli katmanlar L4 ve A100
erişimini açar; hangi kartı alacağınız o andaki müsaitliğe bağlıdır; Colab'ın kendi
belgeleri GPU tiplerinin zaman içinde değiştiğini açıkça yazar. Yani "Pro'ya para verdim,
A100 garantidir" diye bir şey yok.
Üç kartın resmî özellikleri ve her birinin gerçekte neye yaradığı:
GPU | VRAM | Öne çıkan yanı | Ne zaman seçilir |
|---|---|---|---|
T4 (Turing) | 16 GB GDDR6, 70 W | Ücretsiz katmanın standardı | Deneme koşuları, |
L4 (Ada) | 24 GB GDDR6, 300 GB/s, 72 W | T4'ün halefi, daha fazla VRAM |
|
A100 (Ampere) | Colab'daki 40 GB SXM4 varyantı | En yüksek işlem hacmi | Uzun, nihai eğitim koşuları; saat başına en çok işlem birimi yakan kart da bu |
Biz şöyle kullanıyoruz: veri hattını ve augmentation ayarlarını T4'te birkaç epoch
koşarak doğruluyoruz, uzun nihai eğitimi daha fazla VRAM'i olan bir kartta yapıyoruz. imgsz=1280'de T4'ün
16 GB'ı batch boyutunu gözle görülür biçimde kısıtlıyor.
Ücretli katmanlar "işlem birimi" (compute unit) tüketimi üzerinden işler; daha güçlü bir kart
saat başına daha çok birim yakar. Fiyatlar ülkeye göre değişir ve zamanla güncellenir, bu yüzden
burada rakam vermiyoruz; Colab'ın kendi fiyatlandırma sayfasına bakın (2026 itibarıyla plan yapısı
Free / Pro / Pro+ şeklinde).
Oturum ve boşta kalma limitleri
Burada bilinmesi gereken en önemli şey: Google bu limitleri resmî olarak yayımlamıyor. Colab SSS'i, limitlerin zaman içinde
değişebildiği için tam olarak yayımlanmadığını söylüyor. İnternette dolaşan
"90 dakika boşta, en fazla 12 saat" rakamları gözleme dayalı; SSS'in gerçekte söylediği tek şey, ücretsiz
katmanda not defterlerinin "müsaitliğe ve kullanım alışkanlıklarınıza bağlı olarak en fazla 12 saat"
çalışabildiği.
Resmî olarak doğrulanabilen tek nokta arka planda çalıştırma: Colab Pro+, yeterli işlem biriminiz olduğu sürece
24 saate kadar kesintisiz kod çalıştırmayı destekler; yani sekmeyi kapatsanız bile
eğitim devam eder. Diğer katmanlarda tarayıcı bağlantısı koptuğunda oturum da onunla
birlikte gider.
Pratik sonuç: limiti tahmin etmeye çalışmak yerine, bir kopmanın maliyetini sıfıra yaklaştırın.
Eğitiminiz her an kesilebileceği varsayımı üzerine kurulmalı.
Veriyi Drive'da bırakmayın, /content'e kopyalayın
Drive'ı bağlamak tek satır:
Bağlanan Drive yerel bir klasör gibi görünür ama değildir: her okuma FUSE aracılığıyla ağ
üzerinden gider. Tek bir büyük dosyada fark etmezsiniz; on binlerce küçük JPEG'de belirgin bir
darboğaza dönüşür. Topluluk ölçümleri Drive'dan okumanın yerel diske göre birkaç kat yavaş
olduğunu gösteriyor; bu da epoch sürenizi GPU'nun değil, veri hattının belirlemesi demek.
Doğru düzen: veri setini Drive'da tek bir zip olarak tutun, oturumun başında /content
altına kopyalayıp orada açın.
Darboğazın nerede olduğunu anlamanın en hızlı yolu: eğitim sırasında nvidia-smi çalıştırın.
GPU kullanımı düşük kalıyorsa sorun modelde değil, veri yüklemede.
cache='disk' mi, cache=True mu?
Ultralytics'in cache argümanı görüntüleri önbelleğe alır. Varsayılan değeri False.
Ayar | Nerede | Ne zaman |
|---|---|---|
| Hiçbir yerde, her epoch'ta diskten okunur | Veri seti ne RAM'e ne diske sığdığında |
|
| Büyük veri setleri; |
| Sistem belleği | Küçük veri seti ve bol RAM; en hızlısı, ama oturumu düşürme riski var |
Bizim imgsz=1280 ölçeğimizde cache=True oturumun belleğini doldurup çalışma zamanını çökertti;
üstelik hata mesajı bunu açıkça söylemiyor, oturum sessizce yeniden başlıyor. cache='disk'
bu ölçekte daha güvenli bir orta yol.
Checkpoint: save_period ile ara kayıt almak
Varsayılan olarak (save=True) Ultralytics her epoch sonunda last.pt ve best.pt dosyalarını
günceller. save_period argümanı ise numaralı ara kopyalar üretir; varsayılanı -1,
yani kapalı.
batch=-1 işi kolaylaştırıyor: belgelere göre yaklaşık %60 GPU bellek kullanımını hedefleyen bir batch
boyutu seçiyor. Kartlar arasında geçerken her seferinde elle ayar yapmaktan kurtarıyor.
Dikkat: project yolu Drive'da değil, /content altında. Drive'a yedeklemeyi ayrı bir işe
bırakıyoruz:
Bu döngü çıktıları her 10 dakikada bir Drive'a kopyalar. Yedekleme arka planda çalışırken
eğitim yerel diske yazmaya devam eder. Oturum düştüğünde en fazla 10 dakikalık ilerleme kaybedersiniz.
resume=True ile kaldığınız yerden devam etmek
Kopma yaşandığında yapılacak şey, eğitimi last.pt'den sürdürmek:
Komut satırı karşılığı:
resume=True yalnızca ağırlıkları değil, optimizer durumunu, öğrenme oranı zamanlayıcısını ve
epoch sayacını da geri yükler. "Devam"ın gerçekten devam anlamına gelmesi bu yüzden; ağırlıkları elle
yükleyip sıfırdan yeni bir koşu başlatmakla aynı şey değil.
İki önemli not: en az bir epoch tamamlanmış olmalı (yoksa geri yüklenecek bir durum yok) ve
eğitim argümanları checkpoint'in içindeki kayıttan okunur; bu yüzden epochs
gibi değerleri yeniden vermek beklediğiniz etkiyi yaratmaz.
Sık yapılan hatalar
1. Eğitim çıktısını doğrudan Drive'a yazmak. project=/content/drive/... vermek, her epoch sonunda ağ üzerinden
bir yazma demek. Yavaş olmasının yanında, kopma yazmanın ortasına denk gelirselast.pt bozuk kalabilir. Yerele yazın, periyodik olarak kopyalayın.
2. Numaralı checkpoint almamak. Varsayılan save_period=-1 ile elinizde sürekli üzerine yazılan tek birlast.pt olur. O bozulursa geri dönülecek hiçbir nokta kalmaz.
3. Klasör adının sessizce değişmesi. exist_ok=False varsayılan olduğu için ikinci koşuyolo11m_12802 gibi yeni bir klasöre düşer. Ardından "hangi last.pt?" sorusu başlar. Klasör adını
bilinçli yönetin.
4. Suçu GPU'ya atmak. Epoch süresi beklediğinizden uzunsa önce veri hattına bakın. Düşük GPU
kullanımı kartın yavaş olduğu anlamına gelmez; verinin yeterince hızlı gelmediği anlamına gelir.
5. Güçlü kartın boşta beklemesi. Eğitim bittikten sonra açık bırakılan bir A100 oturumu sessizce
işlem birimi yakar. Eğitimin sonuna oturumu kapatan bir adım ekleyin.
6. Sekmeyi kapatabileceğinizi varsaymak. Arka planda çalıştırma yalnızca Pro+'ta ve yalnızca yeterli
işlem birimiyle mümkün. Aksi hâlde tarayıcının açık kalması gerekir.
Pratik özet
1. Veriyi Drive'da zip olarak tutun, oturumun başında /content altına açın. Doğrudan Drive'dan
okumak veri hattını darboğaza çevirir.
2. cache='disk' ile başlayın. cache=True en hızlısı, ama büyük görüntülerde
oturumu düşürüyor.
3. save_period ayarlayın. Tek bir last.pt'ye güvenmek, tek kopyalı bir yedeğe güvenmektir.
4. Çıktıyı yerele yazın, periyodik olarak Drive'a kopyalayın. Ne kadar ilerleme kaybını göze aldığınıza siz karar verirsiniz;
bizde bu 10 dakika.
5. Kopma olduğunda: last.pt + resume=True. Optimizer ve zamanlayıcı durumu da geri gelir;
argümanları yeniden vermeye çalışmayın.
6. Uzun koşuyu başlatmadan önce 2-3 epoch'luk bir deneme yapın. Yol hataları, sınıf sayısı
uyuşmazlıkları ve bellek sorunları üçüncü saatte değil, ilk epoch'ta ortaya çıkar.
