GÖREV KAYDI

GÖREV KAYDI

KAYIT AÇIK

ATILIM UAV · YER KONTROL İSTASYONU

GÖREV KAYDI / DETAY

Arşiv

CANLI · OKUMA MODU

Yazılım

Google Colab'da Model Eğitimi: GPU Seçimi, Checkpoint Alma ve Kopan Oturumu Kurtarma

Google Colab'da Model Eğitimi: GPU Seçimi, Checkpoint Alma ve Kopan Oturumu Kurtarma

ŞEK. 01

KAYIT KÜNYESİ

Kategori

Yazılım

TARİH

TÜM KAYITLAR

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ı, imgsz=640, küçük veri setleri, hiperparametre denemeleri

L4 (Ada)

24 GB GDDR6, 300 GB/s, 72 W

T4'ün halefi, daha fazla VRAM

imgsz=1280 gibi büyük girdiler; T4'ün batch boyutunu kısmaya zorladığı durumlar

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:

from google.colab import drive
drive.mount('/content/drive')
from google.colab import drive
drive.mount('/content/drive')

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.

!cp /content/drive/MyDrive/suas/dataset.zip /content/
!unzip -q /content/dataset.zip -d /content/dataset
!df -h /content          # how much room is left on the ephemeral disk?
!nvidia-smi --query-gpu=name,memory.total --format

!cp /content/drive/MyDrive/suas/dataset.zip /content/
!unzip -q /content/dataset.zip -d /content/dataset
!df -h /content          # how much room is left on the ephemeral disk?
!nvidia-smi --query-gpu=name,memory.total --format

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

cache=False (varsayılan)

Hiçbir yerde, her epoch'ta diskten okunur

Veri seti ne RAM'e ne diske sığdığında

cache='disk'

.npy dosyaları hâlinde, diskte

Büyük veri setleri; /content diskinde yer varsa ilk tercih

cache=True (RAM)

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ı.

from ultralytics import YOLO

model = YOLO("yolo11m.pt")
model.train(
    data="/content/dataset/data.yaml",
    epochs=300,          # the starting point the docs recommend
    imgsz=1280,
    batch=-1,            # auto mode targeting ~60% GPU memory
    cache="disk",
    save_period=10,      # a separate checkpoint every 10 epochs
    project="/content/runs",
    name="yolo11m_1280",
)
from ultralytics import YOLO

model = YOLO("yolo11m.pt")
model.train(
    data="/content/dataset/data.yaml",
    epochs=300,          # the starting point the docs recommend
    imgsz=1280,
    batch=-1,            # auto mode targeting ~60% GPU memory
    cache="disk",
    save_period=10,      # a separate checkpoint every 10 epochs
    project="/content/runs",
    name="yolo11m_1280",
)

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
:

import subprocess
subprocess.Popen(["bash", "-c",
    "while true; do rsync -a /content/runs/ "
    "/content/drive/MyDrive/suas/runs/; sleep 600; done"])
import subprocess
subprocess.Popen(["bash", "-c",
    "while true; do rsync -a /content/runs/ "
    "/content/drive/MyDrive/suas/runs/; sleep 600; done"])

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:

from ultralytics import YOLO

model = YOLO("/content/drive/MyDrive/suas/runs/yolo11m_1280/weights/last.pt")
model.train(resume=True)
from ultralytics import YOLO

model = YOLO("/content/drive/MyDrive/suas/runs/yolo11m_1280/weights/last.pt")
model.train(resume=True)

Komut satırı karşılığı:

yolo train model=.../weights/last.pt resume
yolo train model=.../weights/last.pt resume

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 gelirse
last.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 bir
last.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şu
yolo11m_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.

©2026 ATILIM UAV TEAM

©2026 ATILIM UAV TEAM