Geliştirme

Yeniden üretilebilirlik

Yeniden kuramadığınız bir sonuç, bir anekdottur. Scellis yeniden üretilebilirliği kişisel bir alışkanlık olarak değil, mimarinin bir özelliği olarak ele alır: kimlik bir hash'tir, bir çalıştırma bir köken kaydıdır, determinizm beyan ettiğiniz bir kademedir ve geçmiş asla yok edilmez. Aynı kararlılıkla platform, her garantinin ne anlama geldiği konusunda da nettir — daha güçlüsünü ima etmek yerine elinizdekinin adını koyar. Bu sayfa mekanizmayı aşağıdan yukarıya dolaşır: içerik adreslemeden “URL ile yeniden üretilebilir” sözünün tam karşılığına — ve bir sonucu alıntılanabilir kılmak için adım adım ne yaptığınıza.

Kimlik bir hash'tir#

İş akışları, modeller, veri kümeleri ve çalıştırmalar içerik adreslidir: commit'lenmiş bir sürümün kimliği, baytlarının SHA-256 hash'idir ve o baytlar asla değişemez — bir kural gereği değil, aritmetik gereği; çünkü farklı baytlar farklı bir hash demektir. Önbellekler de aynı kurala uyar: bir yapıt yerel depodan okunduğunda, baytları taşıdığını iddia ettiği hash'e karşı doğrulanır. Başarısız bir doğrulama sapma diye geçiştirilmez; bozulmadır ve yapıt yeniden indirilir. Bir hash'in adlandırdığı şey, tam olarak elinize geçen şeydir.

Veri, bir kat daha derinde#

Aynı disiplin veriyi de kapsar — çoğu aracın durduğu yerin bir kat altında. Veri kümesi sürümleri içerik adreslidir: aynı veri aynı hash'i üretir. Eğitim/doğrulama/test bölmeleri de kendi başlarına sürümlü, içerik adresli yapıtlardır: bir sonucun arkasındaki kesin bölümleme hash'iyle kayıtlıdır ve yeniden çözümlenebilir — yarım yamalak hatırlanan bir alışkanlık değil, alıntıladığınız bir yapıt. Bir model “test kümesinde” değerlendirildiyse, kayıt o kümenin tam olarak hangi baytlar olduğunu söyler.

Bir çalıştırma kendi kökenini yazar#

Her çalıştırma, olan bitenin tam kimliğini kaydeder — çalışan programı, motorun onu indirgediği planları, okuduğu veriyi, yüklediği ve ürettiği kontrol noktalarını, yazdığı yapıtları, yürüten motoru ve altında çalıştığı determinizm kademesini. Açık yazıldığında kayıt şöyle görünür:

text
run 812 — committed
  program      sha256:9f2c41ac…   the exact graph that ran
  block_ir     sha256:52aa07c1…   the lowered program
  exec_plan    sha256:cc90e4b2…   dispatches + memory plan
  dataset      sha256:d41c66f8…   a version, never a path
  split        sha256:5a01d9e3…   train/val/test partition
  checkpoint   sha256:8be29a44…   weights · optimizer · RNG state
  artifacts    sha256:77aa1b0d…   metrics table, figures
  engine       1.4.2              the engine that produced it
  tier         prod               determinism, declared
  seed         42                 counter-based RNG

Her girdi bir hash olduğu için kayıt, soruları iki yönde de yanıtlar. “Bu yapıtı ne üretti?” bir çıktıdan geriye, arkasındaki kesin programa, veriye ve motora yürür. “Bu modeli hangi veri eğitti?” veri kümesi sürümlerinden ileriye, kontrol noktalarına yürür. Deney takibi kendiliğinden ortaya çıkar: bir deney yalnızca kökendir — çalıştırmalar artı değişmez programlar artı veri kümesi sürümleri artı kontrol noktaları — ve karşılaştırmalar, oturumlar arasında kalıcı bu kayıtlar üzerinden türetilmiş görünümlerdir. Kontrol noktalarının kendisinin nasıl üretildiği tarayıcıda eğitim sayfasında.

girdiler — her biri bir hashprogram · 9f2c…dataset · d41c…split · 5a01…run 812motor 1.4.2 · prodçalıştırma ayarlarıseed 42 · tier prodçıktılar — her biri bir hashcheckpoint · 8be2…metrics · 77aa…← bu yapıtı ne üretti?bu veri kümesi neyi eğitti? →
Şek. 1 — Bunu ne üretti? Kayıt, her girdi hash'ini her çıktı hash'ine bağlar; yanlarında da çalıştırmanın ayarları durur: motor, kademe, tohum. Böylece kayıt iki yönde de yanıt verir: bu yapıtı ne üretti ve bu veri kümesi sonradan neyi eğitti?

Determinizm beyan edilir, asla varsayılana düşmez#

Bit düzeyinde determinizm verime mal olur; bu yüzden Scellis onu sizin yerinize asla sessizce seçmez — ve sessizce elinizden de almaz. Her hesaplama determinizm kademesini beyan eder; eksik bir kademe, sessiz bir varsayılana düşmek yerine derlemeyi yüksek sesle durdurur.

KademeGaranti
debugAynı tohumla, aynı cihazda, çalıştırmalar arasında bit düzeyinde özdeş. Deterministik çekirdekler — gerçek bir verim maliyeti, bilinçli seçilir.
prodBeyan edilen bir tolerans sınıfı içinde deterministik.
fastYalnızca güvenli olduğu beyan edilen yerlerde determinizmden sapmaya izin verilir.

Rastgelelik de yeniden oynatma için tasarlanmıştır: çekilişler sayaç tabanlı bir RNG'den gelir; bir tohum kendi dizisini birebir yeniden üretir — dropout, karıştırma ve veri artırma için adlandırılmış alt akışlarla. RNG durumu her kontrol noktasının içinde yolculuk eder; bir kontrol noktasından devam ettirilen eğitim, hiç durmamış olsaydı üreteceği rastgele diziyi tam olarak sürdürür.

“URL ile yeniden üretilebilir” tam olarak ne vaat eder#

Bu ifadenin kesin bir anlamı vardır — ve asıl mesele bu kesinliktir. Commit'lenmiş bir Scellis bağlantısı, birebir aynı commit'lenmiş yapıtları yeniden çözer — aynı baytlar, aynı program, aynı girdiler — yanında kayıtlı motor sürümü ve determinizm kademesiyle. Bu kısım koşulsuzdur: her cihazda geçerlidir ve dakikalar içinde baştan sona kendiniz deneyebilirsiniz.

Yeniden yürütme daha güçlü bir iddiadır ve koşulludur — platform bu yüzden onu iki kademeyle adlandırır. Bir çalıştırma, bit düzeyinde birebir yeniden yürütülebiliyorsa replayable sayılır: aynı cihazda debug kademesi ya da her yerde CPU referans yolu. Yeniden yürütme, beyan edilen tolerans sınıfı içinde uyuşuyorsa convergent sayılır — farklı GPU'lar arasındaki olağan durum; çünkü kayan nokta donanımı gerçekten farklıdır. Rastgele GPU'lar arasında bit eşitliği vaat eden bir platform, doğrulayamayacağı bir şeyi vaat ediyor olurdu; Scellis bunun yerine sınıfın adını koyar.

Not

Scellis, daha güçlüsünü ima etmek yerine hangi garantiyi aldığınızın adını koyar: “aynı baytlar, aynı program, aynı girdiler, kayıtlı motor ve kademe” commit'lenmiş her bağlantı için her zaman doğrudur; “çıktıda aynı bitler” ise tam olarak beyan edilen kademenin söylediği yerde doğrudur.

Taslaklar değişir; commit'ler belgeler#

Canlı bir ortak çalışma oturumu asla hash'lenmez — orası şeylerin değiştiği bir yerdir ve hareketli bir hedefin hash'i sahte bir sertifika basmak olurdu. Alıntılanabilir yapıtı basan eylem commit'tir: o andan itibaren sürüm değişmezdir, adreslenebilirdir ve bağlantılanabilirdir. Canlı birlikte çalışın; commit'i alıntılayın. Bu ayrım bilinçlidir ve platformun tamamı boyunca işler.

Paylaşım yalnızca tarifleri değil, sonuçları da kapsar. Tamamlanmış bir çalıştırmanın çıktıları — metrikler, şekiller — kalıcı, giriş gerektirmeyen, alıntılanabilir bir anlık görüntü URL'i olarak paylaşılabilir: bağlantıyı açan herkes, birebir aynı commit'lenmiş yapıtları — köken kaydı da yanında — yeniden çözer. Aynı commit'lenmiş anlık görüntü, sertleştirilmiş bir gömülü görünümde salt-okunur olarak da açılır; bir makale eki ya da README, ekran görüntüsü yerine yaşayan sonucu taşır.

canlı oturum — asla hash'lenmezadakimyoucommitsha256:2fc9…anlık görüntü URL'ialıntı kaydıgömülü görünüm
Şek. 2 — Taslak üzerinde birlikte çalışır, commit'e atıf verirsiniz. Canlı oturum — üç kişi, tek tuval — asla hash'lenmez, çünkü hâlâ hareket hâlindedir. Commit tek bir değişmez hash basar; her anlık görüntü URL'i, her alıntı ve her gömülü görünüm işte onu çözer.

Literatür gibi alıntılayın#

Alıntı iki yönde de birinci sınıftır: varlıklar içe alıntı taşır ve commit'lenmiş her varlık ya da çalıştırma dışa kanonik bir alıntı kaydı yansıtır — yazar adı, isim, sürüm, içerik hash'i, motor sürümü, anlık görüntü URL'i — “Cite this” bağlantısından BibTeX, CFF ya da CSL olarak:

bibtex
@misc{ada_2026_robust_scaler,
  author       = {ada},
  title        = {robust-scaler (version 3)},
  year         = {2026},
  note         = {content hash sha256:9f2c41ac… · engine 1.4.2 · tier prod},
  howpublished = {Scellis snapshot URL — resolves the committed bytes}
}

Kayıt, commit'lenmiş baytları alıntılar; alıntı, alıntıladığı şeyden uzaklaşamaz.

Geçmiş de motor da döngüyü kapatır#

Her doküman, içinde gezinebileceğiniz bir commit geçmişi taşır ve herhangi iki commit arasında fark alınabilir — model mimarileri dahil; çünkü model grafları içerik adreslidir ve diğer her şey gibi diff'lenir. Geri yükleme geçmişi asla yeniden yazmaz: önceki bir sürüme dönmek, geçmişin üstüne yeni bir commit olarak işlenir. Hiçbir şey asla yok edilmez.

Motor döngüyü kapatır. Çalıştırmalar kendilerini üreten engine_version değerini sabitler; içerik ihtiyaç duyduğu motor özelliklerini bildirir; ve bir içeriği karşılayamayan motor yüksek sesle reddeder — “daha yeni bir Scellis gerekir” tanısıyla, asla sessiz bir yaklaştırmayla değil. Her motor değişikliğinde, eski işlerden oluşan dondurulmuş bir derlem yeniden çalıştırılır; böylece bir güncelleme eski sayıları sessizce değiştiremez — işinizin bizim sürümlerimizden uzun yaşamasını sağlayan disiplinin ta kendisi. Dünün sonucu, dünün sonucu olarak kalır.