3 puan yazan GN⁺ 2024-03-17 | 1 yorum | WhatsApp'ta paylaş

Yeni makine öğrenimi donanım mimarisi

  • Bu depo, mevcut iç çarpım (inner product) işlemleriyle aynı performansı elde ederken çarpma işlemlerinin neredeyse yarısını gerektiren bir ML donanım mimarisinin kaynak kodunu içeriyor.
  • Düşük bit genişlikli (low-bitwidth) toplamaları kullanarak çarpmaların neredeyse yarısının yerine geçen alternatif bir iç çarpım algoritması çalıştırarak, ML hızlandırıcılarının teorik throughput ve hesaplama verimliliği sınırlarını yükseltiyor.
  • Daha fazla ayrıntı, IEEE Transactions on Computers dergisinde yayımlanan makalede bulunabilir.

Yeni algoritma ve donanım mimarisi

  • Free-pipeline Fast Inner Product (FFIP) adlı yeni bir algoritma ve donanım mimarisi tanıtılıyor.
  • 1968'de Winograd tarafından önerilen hızlı iç çarpım algoritmasını (FIP) geliştiriyor.
  • FIP, konvolüsyonel (convolutional) katmanlara uygulanan Winograd minimum filtreleme algoritmasıyla ilişkili değildir; matris çarpımına büyük ölçüde indirgenebilen tüm ML model katmanlarına uygulanabilir.
  • ML hızlandırıcılarında ilk kez FIP uygulanıyor ve FIP'nin saat frekansını ve bunun sonucunda elde edilen throughput'u iyileştiren FFIP algoritması ile genelleştirilmiş bir mimari sunuluyor.
  • FIP ve FFIP algoritmaları ile mimarilerine ML odaklı optimizasyonlar katkı olarak sunuluyor.
  • FFIP, mevcut sabit noktalı (fixed-point) systolic array ML hızlandırıcılarına sorunsuz biçimde entegre edilerek, çarpma-birikim (MAC) birimlerinin yarısıyla aynı throughput'u elde edebiliyor veya sabit bir donanım bütçesiyle daha büyük bir azami systolic array boyutu uygulanmasını mümkün kılıyor.
  • 8~16 bit sabit noktalı girdiler kullanan seyrek olmayan (non-sparse) ML modelleri için FFIP uygulaması, aynı tür hesaplama platformunda en iyi çözümlerden daha yüksek throughput ve hesaplama verimliliği sağlıyor.

Kaynak kod yapısı

  • compiler: Python model tanımlarını hızlandırıcı komutlarına ayrıştıran derleyiciyi içerir; ayrıca hızlandırıcıda model çalıştırmayı başlatan, sonuçları ve performans sayaçlarını okuyan ve sonuç doğruluğunu test eden PCIe sürücüsüyle arayüz kodunu da içerir.
  • rtl: Sentezlenebilir SystemVerilog RTL içerir.
  • sim: Test için simülasyon ortamını kuran betikleri içerir.
  • tests: Cocotb kullanarak simülasyonda hızlandırıcıyı doğrulayan UVM tabanlı testbench kaynak kodunu içerir.
  • utils: Projede kullanılan ek Python paketleri ve betikleri içerir; genel geliştirme yardımcıları ve destek için yazar tarafından hazırlanmıştır.

GN⁺ görüşü

  • Bu yazı, ML donanım mimarisinde yenilikçi bir ilerlemeyi tanıtıyor; özellikle çarpma işlemlerini azaltırken performansı koruyan yeni bir algoritma ve mimariyi açıklıyor. Bu, ML işlemlerinin verimliliğini önemli ölçüde artırabilecek kayda değer bir gelişme.
  • FFIP algoritması, mevcut ML hızlandırıcı tasarımlarına yeni bir boyut ekliyor ve donanım kaynaklarının daha verimli kullanılmasına olanak tanıyan bir yaklaşım sunuyor. Bu, enerji verimliliği ve maliyet etkinliğinin öne çıktığı modern bilişim ortamlarında oldukça önemli.
  • Ancak bu teknolojinin yaygın biçimde benimsenmesi için mevcut ML hızlandırıcılarıyla uyumluluk, geliştiricilerin yeni mimariyi ne kadar anlayabildiği ve gerçek donanıma uygulanırken ortaya çıkacak performans ile maliyet sorunları gibi etkenlerin dikkate alınması gerekiyor.
  • Benzer işlevler sunan diğer proje veya ürünler arasında Google'ın TPU'su (Tensor Processing Unit) ve NVIDIA'nın CUDA çekirdekleri yer alıyor; bunlar piyasada zaten doğrulanmış ML hızlandırıcı çözümleri.
  • Yeni bir teknoloji veya açık kaynak çözümü benimserken mevcut sistemlerle uyumluluk, performans artışına karşılık maliyet artışı ve geliştirme ile bakım karmaşıklığı dikkate alınmalıdır. FFIP'yi seçmenin avantajları throughput ve hesaplama verimliliğinde artış olurken, olası dezavantajlar geliştiricilerin yeni sisteme alışma süreci ve başlangıç uygulama maliyeti olabilir.

1 yorum

 
GN⁺ 2024-03-17
Hacker News görüşleri
  • Bu teknik etkileyici görünüyor, ancak neden hızlandırıcılarda zaten uygulanmadığını merak ediyorum; sadece unutulmuş bir algoritma mı, yoksa hızlandırıcı inşa ederken maliyet ya da başka etkiler mi yaratıyor?
  • Bu makale, donanımda matris çarpımı pipeline'larının sentezlenmesinden bahsediyor ve FPGA veya ASIC gibi donanımlarda faydalı olabilir. CPU veya GPU'da çarpma ve toplama genellikle aynı sürede gerçekleşir, ancak çarpma birimleri daha fazla transistör kapladığı için devre karmaşıklığını azaltmak hız ve paralel throughput'u artırabilir, ayrıca güç ve routing karmaşıklığını azaltabilir.
  • Matris çarpımında çarpmayı ortadan kaldırmanın bir başka yolu da çeşitli semiring'ler kullanmaktır. Örneğin Tropical Semiring, çarpma yerine toplama, toplama yerine de minimumu (veya maksimumu) kullanır. Bu hâlâ matris çarpımıdır, ancak ikili işlemler değiştirilmiştir. Tropical Algebra alanındaki araştırmalar optimizasyon problemleri ve sinir ağı optimizasyonu çalışmalarında kullanılır ve şu anda aktif ve zengindir.
  • Log Semiring kullanmak da çarpmayı verimli biçimde ortadan kaldırmanın bir yoludur. Olasılık zincirlerini çarpmak gerektiğinde (ör. Markov zinciri), sayılar çok küçülür ve kayan nokta doğruluğunu kaybeder. Sayıları log ölçeğine taşıdığınızda çarpma toplamaya dönüşür, toplama ise x + log1p(exp(y - x)) olur.
  • Çarpma mı yoksa toplama mı kullanılacağına karar vermek, basitçe çarpma kullanmaktan daha yavaş olabileceği için bu yöntemin gerçekten işe yaraması şaşırtıcı. Özellikle büyük miktarda iş paralel yürütülürken.
  • Bu sürecin 1968'de icat edilmiş olması ve şimdiye kadar bu amaçla kullanılmamış olması son derece ilginç.
  • 2018'de benzer bir kavramı denedim, ancak doktora başvurularımın hepsi reddedilince vazgeçtim. Buradaki kavram, backpropagation'ı harici bir ağla kopyalamaya çalışıyor ve bunun muhtemelen beynin gerçekte yaptığı şey olduğunu öne sürüyor.
  • Matris çarpımı için sub-cubic algoritmaların matematiksel teorisiyle ilgileniyorsanız, buradan başlayabilirsiniz. Tüm ( n \times n ) matrislerin ( O(n^{2+j}) ) adımda çarpılabildiği bir ( n ) sayısının var olduğu tahmin ediliyor (artık ( 2+j = w = 2.3728596 ) veya ( j > 0.3728596 ) için kanıtlanmış durumda).
  • Bu readme, iyileştirmenin ne olduğunu veya çarpmayı nasıl yarıya indirdiğini açıklama konusunda çok yetersiz. Big O çalışma süresinin ne olduğu ve bilinen en iyi sınırları değiştirip değiştirmediği de belirsiz. Diyagramlar kafa karıştırıcı ve bu yaklaşımın neden hızlı ve iyi olduğunu açıklamıyor. Sonuç olarak PDF'ye tıklamak bile istemiyorum. Projenin güvenilirliğini artırmak için, gerçekte neler olduğunu dürüst ve açık bir açıklama ile görselleştirmeler sunmayı düşünmeliler.