Başlarken

Bir sonucu yeniden üretme

Biri size bir bağlantı gönderir — bir makalede, bir README'de, bir sohbette — ve sonucun tam orada olduğunu söyler. Çoğu platformda o bağlantı bir ekran görüntüsüdür ya da elle yeniden kurmanız gereken bir tariftir. Scellis'te ise sonucun ta kendisidir: açın, çalıştırma kendi cihazınızda yeniden üretilir. Bu, platformun merkezi iddiasının — URL ile yeniden üretilebilir — en kısa yoludur, somutlaştırılmış, beş bölümde: bir bağlantı alırsınız, cihazınızda yeniden üretilir, onu tam olarak neyin ürettiğini incelersiniz, fork'larsınız ve kendi sürümünüzü commit'lersiniz. Scellis bir geliştirme önizlemesidir; bunu, etrafında kurulduğu akış olarak okuyun.

1. Bir bağlantı alırsınız#

Bir Scellis bağlantısı iki türde gelir ve aradaki fark taşıyıcıdır. Bir oturum bağlantısı, canlı ve düzenlenebilir bir başa işaret eder — şeylerin hâlâ değiştiği ortak taslağa — ve oturum açmanızı ister. Bir anlık görüntü bağlantısı ise dondurulmuş, içerik-adresli bir commit'e işaret eder: değişmez, alıntılanabilir ve hesapsız açılabilir. Anlık görüntü, URL-ile-yeniden-üretilebilirlik ilkelidir — bir makalenin ya da README'nin taşıması gereken şey.

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; böylece bir yazı, yaşayan sonucu yerinde gösterir — üzerinde bir „Open in Studio“ ve bir „Remix (fork)“ kapağıyla — ve girişsiz bir ziyaretçi ikisini de alabilir. Tarifler de sonuçlar da böyle yolculuk eder; yeniden üretilebilirlik alttaki güvenceyi kapsar, bu sayfa ise işi bizzat adımlar.

2. Cihazınızda yeniden üretilir#

Anlık görüntüyü açtığınızda Scellis, commit'lenmiş kapanışının tamamını yeniden çözer — tam programı, girdilerini, veri kümesini ve eğitim/doğrulama/test bölmesini hash ile, artı çalıştırmanın kaydettiği motor sürümünü ve determinizm kademesini. O kapanış yerel veritabanınıza sabitlenir ve ardından çalıştırma makinenizde yeniden yürütülür: aynı IR merdiveni onu WebGPU'ya indirir ve kendi GPU'nuzda çalışır — her sonuç, beyan edilen tolerans sınıfı içinde bir CPU referansına karşı denetlenir. Hiçbir şey karşıya yüklenmez ve hiçbir sunucu hesaplamaz — bu, hızlı başlangıçta başlatacağınız çalıştırmanın aynısıdır; yalnızca tarif bir başkasından geldi.

paylaşılan bir bağlantısnapshot · 2fc9…girişsiz açılırbirebir çözümlenirprogram · 9f2c…dataset · d41c…split · 5a01…engine 1.4.2 · prodGPU'nuzyeniden yürütürtolerans içinde
Şek. 1 — Bir anlık görüntü bağlantısı girişsiz açılır ve birebir aynı kapanışı yeniden çözer — program, veri, bölme, motor ve kademe — bu da kendi GPU'nuzda yeniden yürütür ve beyan edilen tolerans içinde uyuşur.

Not

Scellis, daha güçlüsünü ima etmek yerine güvencenin adını koyar. „Aynı baytlar, aynı program, aynı girdiler, kayıtlı motor ve kademe“ koşulsuzdur — her cihazda geçerlidir. „Çıktıda aynı bitler“ ise koşulludur: bir çalıştırma, aynı cihazda debug kademesinde ya da her yerde CPU referans yolunda replayable (bit düzeyinde birebir); farklı GPU'lar arasında ise convergent — beyan edilen tolerans içinde uyuşan —, çünkü kayan nokta donanımı gerçekten farklıdır. Gerekçe, dürüst sınırlardadır.

Açılışta bir dürüstlük daha gömülüdür. Motorunuz, bağlantının sabitlediği içeriği karşılayamayacak kadar eskiyse, sessizce yaklaştırmak yerine yüksek sesle reddeder — „daha yeni bir Scellis gerekir“ tanısıyla. Sadık olamayacak bir yeniden üretim, öyleymiş gibi yapmaz.

3. Onu neyin ürettiğini inceleyin#

Yeniden üretilmiş bir çalıştırma, güvenmek zorunda olduğunuz bir kara kutu değildir. Kendi köken kaydıyla gelir — program, BlockIR ve ExecPlan hash'leri, veri kümesi ve bölme sürümleri, yüklediği ve ürettiği kontrol noktaları, yazdığı yapıtlar, motor sürümü, determinizm kademesi ve tohum. Her girdi bir hash'tir; kayıt, soruları iki yönde de yanıtlar: bu yapıtı ne üretti, bu modeli hangi veri eğitti. Az önce neyi yeniden ürettiğinizi tam olarak görürsünüz — „test kümesi“nin ardındaki bölmeye kadar.

Aynı yüzeyden bir “Cite this” bağlantısı, 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 — BibTeX, CFF ya da CSL olarak. Yeniden ürettiğiniz tam baytları alıntılarsınız; alıntı, işaret ettiği şeyden uzaklaşamaz. Tüm mekanik — ve bir çalıştırmanın kendi kökenini nasıl yazdığı — yeniden üretilebilirliktedir.

4. Fork'layın ve kendinize ait kılın#

Okunabilir her varlık fork'lanabilir — ve fork'lamak, platformun her alıcı yüzeyinde uzattığı davettir; asla çıkmaz bir kopya değil. Fork'unuz nereden geldiğini kaydeder ve orijinalin lisansını miras alır; ikisi de açıkça gösterilir. Oradan sonrası sizindir: sıfırdan kurduğunuz her şeyle aynı doğrulanmış yazma yolundan yerinde düzenlediğiniz, birinci sınıf bir varlık — tam olarak uzantı oluşturmanın anlattığı gibi. Girişsiz bir ziyaretçi de fork'lar: kendi cihazınızda her türlü hesaplamayı yazabilir ve çalıştırabilirsiniz — sınırsız, hiç hesap olmadan.

değişiklikleri geri önerupstreamcommit'li · v3forksoyağacı da gelirsizin fork'unuzlisans mirascommitcommit'inizyeni hashsha256:7b0e…
Şek. 2 — Paylaşılan her sonuç bir başlangıç noktasıdır: fork'layın (soyağacı ve lisans birlikte gelir), kendi sürümünüzü yeni bir hash'e commit'leyin — ve ancak o commit'ten sonra değişikliği upstream'e geri önerebilirsiniz. Taslak üzerinde birlikte çalışırsınız; önerdiğiniz ve atıf verdiğiniz şey bir commit'tir.

5. Commit'leyin ve aktarın#

Değişiklikleriniz saklanmaya değerse commit'leyin — ve fork'unuz kendi içerik hash'ini ve kendi anlık görüntü URL'ini alır. Onu paylaşın; zincir sürer: bir sonraki kişi, sizin orijinali yeniden ürettiğiniz gibi sizin sürümünüzü yeniden üretir. Değişikliklerinizi ayrışmak yerine geri vermeyi tercih ederseniz, onları upstream'e önerebilirsiniz — sahibi bir üç-yönlü birleştirmeyi gözden geçirir ve kabul ya da ret verir; sürüm kontrolünden zaten bildiğiniz döngü.

Fork'ların ve sürümlerin bir arada yaşadığı yer — seçilip düzenlenmiş, sabitlenmiş, paylaşılmış — workspace'ler ve repository'lerdir; commit'lemeden önce taslak üzerinde çalışmak ise canlı birlikte çalışmadır. Cihazlar arasında eşitlemek ve büyük ölçekte paylaşmak istediğinizde, girişsiz çalışmanızı bir hesaba bağlayın — tek seferde, idempotent biçimde. Artık gönderdiğiniz her bağlantı bir başlangıç noktasıdır, bir bitiş değil.