English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

konuk
1 / ?
derslere geri dön

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

Checkpoint dosyasının çökme kurtarma dışında üstlendiği iki farklı görevi adlandırın. Her biri için bir cümlelik neden verin.

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]

ANDREA Checkpoint Binary Format


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

ANDREA-120M, FP32 (float başına 4 bayt) ile eğitilmiş ~120.000.000 parametre içerir. Hesaplayın: (a) yalnızca başlık tarafından kullanılan baytlar; (b) üç float32 dizisinin birleşik olarak kullandığı baytlar (ağırlıklar + m + v); (c) toplam kontrol noktası boyutu MB cinsinden. Aritmetiğinizi gösterin.

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

İki senaryo. (a) Proxy betiği, v3-base'den v3-polish kapsüllerine geçmeden HEMEN ÖNCE bir anlık görüntü yakalamak istiyor, eğitimi durdurmadan. Hangi sinyal? Neden? (b) Ana bilgisayarın `systemctl stop unhomeschool-train` komutu planlı bir yeniden başlatma sırasında tetikleniyor. Systemd varsayılan olarak hangi sinyali gönderir? CUDA'nın işleyicisi ne yapar?

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

112.619. adımda bir polish pivot sırasında üç eylem. Her biri için ARCHIVE, KEEP IN PLACE veya RESET belirtin ve tek cümlelik bir neden verin: (a) `.samples.json`; (b) `.loss.json`; (c) `.state.json` (bandit belleği).

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.

Ne İnşa Edeceksiniz?

Eğer kendiniz küçük bir modeli eğitiyorsanız, bu beş karardan hangilerini değiştirmeden benimseyecek ve hangilerini uyarlayacaksınız? Tartışmak için birini 2-3 cümleyle seçin. Yanlış cevap yok; soru, takas hakkındaki muhakeme yapıp yapamadığınız.