deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Incin, Rust'ta tensor şekli, dtype ve device uyumsuzluklarını derleme zamanı hatasına dönüştürüyor

Yeni bir Rust derin öğrenme framework'ü olan Incin, her tensorün şeklini, veri tipini, cihazını ve gradient durumunu tipin içinde kodlayarak genellikle çalışma zamanında ortaya çıkan uyumsuzlukları derleme zamanı hatalarına dönüştürüyor.

Incin, Rust'ta tensor şekli, dtype ve device uyumsuzluklarını derleme zamanı hatasına dönüştürüyor

Tensor sözleşmelerini derleyiciye taşıyan bir framework

dev.to'da xupremix adıyla yayın yapan bir geliştirici, sıra dışı bir garanti sunan, Rust ile yazılmış bir derin öğrenme framework'ü olan Incin'i tanıttı: bir tensorün şekli, veri tipi, cihazı ve gradient durumu tümüyle tensorün tipinin parçası olarak ifade ediliyor. Yazıya göre bunun sonucu, shape, dtype ve device uyumsuzluklarının çalışma zamanı hataları yerine derleyici hataları haline gelmesi. "Incin, a rust machine learning framework for setting fire to dimensionality bugs" başlığı, harekete geçiren sorunu açıkça ortaya koyuyor.

Program çalışmadan önce başarısız olan bir matmul

Yazı fikri bir matris çarpımıyla demonstrating ediyor. Cpu.randn(shape![4, 8]) ile oluşturulan bir tensor, [8, 2] şeklindeki bir tensorle çarpılabiliyor ve x.matmul(&w) sonucunun şekli [4, 2] oluyor — işlemin çıktı tipi, hesaplanan boyutları yansıtıyor. Bunun yerine [3, 8] şeklinde ikinci bir tensor geçirildiğinde, iç boyutlar olan 8 ve 3 örtüşmüyor ve çağrı derlenmiyor. Hiçbir şey çalıştırılması gerekmiyor: tip denetleyicisi işlemi reddetmek için gerekli bilgilere zaten sahip.

Belirtilen hedefler ve mevcut materyaller

Yazar, projeyi bitmiş bir ürün tanıtımı olarak değil, bir keşif olarak konumlandırıyor. Yazıya göre temel hedef, bir tip sisteminin tensor sözleşmesinin gerçekte ne kadarını taşıyabileceğini, bu kodlamanın ne kadar esnek hale getirilebileceğini ve ortaya çıkan API'nin günlük kullanımda ne kadar keyifli olduğunu keşfetmek. Daha derine inmek isteyen okuyucular için yayınlanan crate, API dokümantasyonu ve projeye eşlik eden bir kitaba yönlendirme yapılıyor.

Neden önemli

Boyut hataları derin öğrenme kodundaki en yaygın arızalar arasında yer alıyor ve dinamik tipli stack'lerde genellikle yalnızca sorunlu satır gerçekten çalıştırıldığında ortaya çıkıyor — bazen saatlerce süren bir eğitim koşusunun ortasında. Bu denetimi derleme aşamasına taşımak, geri bildirim döngüsünü çalışma zamanından editöre kaydırıyor ve hataları hiçbir kod çalışmadan önce yakalıyor. Device ve gradient durumunu tip içinde kodlamak, aynı erken tespiti ikinci bir hata sınıfına — farklı donanımlarda yaşayan tensorleri karıştırmak veya hangi değerlerin gradient hesaplamasına katıldığını unutmak gibi — extending ediyor.

Rust'ın tip sistemi uzun süredir bu tür statik akıl yürütmeye yetenekli ve Incin, bir sayısal kütüphanenin doğruluk kurallarının ne kadarının assertion ve testler yerine tiplerde yaşayabileceğine dair daha geniş bir tartışmaya katılıyor. Projenin yanıt lamayı hedeflediği açık soru ise tavanın nerede olduğu: gerçek modellerde çoğu zaman yalnızca çalışma zamanında bilinen veriye bağlı şekiller bulunuyor ve herhangi bir tip düzeyi şema ya boyutları statik olarak sabitlemek ya da dinamik olanlar için zarif bir yol sunmak zorunda. Bu dengenin pratikte nasıl işlediği, tam olarak yazarın deneyimin keşfetmek için tasarlandığını söylediği şey.

Şimdilik proje hem kullanılabilir bir kütüphane hem de bir fikrin testi olarak duruyor — makine öğrenimi kodundaki en hata eğilimli arayüzlerden biri olan tensor sözleşmesinin derleyici tarafından zorunlu kılınabileceği fikrinin testi.

  • #rust
  • #deep-learning
  • #type-safety
  • #machine-learning
  • #tensors

İlgili yazılar