Büyük veri çağında yaşıyoruz, ancak bu verilerin çoğu “seyrek”.
Örneğin; Amazon müşterilerinin aldıkları her ürünle eşleşen tablo göz önüne getirilirse; bir müşterinin aldığı her ürün için “1”, tersi durumda ise “0” değeri veriliyor. Böyle bir durumda tablo; çoğunlukla (müşteri alasıya kadar) komple “0” olacaktır.
Kullanılan seyrek tensörler*, analitik algoritmalar, sıfır ile çok fazla ekleme/çarpma yapma boşa harcanan hesaplamalardır.
*Tensörler, vektör, skaler büyüklükler ve diğer tensörler arasındaki doğrusal ilişkileri tanımlayan geometrik nesnelerdir. Bu tür ilişkilerin temel örnekleri arasında nokta çarpım, çapraz çarpım ve doğrusal haritalar yer alıyor. Vektör ve skalerlerin kendileri de tensördür.
Programcılar; sürekli sıfır girdilerini önlemek için, geçici özel bir kod yazarak, bu sorunu çözerler; ancak bu kod karmaşık ve genellikle yalnızca dar kapsamlı bir sorun için geçerli oluyor.
MIT araştırmacıları ve ekibi; seyrek veriler üzerine; otomatik olarak üretilen yeni bir sistem sundu.
Bu kod, mevcut olmayan ve optimize edilmemiş yazılım paketleri üzerinde 100 kat hız kazandırmaktadır. Ayrıca; programcının daha az zaman harcayıp, belirli seyrek veri işlemlerini, kolayca elle optimize edilmiş kodla karşılaştırmasını sağlayacaktır.
Tensor Algebra Compiler (Tensör Cebir Derleyicisi) için sistem; Taco olarak adlandırılır. Bilgisayar bilimi sözlüğünde, Amazon tablosu gibi bir veri yapısına bir “matris” denir. Bir tensör, yalnızca bir matrisin daha yüksek boyutlu bir analojisidir(benzeşmesidir).
Amazon sitesinde eğer tablodaki müşteriler ve ürünler; müşterilerin ürün derecelendirmelerine ve ürün incelemelerinde kullanılan kelimelere karşı da eşleştirildiyse, sonuçta Dört Boyutlu bir Tensör oluşturulur.
MIT Elektrik Mühendisi ve Bilgisayar Bilimi Profesörü (EECS) Yazar Saman Amarasinghe, “Seyrek tasvirler; 60 yılı aşkın bir süredir orada bulunuyor. Ancak, kimse onlar için otomatik olarak kod üretmeyi bilmiyordu. İnsanlar yalnızca, seyrek matris-vektör çarpımı, seyrek matris-vektör çarpımı artı bir vektör, seyrek matris-matris çarpımı ve seyrek matris-matris-matris çarpımı gibi birkaç çok özel işlemi buldu. Yaptığımız en büyük katkı, matrisler seyrek olduğunda herhangi bir tensör-cebir ifadesi için kod üretme kabiliyetidir. “
Özel Çekirdekler
Son yıllarda, tensörlerin, tensör cebirinin matematiksel kullanımı sadece büyük veri analizinde değil, aynı zamanda makine öğrenmede çok önem kazanmıştır. Einstein zamanından bu yana bilimsel araştırmaların temel bir parçası olmuştur.
Geleneksel olarak, tensör cebrini işlemek için, matematik yazılımı tensör işlemlerini bileşen parçalarına ayırdı. Örneğin, eğer iki tensör işlemi çarpılacak ve daha sonra üçüncüye eklenecekse; yazılım ilk tensörün sürekli çarpma/çoğaltma rutin işlemini, ilk iki tensörde de çalıştıracaktı. Böylece standart tensör ekini yürütecekti.
Ancak, büyük veriler yıprandıkça, bu yaklaşım çok zaman alıcı oluyor.
Kjolstad, büyük veri setleri üzerinde verimli bir çalışma için, her tensör işlemi dizisinin kendi “çekirdek” veya “hesaplama şablonu”na ihtiyaç olduğunu söylüyor.
Kjolstad: “Eğer, bu işlem bir çekirdekte yapılırsa; çıktıyı belleğe atmak zorunda kalmadan, hepsi tek seferde daha hızlı hale getirilebilir. Daha sonra başka bir öğeye ekleyebilmek için de tekrar okunabilir. Tüm bu işlem aynı döngü içerisinde gerçekleşir.”
Bilgisayar bilimi araştırmacıları, Amarasinghe tarafından numaralandırılan işlemler gibi; makine öğrenmede ve büyük veri analizlerinde en yaygın olan tensör işlemlerinin bazıları için çekirdekler geliştirdiler. Fakat olası çekirdek sayısı sonsuzdur:
Örneğin, üç tensörü bir araya getiren çekirdek, dört tensörü eklemeye yarayan çekirdekten farklıdır. Aynı şekilde 3 boyutlu tensörü bir araya getiren çekirdek de 4 boyutlu tensörü eklemeye yarayan çekirdekten farklıdır.
Pek çok tensör işlemi, bir tensörden gelen girdiyi birbiri ile çarpmaktadır. Her iki girdi de sıfırsa, bu da onların ürünüdür ve büyük, seyrek matrisleri işlemek için kullanılan programlar; sıfırların eklenmesi ve çarpılması için çok fazla zaman harcayabilir.
Seyrek tensörler için elle optimize edilen kod, sıfır girdileri tanımlar ve onları içeren işlemleri düzenler (ya sıfırdan farklı girdileri ilavelerde taşır ya da çarpmaları tamamen atlar). Bu, tensör manipülasyonlarını daha hızlı yapar, ancak programcının çok daha fazla iş yapmasını gerektirir.
İki matrisli çarpma kodunda; (basit bir tensör, yalnızca iki boyutlu, örneğin bir tablo) matris doluysa (yani girdilerin hiçbiri atlanamıyorsa) 12 satır alır. Ancak, matris seyrekse, aynı işlem, ihmal ve çizgiyi izlemek için 100 satır veya daha fazla kod gerektirebilir.
Taco
Taco tüm bu ekstra kodları otomatik olarak ekler. Programcıya, tam ya da seyrek olsun, bir tensörün boyutunu ve değerlerini içe aktarması gereken dosyanın yerini belirtir. İki tensör üzerindeki herhangi bir işlem için Taco, her iki tansördeki eşleştirilmiş girişlerin sıfır olmadığına ve daha sonra her tensörden hangi girişlerin sıfırlarla eşlendiğini gösteren (basitçe attığı sıfır çiftleriyle)
hiyerarşik bir harita oluşturur.
Taco ayrıca, seyrek tensörlerin yalnızca sıfır olmayan değerlerini depolamak için etkili bir endeksleme şeması kullanır. Sıfır girişler dahilinde; müşteri kimlik numaralarını satın alımlarla eşleştiren ve incelemelerden alınan açıklayıcı terimleri Amazon‘dan kullanıcılara yayınlayan tensör; 107 ekstrabayt verinin veya tüm Google sunucularının tahmini depolama kapasitesinin yaklaşık 10 katını almaktadır.
Ancak Taco sıkıştırma düzenini kullanarak, sadece bir akıllı telefona sığacak kadar küçük, yalnızca 13 gigabaytlık yer kaplar.
Ohio State Üniversitesi Bilgisayar Bilimi ve Mühendisliği Profesörü Saday Sadayappan, “Son yirmi yılda birçok araştırma grubu, seyrek matris hesaplamaları için derleyici optimizasyonu ve kod üretme problemini çözmeye çalıştı. Ancak çok az ilerleme kaydedildi. Fred ve Saman’ın son çalışmaları ise, uzun süredir devam eden bu sorunu çözmeyi başardı.”
Derleyiciler, uygulama geliştiricilerinin çok karmaşık seyrek matris veya tensör hesaplamalarını, kolay ve kullanışlı hale getiriyor. Bu sayede derleyici otomatik olarak çok verimli bir kod üretiyor. Birkaç seyrek hesaplama için, derleyiciden üretilen kodun özenle geliştirilmiş, elle gerçekleştirilen uygulamalarından daha iyi olduğu ispatlandı.”