Bir GPU'da On Altı Gün Hesaplama
Tek Uzun Çalıştırma
ANDREA-120M bir RTX 4090'da ~23 gün sürer (FP16, 6 adım/dk, 200K adım). Duvar gücü, çekirdek panikleri, proxy çökmeleri ve kasıtlı konfigürasyon değişiklikleri bu pencerede olur. Kontrol noktaları olmadan tek bir aksaklık tüm çalıştırmayı çöpe atar.
v1 bir hatadan (lr=0.001 fazla agresif) 27K adımı kaybetti çünkü başlatma noktasından daha yakın kontrol noktası yoktu. v2 bu dersi emdi: kontrol noktası ritmi her 100 adıma düştü ve bir CUDA sinyal işleyicisi SIGTERM'de kontrol noktası yazmasını garanti eder.
Üç Rol
Bir checkpoint aynı anda üç iş yapar:
1. Kurtarma noktası. İşlem ölür, makine yeniden başlar, kernel panik: en son step_NNNNNN.bin'den devam et.
2. Parlatma pivotu. Adım 112,619: müfredatı yeniden eğitmeden değiştir. SIGUSR1 temiz bir checkpoint zorlar, proxy durur, yeni tavanlar & tabanlar gönderilir, CUDA yeni bir politika altında kaydedilen noktadan devam eder.
3. Denetim çatalı. Aynı başlangıç ağırlıklarında iki konfigürasyonu karşılaştır: bir checkpoint kopyala, iki farklı dalı ilerlet, hangisinin yakınsadığını gözlemle.
Her 100 adım, 6 adım/dakika hızında yazılar arasında ~17 dakika eğitim sağlar. 100 adım ayrıca sample_every ile eşleşir: her checkpoint bir taze örnek denetimine karşılık gelir ve her örnek denetimi bir kurtarılabilir noktaya karşılık gelir.
Bir Dosya İçin Üç Rol
Bir Dosyada Beş Bölge
Biçim
Her step_NNNNNN.bin dosyası beş bitişik bölge içerir:
[int32 step] [int32 n_params] [n_params x float32 weights] [n_params x float32 m] [n_params x float32 v]
Bölge Bölge
Başlık (toplam 8 bayt). 32-bit adım numarası, bu anlık görüntünün eğitimde nerede olduğunu söyler; 32-bit parametre sayısı, arkadaki üç dizinin her birinin ne kadar büyük olduğunu söyler.
Ağırlıklar (n_params x 4 bayt). Her öğrenilmiş parametre, düzleştirilmiş. Sıra, modelin parametre yineleyicisiyle eşleşir: token & pozisyon gömme katmanları, ardından katman başına dikkat & MLP ağırlıkları, sonra çıktı başlığı.
Adam birinci moment m (n_params x 4 bayt). Geçmiş gradyanların EMA'sı (beta1 = 0.9). Ağırlıklarla aynı şekil. AdamW devamı için gerekli.
Adam ikinci an v (n_params x 4 bayt). Geçmiş kare gradyanların EMA'sı (beta2 = 0.999). Ağırlıklarla aynı şekil. AdamW devamı için gerekli.
Toplam Boyut
Toplam bayt = 8 + 12 x n_params. ANDREA-12M (12.8M parametre): diskte 154 MB (147 MB yuvarlanmış). ANDREA-120M (~120M parametre) FP32: ~1.44 GB. Üç adet aynı şekilli dizi, küçük bir başlık ile üst üste dizilmiş.
Neden m & v Kaydediyoruz
Vanilya Adam, parametre başına öğrenme oranlarını m & v aracılığıyla takip eder. Kontrol noktası yazımında bunları atarsanız, devam eden çalıştırma sıfır momentum ve sıfır varyans tahminiyle başlar; bu bir adım için öğrenme oranını 0'a eşdeğerdir, ardından ani bir rampa. Kayıp ani yükselir; model mevcut havzasından çıkabilir. m & v'yi kaydetmek, devamı (dataloader rastgeleliği hariç) hiç durmayan temel çizgiye bit-eşdeğer kılar.
Bir Kontrol Noktasının Boyutu
SIGTERM & SIGUSR1
Neden CUDA Sinyalleri İşler
Eğitim, uzun ömürlü bir ön plan süreci olarak çalışır. Proxy veya operatör GPU'yu durdurmak istediğinde, bir sinyal CUDA motoruna gider. Bir işleyici olmadan, varsayılan SIGTERM işlemi hemen öldürür: havada olan gradyan hesaplaması atılır, son kontrol noktasından beri en son ağırlıklar kaybolur. Bir işleyici ile, motor önce bir kontrol noktası yazar sonra temiz bir şekilde çıkar.
SIGTERM: yaz & çık
Bir durdurma düğmesi, bir systemctl stop veya bir üst proxy'den bir kill tarafından gönderilir. CUDA mevcut adımı bitirir, step_NNNNNN.bin'i diske yazar, sonra çıkar. Bu durumdan kurtarma için yalnızca en son .bin yeterlidir: havadaki kısmi adımdan öte sıfır iş kaybolur.
SIGUSR1: yaz & devam et
Bir operatör veya proxy betiği tarafından talep üzerine gönderilir. CUDA mevcut adımı bitirir, step_NNNNNN.bin'i yazar, sonra sanki hiçbir şey olmamış gibi eğitimi devam ettirir. Faydalı için: bir yapılandırma değişikliğinden hemen önce bir denetim noktası tetiklemek; bilinen iyi bir anda ağırlıkları yakalamak; bir kontrol noktasını harici bir örnek kalitesi derecelendirme çalışmasıyla hizalamak.
Polonya Pivot Dizisi (adım 112,619)
1. Operatör CUDA'ya SIGUSR1 gönderir. Kontrol noktası bir sonraki 100-adım sınırında yazılır (adım 112,700).
2. Operatör proxy'yi durdurur.
3. .samples.json & .state.json arşivlenir (örnek log & bandit durumu tarihi kayıt olarak korunur).
4. .loss.json yerinde kalır. Kümülatif eğitim geçmişi; asla arşivlenmez.
5. Proxy yeni caps & floors altında yeniden başlatılır.
6. CUDA step_112700.bin'den tam ağırlıklar, m & v ile taze bir bandit ile devam eder.
Kayıp geçmişi, pivot boyunca kesintisiz devam eder. Örnek günlük temiz bir şekilde sıfırlanır. Bandit, yeni politika altında taze bir başlangıç yapar.
Sinyali Seçme
Kümülatif Eğitim Geçmişi
Üç Yan Dosya
Her checkpoint'in yanında, proxy çalıştırma dizininde üç JSON yan dosya tutar:
- .loss.json -- her adım için bir giriş, her zaman. Çalıştırma sonunda ~200.000 giriş. Kümülatif eğitim geçmişi.
- .samples.json -- denetim için son üretilen örnekler. Polish pivot'larda sıfırlanır.
- .state.json -- bandit kol çekimleri, EMA ödülleri, aşama sayaçları. Polish pivot'larda sıfırlanır.
Neler Sıfırlanır, Neler Kalıcıdır
Polish pivot'lar politika değişiklikleridir, çalışma sıfırlamaları değil. Modelin ağırlıkları, m, v ve kayıp geçmişi kesintisiz devam eder. Banditin birikmiş ödülleri DEVAM ETMEZ: yeni tavanlar ve tabanlar farklı bir politika tanımlar ve bandit yeni politika altında temiz bir durumdan yeniden öğrenmek zorundadır.
Neden .loss.json Korunur
Kayıp geçmişi, çalışmanın denetim izini oluşturur. ANDREA-120M hakkındaki her yayınlanmış iddia (110K adımındaki kayıp EMA'sı, polish-pivot toparlanması, 112K adımındaki yakınsama) bu dosyadaki kayıtlara dayanır. Aşamalar arasında .loss.json'u arşivlemek, okuyucuları çalışmayı yeniden oluşturmak için parçaları birleştirmeye zorlar; onu yalnızca ekleme yapılabilir ve dokunulmamış tutmak kökeni korur.
Zombi Kol Dersi
112,619. adımda .state.json içinde önceki bir çalıştırmadan ağırlığı 1.546 olan bir repo-docstrings kolu bulundu. Bandit durumu daha önceki bir yeniden başlatmada korunmuştu ancak veri kaynağı artık mevcut değildi, bu da keşif muhasebesini bozan zombi çekişlere neden oluyordu. Ders: bandit durumu yeniden başlatmalar arasında sürpriz şekillerde kaymaya İZİN VERİLİR. Kayıp geçmişi, çalışmanın tam ömrü boyunca dokunulmaması gereken tek dosyadır.
Tek Kural Hepsinin Hâkimi
.samples.json ve .state.json dosyalarını aşamalar arasında özgürce arşivleyin. Asla .loss.json dosyasını arşivlemeyin. En son .loss.json her zaman kanonik eğitim geçmişidir.
Kuralı Uygulama
Ne Yapıldı & Neden
Beş Karar
1. Kadans: her 100 adımda bir. Kurtarma noktası granülerliği ~17 dakika. sample_every ile uyumlu, böylece her kontrol noktası bir taze örnek denetimine karşılık gelir.
2. Format: başlık + 3 dizi. Minimal: 8 baytlık başlık, her izleyen dizinin ne kadar büyük olduğunu söyler. Meta veri şişkinliği yok. m & v kaydedildiğinde bit-eşdeğer devam eder.
3. Sinyaller: SIGTERM & SIGUSR1. İki rol, iki sinyal. Varsayılan systemd kapatma SIGTERM ile temiz bir kontrol noktası alır; isteğe bağlı denetim noktaları durmadan SIGUSR1 ile temiz bir kontrol noktası alır.
4. Kayıp sürekliliği: asla arşivlenmez. Kümülatif eğitim geçmişi, cilalama pivotları, yeniden başlatmalar ve politika değişiklikleri arasında kalıcıdır. Bütün çalışma için tek bir denetim izi.
5. Bandit durumu: sıfırlamalar izinli. Bandit politikası bir seferde bir konfigürasyon altında yaşar. Cilalama pivotları sıfırlar; kayıp geçmişi devam eder. İki farklı ömür aynı çalışma dizinini paylaşır.
Bu Dersin Bağlantı Kurduğu Şeyler
- Etkinlik 23 (grow_a_language_model_sample_audit). sample_every kadansı checkpoint kadansıyla eşleşir; her ikisi de her 100 adımda tetiklenir.
- Etkinlik 24 (grow_a_language_model_microgpt_to_andrea). v1 çöküşü, v2.5 yaması, v3 cilalı pivot'un hepsi çalışmak için temiz checkpoint'lere ihtiyaç duyar.
- Etkinlik 10 (grow_a_language_model_adamw). Checkpoint'te m & v'yi kaydetmek önemlidir çünkü AdamW'nin güncelleme kuralı her ikisine de bağlıdır. Onları bırak & devam et farklılaşır.
Son Bir Mühendislik Gerçeği
Kod yazarlardan uzun ömürlüdür. Altyapı inşaatçılardan uzun ömürlüdür. Basit bir checkpoint formatı, optimizer durumunu kaydetmeyi atlayacağına söz veren her süslü devam etme şemasından uzun ömürlüdür. Baytları kaydet; çalışmayı kaydet.