Bagaimana cara menggunakan ASIC untuk akselerasi kerja AI?

9

Kita dapat membaca di halaman Wikipedia bahwa Google membangun chip ASIC khusus untuk pembelajaran mesin dan dirancang untuk TensorFlow yang membantu mempercepat AI.

Karena chip ASIC secara khusus dikustomisasi untuk satu penggunaan tertentu tanpa kemampuan untuk mengubah sirkuitnya, harus ada beberapa algoritma tetap yang dipanggil.

Jadi bagaimana tepatnya akselerasi AI menggunakan chip ASIC bekerja jika algoritmenya tidak dapat diubah? Bagian mana yang justru mempercepat?

kenorb
sumber
1
Tidak ada teknik AI umum yang saya sadari memerlukan modifikasi algoritme , meskipun sebagian besar bergantung pada kemampuan untuk memodifikasi data (kekuatan koneksi, anggota populasi) dll.
NietzscheanAI
Jadi satu-satunya bagian dinamis seperti keadaan jaringan disimpan pada beberapa memori flash atau drive?
kenorb
Menurut en.wikipedia.org/wiki/Application-specific_integrated_circuit , ASIC modern dapat memiliki RAM ...
NietzscheanAI

Jawaban:

4

Operasi tensor

Pekerjaan utama dalam sebagian besar aplikasi ML hanyalah serangkaian operasi tensor (sangat besar) misalnya perkalian matriks. Anda dapat melakukan itu dengan mudah dalam ASIC, dan semua algoritma lain hanya dapat berjalan di atas itu.

Peter adalah
sumber
1
Poin penting adalah bahwa TPU menggunakan multiplikasi 8 bit, yang dapat diimplementasikan jauh lebih efisien daripada multiplikasi yang lebih luas yang ditawarkan oleh CPU. Presisi rendah semacam itu sudah cukup dan memungkinkan untuk mengemas ribuan pengganda seperti itu dalam satu chip.
maaartinus
3

Saya pikir algoritme telah berubah minimal, tetapi perangkat keras yang diperlukan telah dipangkas.

Jumlah transisi gerbang berkurang (mungkin operasi float dan presisi juga), seperti juga jumlah operasi pemindahan data, sehingga menghemat daya dan runtime. Google menyarankan TPU mereka mencapai penghematan biaya 10X untuk menyelesaikan pekerjaan yang sama.

https://cloudplatform.googleblog.com/2016/05/Google-supercharges-machine-learning-tasks-with-custom-chip.html

Randy
sumber
1

ASIC - Singkatan dari Application Specific IC. Pada dasarnya Anda menulis program untuk merancang sebuah chip dalam HDL . Saya akan mengambil contoh bagaimana komputer modern bekerja untuk menjelaskan maksud saya:

  • CPU - CPU pada dasarnya adalah mikroprosesor dengan banyak IC pembantu melakukan tugas tertentu. Dalam mikroprosesor hanya ada satu Unit Pemrosesan Aritmatika (istilah yang dibuat) yang disebut Akumulator di mana nilai harus disimpan, karena perhitungan dilakukan hanya dan hanya nilai yang disimpan dalam akumulator. Jadi setiap instruksi, setiap operasi, setiap operasi R / W harus dilakukan melalui akumulator (itu sebabnya komputer lama digunakan untuk membekukan ketika Anda menulis dari file ke beberapa perangkat, meskipun saat ini prosesnya telah disempurnakan dan mungkin tidak memerlukan akumulator datang di antara DMA khusus). Sekarang dalam algoritma ML Anda perlu melakukan perkalian matriks yang dapat dengan mudah diparalelkan, tetapi kami memiliki unit pemrosesan tunggal saja dan juga GPU.
  • GPU's - GPU's memiliki 100's unit pemrosesan tetapi mereka tidak memiliki fasilitas serbaguna CPU. Jadi mereka bagus untuk perhitungan paralel. Karena tidak ada memori yang tumpang tindih (bagian yang sama dari memori yang dimanipulasi oleh 2 proses) dalam aplikasi multi-matriks, GPU akan bekerja dengan sangat baik. Meskipun karena GPU tidak multi-fungsi, GPU hanya akan berfungsi secepat CPU memasukkan data ke dalam memorinya.
  • ASIC - ASIC dapat berupa GPU, CPU atau prosesor dari desain Anda, dengan jumlah memori yang ingin Anda berikan. Katakanlah Anda ingin merancang prosesor ML khusus Anda sendiri, merancang prosesor pada ASIC. Anda ingin nomor FP 256 bit? Buat prosesor 256 bit. Anda ingin penjumlahan Anda menjadi cepat? Mengimplementasikan penambah paralel hingga jumlah bit yang lebih tinggi daripada prosesor konvensional? Kamu inginnjumlah core? Tidak masalah. Anda ingin mendefinisikan aliran data dari unit pemrosesan yang berbeda ke tempat yang berbeda? Kamu bisa melakukannya. Juga dengan perencanaan yang cermat Anda bisa mendapatkan pertukaran antara wilayah ASIC vs daya vs kecepatan. Satu-satunya masalah adalah bahwa untuk semua ini, Anda perlu membuat standar sendiri. Umumnya beberapa standar didefinisikan dengan baik diikuti dalam merancang prosesor, seperti jumlah pin dan fungsinya, standar IEEE 754 untuk representasi floating point, dll yang telah muncul setelah banyak percobaan dan kesalahan. Jadi, jika Anda dapat mengatasi semua ini, Anda dapat dengan mudah membuat ASIC Anda sendiri.

Saya tidak tahu apa yang Google lakukan dengan TPU mereka tetapi ternyata mereka merancang semacam Integer dan standar FP untuk core 8 bit mereka tergantung pada persyaratan yang ada. Mereka mungkin menerapkannya pada ASIC untuk pertimbangan daya, area dan kecepatan.

Duta
sumber
0

Presisi rendah memungkinkan komputasi paralelisme tinggi di lapisan Convo dan FC. Arsitektur tetap CPU & GPU, tetapi ASIC / FPGA dapat dirancang berdasarkan arsitektur jaringan saraf

Mahi
sumber