Bir Daha Asla Eğitim Kaybetmeyin: Geçici GPU'lar İçin Checkpoint ve Devam Etme Kılavuzu

İçindekiler
Bulut sağlayıcılarının sunduğu geçici (ephemeral/spot) GPU’lar, derin öğrenme modellerini eğitmek için son derece maliyet etkin bir seçenektir. Ancak, beklenmedik kesintiler veya süre aşımları nedeniyle saatlerce süren eğitimlerin bir anda yok olması geliştiricilerin en büyük kabuslarındandır. Bu kılavuz, eğitim sürecinizi kesintilere karşı dayanıklı (bulletproof) hale getirecek ve kayıpları önleyecek 5 temel prensibi ele alıyor.
1. Sadece Ağırlıkları Değil, Tüm Durumu Kaydedin
En sık yapılan hata, checkpoint alırken yalnızca model ağırlıklarını (model.state_dict()) kaydetmektir. Eğitim kesintiye uğradığında kaldığı yerden tam olarak ve tutarlı şekilde devam edebilmesi için şu bileşenlerin tamamı kaydedilmelidir:
- Optimizer Durumu: Momentum ve varyans değerlerinin korunması için optimizer'ın durum sözlüğü.
- Öğrenme Oranı (LR) Zamanlayıcı: Zamanlayıcının kaldığı mevcut adım.
- Epoch Sayacı ve RNG (Rassal Sayı Üreteci) Durumu: Eğitimin tekrarlanabilirliğini ve sırasını korumak için tüm kütüphanelerin (PyTorch, NumPy, Python) RNG durumları.
2. Bozuk Dosyaları Önlemek İçin Atomik Yazma Yapın
Yazma işlemi sırasında makinenin veya bağlantının kapanması checkpoint dosyasının bozulmasına yol açar. Bunu önlemek için dosyayı doğrudan hedef konuma yazmak yerine önce geçici bir dosyaya yazın ve ardından işletim sisteminin atomik dosya değiştirme (rename) fonksiyonunu kullanın. Böylece diskte ya eski çalışan sürüm kalır ya da yeni sürüm tamamen tamamlanmış olarak yer alır; asla bozuk bir ara dosya oluşmaz.
3. "Tamamlandı İşareti" ile Süreci İdempotent Hale Getirin
Bir eğitim kodunun idempotent olması, aynı kodun tekrar çalıştırıldığında kaldığı yerden güvenle devam etmesi ve tamamlanmış işleri yeniden yapmaması anlamına gelir. Eğitimin başarıyla bittiğini belirten küçük bir işaretçi dosyası (done_marker) kullanmak, sistemin otomatik yeniden başlatmalarda gereksiz yere baştan çalışmasını engeller.
4. Durumu Makineden Daha Uzun Ömürlü Depolarda Saklayın
Geçici sanal makinelerin yerel diskleri makine geri çağrıldığında tamamen sıfırlanır. Bu nedenle checkpoint verilerinizi yerel disk yerine S3, GCS veya ağ tabanlı dosya sistemleri (NFS) gibi kalıcı harici depolama alanlarında saklayın. Kod tabanınızı hızlı yerel diskte tutarken checkpoint klasörünü harici depolamaya sembolik bağ (symlink) ile yönlendirebilirsiniz.
5. Devam Etmek Kaldığın Yerden Sürdürmektir, Yeniden Başlatmak Değil
Kodunuz başlangıçta otomatik olarak mevcut bir checkpoint olup olmadığını kontrol etmelidir. Eğer geçerli bir checkpoint varsa, tüm eğitim durumunu yükleyip bir sonraki epoch'tan devam etmeli; yoksa sıfırdan başlamalıdır. Ayrıca log dosyalarını her seferinde üzerine yazmak yerine "ekleme (append)" modunda açmak geçmişinizi korur.
Pratik Yazılım Çıkarımları
Yazılım geliştiriciler ve veri bilimciler için bu yöntemler sadece maliyet tasarrufu sağlamaz, aynı zamanda MLOps süreçlerinde iş sürekliliği ve güvenilirlik kazandırır. Sistem mimarilerini tasarlarken "her an çökebilecek" altyapıları göz önünde bulundurarak hata toleranslı (fault-tolerant) kod yazmak, modern bulut yerel (cloud-native) uygulama geliştirmenin en kritik kurallarından biridir.
[Orijinal kaynağa buradan ulaşabilirsiniz.](https://dev.to/tanay_joshi_04/never-lose-a-training-run-again-a-checkpoint-and-resume-playbook-for-ephemeral-gpus-2m1j)
Bu konuyu daha derinlemesine öğrenmek ister misin?
Edumints'teki ücretsiz kursları incele ve bugün başla.
Kurslara Göz At →