3 poin oleh GN⁺ 2024-03-17 | 1 komentar | Bagikan ke WhatsApp

Arsitektur perangkat keras machine learning baru

  • Repositori ini berisi kode sumber untuk arsitektur perangkat keras ML yang mencapai kinerja yang sama seperti saat menjalankan operasi inner product konvensional, tetapi hanya memerlukan hampir setengah dari jumlah operasi perkalian.
  • Dengan memanfaatkan penjumlahan low-bitwidth untuk menggantikan hampir setengah dari operasi perkalian, arsitektur ini menjalankan algoritma inner product alternatif yang meningkatkan batas throughput teoretis dan efisiensi komputasi akselerator ML.
  • Detail lebih lanjut dapat dilihat dalam makalah yang diterbitkan di jurnal IEEE Transactions on Computers.

Algoritma dan arsitektur perangkat keras baru

  • Memperkenalkan algoritma dan arsitektur perangkat keras baru bernama Free-pipeline Fast Inner Product (FFIP).
  • Meningkatkan algoritma Fast Inner Product (FIP) yang diusulkan oleh Winograd pada tahun 1968.
  • FIP tidak terkait dengan algoritma Winograd minimal filtering yang diterapkan pada layer convolutional, dan dapat diterapkan pada semua layer model ML yang sebagian besar dapat diuraikan menjadi perkalian matriks.
  • Untuk pertama kalinya mengimplementasikan FIP pada akselerator ML, serta menghadirkan algoritma FFIP dan arsitektur tergeneralisasi yang meningkatkan frekuensi clock FIP dan throughput yang dihasilkannya.
  • Memberikan optimisasi khusus ML untuk algoritma dan arsitektur FIP dan FFIP.
  • FFIP dapat diintegrasikan secara mulus ke akselerator ML systolic array fixed-point yang ada, untuk mencapai throughput yang sama dengan setengah jumlah unit multiply-accumulate (MAC), atau mewujudkan ukuran maksimum systolic array yang lebih besar dengan anggaran perangkat keras yang tetap.
  • Implementasi FFIP untuk model ML non-sparse yang menggunakan input fixed-point 8~16 bit mencapai throughput dan efisiensi komputasi yang lebih tinggi dibanding solusi terbaik di kelasnya pada platform komputasi dengan jenis yang sama.

Struktur kode sumber

  • compiler: berisi compiler yang mem-parsing deskripsi model Python menjadi instruksi akselerator, serta kode antarmuka dengan driver PCIe yang memulai eksekusi model pada akselerator, membaca hasil dan performance counter, serta menguji akurasi hasil.
  • rtl: berisi SystemVerilog RTL yang dapat disintesis.
  • sim: berisi skrip untuk menyiapkan lingkungan simulasi untuk pengujian.
  • tests: berisi kode sumber testbench berbasis UVM yang memverifikasi akselerator dalam simulasi menggunakan Cocotb.
  • utils: berisi paket dan skrip Python tambahan yang digunakan dalam proyek, dibuat oleh penulis untuk utilitas pengembangan umum dan bantuan.

Pendapat GN⁺

  • Artikel ini memperkenalkan kemajuan inovatif dalam arsitektur perangkat keras ML, khususnya algoritma dan arsitektur baru yang mengurangi operasi perkalian sambil mempertahankan kinerja. Ini merupakan kemajuan penting yang dapat sangat meningkatkan efisiensi operasi ML.
  • Algoritma FFIP menambahkan dimensi baru pada desain akselerator ML yang ada dan menyediakan cara untuk menggunakan sumber daya perangkat keras secara lebih efisien. Hal ini sangat penting dalam lingkungan komputasi modern yang menekankan efisiensi energi dan biaya.
  • Namun, agar teknologi ini dapat diadopsi secara luas, perlu dipertimbangkan kompatibilitas dengan akselerator ML yang ada, tingkat pemahaman para pengembang terhadap arsitektur baru, serta isu performa dan biaya saat diimplementasikan pada perangkat keras nyata.
  • Proyek atau produk lain yang menawarkan fungsi serupa termasuk TPU (Tensor Processing Unit) milik Google dan CUDA core milik NVIDIA, yang sudah terbukti di pasar sebagai solusi akselerator ML.
  • Saat mengadopsi teknologi baru atau open source, perlu mempertimbangkan kompatibilitas dengan sistem yang ada, kenaikan biaya dibanding peningkatan performa, serta kompleksitas pengembangan dan pemeliharaan. Keuntungan memilih FFIP adalah peningkatan throughput dan efisiensi komputasi, sementara potensi kekurangannya mencakup learning curve bagi pengembang terhadap sistem baru dan biaya implementasi awal.

1 komentar

 
GN⁺ 2024-03-17
Komentar Hacker News
  • Teknik ini tampak keren, tetapi saya penasaran mengapa ini belum diterapkan di akselerator, apakah ini sekadar algoritme yang terlupakan, atau ada biaya maupun dampak lain dalam membangun akselerator.
  • Makalah ini membahas penyintesisan pipeline perkalian matriks di perangkat keras, dan ini bisa berguna pada perangkat keras seperti FPGA atau ASIC. Pada CPU atau GPU, perkalian dan penjumlahan umumnya memakan waktu yang sama, tetapi unit perkalian membutuhkan lebih banyak transistor, sehingga jika kompleksitas rangkaian dikurangi, kecepatan dan throughput paralel bisa ditingkatkan sekaligus mengurangi daya dan kompleksitas routing.
  • Cara lain untuk menghilangkan perkalian dalam perkalian matriks adalah dengan menggunakan berbagai semiring. Misalnya, Tropical Semiring menggunakan penjumlahan sebagai pengganti perkalian, dan nilai minimum (atau maksimum) sebagai pengganti penjumlahan. Ini tetap merupakan perkalian matriks, tetapi operasi binernya diganti. Riset di bidang Tropical Algebra digunakan untuk masalah optimisasi dan optimisasi jaringan saraf, dan saat ini merupakan bidang yang aktif serta kaya.
  • Menggunakan Log Semiring juga merupakan cara untuk menghilangkan perkalian secara efisien. Saat harus mengalikan rantai probabilitas (misalnya pada rantai Markov), angkanya menjadi sangat kecil sehingga floating point kehilangan presisi. Jika angkanya diskalakan ke logaritma, perkalian menjadi penjumlahan, dan penjumlahan menjadi x + log1p(exp(y - x)).
  • Sungguh mengejutkan bahwa metode ini benar-benar bekerja, karena keputusan untuk memakai perkalian atau penjumlahan bisa saja lebih lambat daripada sekadar menggunakan perkalian. Terutama ketika pekerjaan dalam jumlah besar dijalankan secara paralel.
  • Fakta bahwa proses ini ditemukan pada 1968 dan belum digunakan untuk tujuan ini hingga sekarang sangat menarik.
  • Saya mencoba konsep serupa pada 2018, tetapi menyerah karena semua lamaran program doktor saya ditolak. Konsep di sini mencoba mereplikasi backpropagation melalui jaringan eksternal, dan mengklaim bahwa ini mungkin memang yang sebenarnya dilakukan otak.
  • Jika tertarik pada teori matematika algoritme sub-kubik untuk perkalian matriks, Anda bisa mulai dari sini. Ada dugaan bahwa terdapat suatu bilangan ( n ) sehingga semua matriks ( n \times n ) dapat dikalikan dalam ( O(n^{2+j}) ) langkah (sekarang telah dibuktikan untuk ( 2+j = w = 2.3728596 ) atau ( j > 0.3728596 )).
  • Readme ini sangat kurang dalam menjelaskan apa peningkatannya atau bagaimana cara mengurangi perkalian hingga setengah. Big O runtime-nya seperti apa, dan apakah ini mengubah batas terbaik yang sudah diketahui juga tidak jelas. Diagramnya membingungkan dan tidak menjelaskan mengapa pendekatan ini cepat dan baik. Akibatnya, saya bahkan enggan mengklik PDF-nya. Untuk meningkatkan kredibilitas proyek, sebaiknya disediakan penjelasan dan ilustrasi yang jujur serta jelas tentang apa yang sebenarnya terjadi.