Geliştirme
Tarayıcıda model eğitme
Scellis eğitim döngüsünün tamamını — autograd, optimizer'lar, zamanlayıcılar, karma hassasiyet, PEFT — kendi GPU'nuzda, bir tarayıcı sekmesinde, ilk yüklemeden sonra çevrimdışı çalıştırır. İddia konusunda net olalım: bir sekme, kiralanmış bir veri merkezi GPU'sunu geçmez ve Scellis bunu asla iddia etmez. Elde ettiğiniz şudur: sıfır kurulum, cihazınızda kalan hesaplama, her planda ücretsiz yerel hesap gücü ve kuruluş gereği yeniden üretilebilir çalıştırmalar. Bu sayfa yolu baştan sona yürür: yapılandır, bütçele, çalıştır, checkpoint al, devam et.
Dağınık ayarlarda değil, Model View'da yapılandırın#
Bir eğitim çalıştırmasını tanımlayan her şey modelin kendisinde, Model View'da yaşar — bir model düğümüne çift tıklayarak girdiğiniz tam ekran editör. Aynı model orada üç biçimde birden görünür — graf, form ve SML'de (Scellis Model Language) kod — tek bir kaydın üç izdüşümü, tek kare içinde eşzamanlı. Eğitim hattı da o kaydın parçasıdır:
model: user/ada/tiny_transformer@3
optimizer: { block_id: training/optimizer/adamw, lr: 3.0e-4, weight_decay: 0.01 }
scheduler: { block_id: training/scheduler/warmup_cosine, warmup_steps: 500 }
loss: { block_id: training/loss/cross_entropy, label_smoothing: 0.1 }
epochs: 10
batch_size: 32
grad_clip: { max_norm: 1.0 }
precision: { policy: mixed_f16, master_weights: f32, loss_scaling: dynamic }
determinism_tier: prod # debug | prod | fast — never silently defaulted
seed: 42 # counter-based RNG, checkpointed with the runBunların hiçbiri genel uygulama ayarlarında gizlenmez — ve bunun altı çizilmeye değer bir sonucu vardır: modeli paylaştığınızda eğitim hattının tamamı onunla birlikte taşınır; modeli açan kişi yalnızca mimarinizi değil, eğitim düzeneğinizi de alır. Son iki satıra dikkat edin: determinizm kademesi açık ve görünür bir tercihtir; tohum ise durumu çalıştırmayla birlikte checkpoint'lenen sayaç tabanlı bir RNG'yi besler.
Hazır gelen bileşen yığını#
Bileşen yığını hazır katalog içeriği olarak gelir — bir başlangıç kümesi, asla bir tavan değil. Her satır değiştirilebilir ve her kategori, yerleşiklerin izlediği yazarlık yolundan sizin tarafınızdan genişletilebilir; yazdığınız optimizer bu seçicilerde tıpkı hazır gelen biri gibi görünür.
| Kategori | Hazır gelen bileşenler |
|---|---|
| Optimizatörler (9) | Adam · AdamW · SGD · LAMB · Adafactor · Lion · Sophia · Int8Adam · Prodigy |
| Kayıp fonksiyonları (15) | MSE · L1 · BCE · CrossEntropy · KLDivergence · PoissonNLL · GaussianNLL · Focal · Huber · Dice · IoU · Contrastive · CosineEmbedding · InfoNCE · TripletMargin |
| LR zamanlayıcıları (14) | Step · MultiStep · Exponential · CosineAnnealing (+WarmRestarts) · OneCycle · ReduceOnPlateau · WarmupCosine · Linear · Polynomial · Cyclic · Sequential · Chained · Lambda — artı bir LR aralık-testi bulucusu |
| PEFT adaptörleri (6) | LoRA · QLoRA · PrefixTuning · BitFit · IA3 · PromptTuning |
| Gradyan op'ları (8) | Kırpma, AMP ölçekleme, biriktirme / micro-batching, aktivasyon checkpointing ve daha fazlası |
| Düzenlileştirme (5) | Mixup · CutMix · Label Smoothing · Weight Decay · Spectral Norm |
| Ağırlık başlatma + ortalama | 11 başlatma şeması · EMA / SWA |
| Metrikler (10) | Accuracy · F1 · Precision · Recall · ConfusionMatrix · Perplexity · AUROC · AUPRC · ECE · Brier |
PEFT üzerine dürüst bir dipnot: LoRA ailesi derlenmiş op-grafına indirgenir; prefix ve prompt tuning bugün eager yolda çalışır — beyan edilmiş bir durum, gizlenmiş değil.
İlk adımdan önce bir bellek planı#
Herhangi bir şey çalışmadan önce planlayıcı bellek hikâyesinin tamamını hesaplar: parametreler, aktivasyonlar, gradyanlar, optimizer durumu ve çalışma belleği — artı karma hassasiyet altında ağırlıkların f32 ana kopyası. Bu sınıflar bellekte aynı anda durur: sığması gereken, TOPLAMLARI, yani tepe değeridir; iç içe döngüler bu tepeyi görünür biçimde büyütür. Tepe değeri cihazınızın gerçek sınırlarına karşı denetlenir ve üç karardan biriyle döner: yeşil — sığar; sarı — uyarılarla sığar; kırmızı — reddedilir ve ret, çözümü adıyla söyler. Batch'i küçültün, aktivasyon checkpointing'i açın, hassasiyeti değiştirin: her öneri tahmini kazancıyla gelir — deneme yanılma yerine sayılarla karar verirsiniz.
Aynı dürüstlük kapasite için de geçerlidir. Daha çok cihazı havuzlamak belleği değil, işlem hacmini çoğaltır: parametreleri artı optimizer durumu tek cihazın VRAM'ini aşan bir model, orada hiçbir batch boyutunda eğitilemez — planlayıcı bunu açıkça söyler ve PEFT ile parçalama (sharding) yollarını gösterir (tek başına QLoRA, ince ayar tabanını kabaca 4–8× düşürür). İşin cihazlara nasıl yayıldığı — ve bunun dürüstçe ne kazandırdığı — dağıtık hesaplama sayfasının hikâyesidir.
Gerçekte ne çalışır#
Modeliniz, incelenebilir bir IR merdiveninden WGSL hesaplama çekirdeklerine derlenir; hiçbir şey bu merdiveni atlamaz. Eğitim döngüsünün kendisi host güdümlüdür — veriye bağlı kontrol akışını sıradan kılan da budur: taşan adımlarda NaN atlama, platoda tetiklenen LR düşüşleri, erken durdurma. Karma hassasiyet gerçek bir sayısal politikadır — dinamik kayıp ölçekleme, f32 ana ağırlıklar, f32'de biriktirilen indirgemeler — ve sayısal tavan örtbas edilmek yerine açıkça söylenir: WGSL'de bf16 yoktur (kayıp ölçeklemeli f16 tarayıcıdaki dürüst yoldur) ve GPU'da f64 yoktur (gerçek f64, WASM oracle'ında yaşar). Döngünün çevresinde derleyici gösterişsiz işleri yapar: WebGPU'nun 128 MB bağlama sınırı etrafında otomatik karolama, birinci sınıf bir flash-attention indirgemesi ve istediğiniz yerde aktivasyon yeniden-hesaplaması.
Füzyon dürüstlüğü#
Çekirdek füzyonu, fast kademesindeki çıkarım forward'ında devreye girer. Eğitimin backward'ı eager bantta koşar: gradyan doğrudur, füzyonlu değildir. Beklenen eager-füzyonlu ek yük aralığı uygunluk korpusunda ölçülür ve her motor sürümüyle yeniden yayımlanır — asla uydurulmuş bir sabit değildir.
Checkpoint'ler tam kaldığı yerden devam eder#
Her checkpoint içerik-adresli bir pakettir:
{
"weights": "sha256:9c1e07…",
"optimizer_state": "sha256:4b77aa…",
"rng_state": { "algorithm": "philox4x32", "counter": 18432000 },
"epoch": 7,
"step": 21875,
"metrics": { "loss": 0.4181, "val_accuracy": 0.887 }
}RNG sayaç tabanlı olduğu için aynı tohum ve sayaç, her arka uçta aynı çekilişleri üretir — dropout, karıştırma ve veri artırma için adlandırılmış alt akışlarla. Bir checkpoint'i sürdürmek eğitimi tam olarak sürdürür, aşağı yukarı değil. Güvenceler kademelidir ve size açıkça söylenir: debug kademesinde aynı cihazdaki iki çalıştırma bit düzeyinde özdeştir; prod kademesinde cihazlar arası uyum beyan edilen tolerans içindedir; cihazlar arası bit düzeyinde özdeşlik ise CPU oracle yoludur. Çalıştırmalar, veri kümesi sürümleri (hash ile referanslanır — bkz. veri ve bağlayıcılar), checkpoint'ler ve metrikler baştan sona köken kayıtlarıdır: deneyleri karşılaştırmak, zaten var olan kayıtlar üzerinde bir sorgudur — yeniden üretilebilirliğin özü ve bir sonucu yeniden üretmenin bir kazı projesi değil, bir URL olmasının nedeni.
İnce ayar aynı yüzeyde#
Eğitilmiş bir model aynı Model View'da yeniden açılır — içe aktarılmış bir model de öyle: motor özelliği değil içerik olan ONNX, safetensors ve PyTorch state-dict codec'leri üzerinden. Güvendiğinizi dondurun, PEFT adaptörlerini katman katman ekleyin, bir başlığı değiştirin, sonucu eğitime geri gönderin. Ayrı bir ince ayar ürünü yoktur: tek yüzey, tek planlayıcı, tek çalıştırma yolu.
Uzun çalıştırma, dürüstçe#
Tarayıcılar arka plandaki sekmeleri kısar ve Scellis bunu saklamak yerine söyler: bir eğitim sekmesi arka plana düştüğünde yavaşlama yüksek sesle duyurulur; ürün, uzun bir çalıştırmayı önde tutmak için onaya bağlı bir ekran uyanıklık kilidi ve ayrık bir çalıştırma penceresi sunar. Çöken bir sekme, son checkpoint'ten tek eylemle devam edilebilen açık bir “kesildi” durumuna bağlanır. Ve abartılacak bir gözetimsiz mod yoktur — kapalı bir sekme hiçbir şey hesaplamaz.
Not
Kullanılabilir WebGPU yok mu? İş akışları, yüksek sesli ve kalıcı bir uyarının arkasında daha yavaş bir CPU yolunda yine de çalışır: “CPU üzerinde çalışıyor — N× daha yavaş, büyük model eğitimi sınırlı”. İkisi de olmayan bir cihaz bile her modeli oluşturma ve inceleme için açar. Neyin, neden sınırlı olduğunun tam haritası dürüst sınırlar sayfasındadır.