§ Platform / Yeniden üretilebilirlik
URL ile yeniden üretilebilir.
Kimlik bir hash'tir: iş akışları, modeller, veri kümeleri, checkpoint'ler ve çalıştırmalar içerikleriyle adlandırılır ve sürüm bazında değişmezdir. Commit edilmiş bir sonuca bağlantıyla atıf verilebilir — bağlantı aynı baytlara, aynı programa, kaydedilmiş motora ve beyan edilmiş hassasiyete yeniden çözümlenir. Yeniden üretilebilirlik burada bir özellik değil; adlandırma şemasının kendisidir.
Bulunduğu yerle değil, içeriğiyle adlandırılır
Scellis'te her yapıt — bir iş akışı, bir model, bir veri kümesi sürümü, bir checkpoint, bir şekil — baytlarının SHA-256'sıyla adlandırılır. Bir hash'in altındaki baytlar asla değişmez ve yayımlanmış bir sürüm değişmezdir: değişiklik, eskisinin üzerine yazmak yerine onunla yan yana yaşayan yeni bir sürümdür — üzerine inşa ettiğiniz şey tam olarak inşa ettiğiniz gibi kalır. Kataloğun içeriği dağıtırken kullandığı adlandırma şeması, sonuçlarınızın arşivlendiği şemanın ta kendisidir.
Bu disiplin kolaylıktan derine iner. Aynı içerik, çevrimdışı da eşitlenmiş de olsa her cihazda aynı adı üretir; çünkü her tür şey, hash'lenmeden önce tek bir kanonik biçime getirilir. Kimlik, depolama, eşitleme ve atıf tek bir veritabanı omurgasında yürür: bir bağlantının, bir dosya adının asla veremeyeceği sözü verebilmesinin nedeni budur.
Her çalıştırma kendi kaydını taşır
| Bileşen | Nasıl sabitlenir | Neden önemli |
|---|---|---|
| Program | her derleme aşaması | Yalnızca çizdiğiniz iş akışı değil, GPU'ya giderken dönüştüğü her aşama — her biri içeriğiyle adlandırılmış ve incelemeye açık. |
| Veri | dataset id@version | Birebir veri kümesi sürümleri — kendileri de sürümlü birer yapıt olan eğitim, doğrulama ve test bölmeleri dahil. |
| Ağırlıklar | checkpoint hash'i | Ağırlıklar, optimizer durumu, rastgelelik durumu, epoch, adım, metrikler — tek paket; kaldığı yerden sürmek yapısaldır, sonradan eklenmiş bir özellik değil. |
| Rastgelelik | seed + counter | Adlandırılmış akışları olan sayaç tabanlı bir üreteç — aynı tohum ve sayaç, her yerde aynı çekiliş. |
| Motor | engine 1.4.2 | Çalıştırmayı yürüten motorun kendisi — sonuçlar sürümleri aşabilsin diye kayda geçer. |
| Hassasiyet | debug · prod · fast | Seçtiğiniz hassasiyet çalıştırmayla birlikte taşınır — her aşamada açık, asla sessiz bir varsayılan değil. |
Kayıttaki her hash getirme sırasında doğrulanır: doğrulamadan geçemeyen her şey bozulma sayılır ve yeniden getirilir — yerine asla sessizce başka bir şey konmaz.
Her çalıştırma, kendisini belirleyen her şeyi birbirine bağlayan bir kayıt üretir: çizdiğiniz iş akışı, derlendiği programın her aşaması, birebir veri kümesi sürümleri, checkpoint'ler, çıktılar — her biri içeriğiyle adlandırılmış — artı motor sürümü ve altında koştuğu hassasiyet. Commit'e atıf verin; paylaştığınız herkes işi yeniden çalıştırabilir ya da çalıştırdığını doğrulayabilir. Bir eğitim çalıştırmasının kimliği defter kenarına düşülmüş bir not değil, kaydın ta kendisidir.
Genellikle gözden kaçan ayrıntılar da aynı ciddiyetle sabitlenir. Eğitim, doğrulama ve test bölmeleri, hash ile referans verilen sürümlü yapıtlardır — bir metriğin arkasındaki bölme aşağı yukarı hatırlanmaz, birebir yeniden üretilir. Rastgelelik sayaç tabanlıdır ve her checkpoint'in parçasıdır: kaldığı yerden süren bir çalıştırma yeni bir akış açmak yerine aynı akışı sürdürür. Ve veri kümelerinin kendisi de sürümlüdür: aynı veri, aynı hash, aynı çalıştırma.
Grafa iki yönde de soru sorun
Buradaki kayıt zinciri, kaydırıp geçeceğiniz bir günlük değildir. İçerik adresli yapıtlar üzerinde, “üreten” ve “tüketen” kenarları sorgulanabilen bir graftır. İleriye sorun — bir veri kümesi sürümünden bugüne dek türetilen her şey. Geriye sorun — bu modeli hangi veri, hangi program üzerinden, hangi motorda eğitti. Bir sonuç sizi iki hafta sonra şaşırttığında yanıt bir kazı projesi değil, bir sorgudur.
Kayıt eksiksiz olduğu için deney takibi, beslemeyi unutmamanız gereken ikinci bir sistem değildir: çalıştırmalar, yapıtlar, veri kümesi sürümleri ve checkpoint'ler zaten kaydın kendisidir; karşılaştırmalar ve panolar bunların üzerine kurulmuş görünümlerdir. Çalıştırma geçmişi kalıcıdır, oturumu aşar ve Workbench'inizde görünür — paylaşılan bir modelin kartı da değerlendirme metriklerini, hesaplandıkları bölmenin hash'iyle birlikte bildirir: okurun inanmak zorunda kalmadan denetleyebileceği bir iddia.
Taslak üzerinde iş birliği yaparsınız; commit'e atıf verirsiniz
Yeniden üretilebilirlik çok kullanıcılı düzenlemeden sağ çıkar, çünkü kimlik oraya bakmayı reddeder. Bir canlı oturumda — imleçler, katılım, yarım kalmış düzenlemeler, birlikte çalıştığınız kişilere akan çalıştırma telemetrisi — hiçbir şey asla hash'lenmez. Kimlik commit ile başlar; öncesi, dürüstçe söylersek, bir taslaktır.
Hash, yalnızca commit edilen içeriğe bağlıdır, başka hiçbir şeye değil. Yalnız başına ve çevrimdışı yapılan bir commit, canlı oturumda sıralanan bir commit ile tam olarak aynı adı hesaplar — koordinasyon sunucusu düzenlemeleri sıralar, kimliğin sahibi asla olmaz. Bu güvence ile local-first tam burada buluşur: sunucu kapalı, oda boş olabilir — kendi cihazınızdaki bir commit, kalabalıkta üreteceği atıf verilebilir adın aynısını yine üretir.
“Bit'i bit'ine” burada ne anlama gelir
“Bit'i bit'ine”, atıf verilen baytları adlandırır: referans var olduğu sürece URL, birebir aynı yapıtlara çözümlenir — aynı ağırlıklar, aynı veri, aynı program. Yeniden çalıştırma ise ayrı bir sözdür; yukarı yuvarlanmaz, kalibre edilir: aynı cihazda debug ayarında ve CPU referans yolunda bit'i bit'ine; farklı GPU'lar arasında kayan nokta yürütmesi bit düzeyinde kesin değildir, dolayısıyla yeniden çalıştırma beyan edilmiş tolerans içinde uyuşur. Bu gerçeği atlamak sahte teselli satmak olurdu.
Bir çalıştırmanın ne kadar kesin olacağı sizin açık seçiminizdir ve onunla birlikte kaydedilir: denetim için debug, beyan edilmiş tolerans içinde deterministik iş için prod, daha serbest sıralamanın güvenli beyan edildiği yerlerde fast — derlemede de çalışma zamanında da asla sessiz bir varsayılan olmaz. Toleranslar, onları demirleyen CPU referansı ve topluluk kernel'lerine aynı sayıları kanıtlatan uygunluk kanıtı, doğruluk sayfasında anlatılıyor.
Bir makalenin üzerine basabileceği bağlantı
Atıf ve gömme, erken erişimde tam bu biçimde geliyor — uçtan uca tanımlandı, şu anda geliştiriliyor.
| Yüzey | Taşıdığı | Güvence |
|---|---|---|
| Repro derin bağlantısı | commit edilmiş tarif | Tam olarak o iş akışını Studio'da açar — program, sabitlenmiş sürümler, bağlı olduğu her şey — hepsi açılmadan önce doğrulanır. |
| Çalıştırma anlık görüntü bağlantısı | biten bir çalıştırmanın çıktıları | Metrikler, şekiller ve nelerden çizildikleri, tek bir commit edilmiş yapıt olarak — kalıcı, girişsiz, atıf verilebilir. |
| Gömme | salt okunur, commit edilmiş bir görünüm | Sertleştirilmiş, yalıtılmış bir çerçeve — oturum yok, yazma yok, hız sınırlı; her izleyiciye birebir aynı yanıt. |
| “Cite this” | atıf kaydı | Yazar, sürüm, içerik hash'i, motor sürümü, anlık görüntü URL'si — BibTeX, CFF ya da CSL olarak dışa verilir. |
| Remix (çatallama) | kendi kopyanız, köken korunur | Çatal nereden geldiğini kaydeder; hesabı olmayan bir okur da çatallar, kopyayı sonradan sahiplenir. |
Bu tablodaki her yüzey, commit edilmiş, içerik adresli bir sürümü çözer — asla canlı bir oturumu, asla oynak bir hedefi değil.
Atıf her iki yönde de tasarıma işlenmiştir. Kurduğunuz şey, üzerine bastığı atıfları taşır; commit edilmiş her sonuç da dışarıya bir atıf kaydı yansıtır — yazar, ad, sürüm, içerik hash'i, motor sürümü, anlık görüntü URL'si — ve bir “Cite this” bağlantısı bunu BibTeX, CFF ya da CSL olarak üretir. DOI üretimi, bağlayıcı sistemi üzerinde adlandırılmış bir ileri yoldur; mimari bir yenisini daha taşır: birinin bir sonucu beyan edilmiş toleransı içinde yeniden çalıştırıp karşı imza atmasıyla kazanılan “yeniden çalıştırmayla doğrulandı” rozeti.
Döngü, okurların olduğu yerde kapanır. Commit edilmiş bir anlık görüntü, sertleştirilmiş ve girişsiz bir çerçeve içinde salt okunur çizilir — oturum yok, yazma yok, her izleyiciye birebir aynı yanıt — böylece bir makale, bir blog yazısı ya da bir README, yapıştırılmış bir ekran görüntüsünü değil, gerçek kayıttan çözülen gerçek şekli gösterir. İki kapı döngüyü canlı tutar: “Open in Studio” ve “Remix” — hesabı olmayan bir okur da çatallar; kopyası, sahiplenene dek cihazında kalır. Rehber döngüyü alıcı ucundan anlatır: bir sonucu yeniden üretin, yazar ucundan da: yeniden üretilebilirlik.