Ana Sayfa

TinyTinyTPU: FPGA Üzerinde Minyatür Bir TPU Uygulaması

1 dk okuma

TinyTinyTPU, Google'ın TPU mimarisinin eğitim amaçlı, küçültülmüş bir versiyonu olarak FPGA üzerinde hayata geçirilmiş minimal bir 2x2 sistolik dizi tabanlı matris çarpım birimidir. SystemVerilog ile geliştirilen bu proje, Basys3 (Xilinx Artix-7) FPGA kartına dağıtılmıştır. Tam bir TPU mimarisi sunan TinyTinyTPU, dört işlem elemanına sahip 2x2 sistolik dizinin yanı sıra, biriktirici, aktivasyon, normalizasyon ve niceleme adımlarını içeren tam bir MAC sonrası işlem hattı barındırır. Ayrıca, UART tabanlı bir ana bilgisayar arayüzü ve çok katmanlı MLP (Çok Katmanlı Algılayıcı) çıkarım yeteneği de mevcuttur. Proje, yaklaşık 1.000 LUT, 1.000 Flip-Flop, 8 DSP48E1 dilimi ve 10-15 BRAM bloğu gibi düşük kaynak kullanımıyla dikkat çekmektedir.

Bu eğitim odaklı uygulama, öğrencilere ve araştırmacılara TPU mimarisi prensiplerini, sistolik dizi veri akışını ve FPGA prototiplemesini deneyimleme fırsatı sunar. Özellikle, veri akışının yatay (aktivasyonlar) ve dikey (kısmi toplamlar) olarak nasıl ilerlediğini gösteren sistolik dizi mimarisini, ağırlıkların doğru zamanlamayla yakalanması için köşegen dalga cephesi ağırlık yüklemesini ve ağırlık FIFO'sundan başlayıp nicelemeye kadar uzanan tam MLP işlem hattını detaylı bir şekilde sergiler. Çift tamponlu aktivasyonlar sayesinde çok katmanlı çıkarım desteği de bulunmaktadır.

TinyTinyTPU, küçük ölçekli makine öğrenimi çıkarımları için tasarlanmış olup, mimariyi öğrenmek ve FPGA üzerinde denemeler yapmak için idealdir. Üretim iş yükleri için Google TPU v1 gibi daha büyük dizi boyutlarına ölçeklendirme yapılması gerektiği belirtilmiştir. Proje, hem açık kaynak araç zincirlerini (Yosys/nextpnr) hem de Xilinx Vivado'yu destekleyerek geniş bir geliştirici kitlesine hitap etmektedir.

İçgörü

Google'ın TPU mimarisinin temel prensiplerini FPGA üzerinde pratik bir şekilde öğrenmek ve deneyimlemek isteyenler için erişilebilir bir platform sunuyor.

Kaynak