1 poin oleh GN⁺ 2024-03-26 | 1 komentar | Bagikan ke WhatsApp
  • Google TPU v1 adalah ASIC yang dikembangkan dalam 15 bulan sejak akhir 2013 untuk menangani biaya dan skala inferensi layanan deep learning, dengan target kinerja per biaya 10 kali lebih baik dibanding GPU
  • Intinya adalah implementasi systolic array dari H.T. Kung dan Charles E. Leiserson (1978) sebagai struktur MAC 256×256, sehingga mengurangi perjalanan bolak-balik hasil antara perkalian matriks ke memori
  • TPU v1 berkomunikasi dengan host melalui PCIe dan menyimpan bobot di DDR3-2133, serta membentuk alur inferensi dengan sejumlah kecil instruksi seperti Read_Host_Memory, Read_Weights, Matrix_Multiply / Convolve, Activate, Write_Host_Memory
  • Dengan perkalian bilangan bulat 8-bit×8-bit dan kuantisasi, TPU v1 menghindari beban luas die dari komputasi floating-point, sementara User Space Driver dan Kernel Driver yang terintegrasi dengan TensorFlow mengendalikan eksekusi
  • Intel Haswell CPU dan Nvidia K80 GPU menjadi pembanding saat itu; TPU v1 sekitar 15~30 kali lebih cepat untuk inferensi dan memiliki peningkatan relatif kinerja/Watt 25~29 kali dibanding GPU, tetapi bukan perangkat untuk pelatihan

Titik Awal TPU v1 untuk Menurunkan Biaya Inferensi

  • Tujuan proyek TPU v1 adalah membuat ASIC untuk inferensi dengan cepat guna menurunkan biaya perangkat keras berskala besar yang dibutuhkan layanan berbasis deep learning
    • Targetnya adalah keunggulan 10 kali kinerja per biaya dalam inferensi dibanding GPU
    • Pengembangan cepat, kinerja tinggi, penerapan skala besar, dukungan langsung untuk workload baru, dan efisiensi biaya semuanya dibutuhkan
  • Nama TPU berasal dari fungsinya sebagai perangkat yang mempercepat operasi tensor
    • Perhitungan inti yang benar-benar ditangani perangkat keras TPU v1 terutama adalah operasi vektor dan matriks
    • Lapisan tersembunyi dan lapisan output dalam neural network dapat dinyatakan sebagai hasil penerapan fungsi aktivasi pada perkalian vektor input dengan matriks bobot
    • Ketika beberapa data input masuk, bentuknya menjadi penerapan fungsi aktivasi pada tiap elemen hasil perkalian matriks

Memproses Perkalian Matriks dengan Systolic Array

  • TPU v1 menggunakan konsep systolic system dari makalah H.T. Kung dan Charles E. Leiserson tahun 1978, Systolic Arrays (for VLSI)
    • Ini adalah struktur di mana beberapa prosesor menghitung dan meneruskan data dalam ritme yang teratur
    • Setiap prosesor menjalankan komputasi singkat sambil terus memindahkan data masuk dan keluar
  • Pada perkalian matriks 2×2 sederhana, jika nilai input dimasukkan dari atas dan kiri dalam urutan yang tepat, hasilnya secara alami keluar dari array MAC 2×2
    • Setiap MAC melakukan perkalian dan akumulasi
    • Jumlah parsial disimpan di dalam array, dan hasil akhir muncul dalam bentuk diagonal yang bergerak
    • Contoh 2×2 membutuhkan 4 tahap, tetapi dalam praktiknya perkalian matriks berikutnya dapat dimulai segera setelah MAC kiri atas kosong, sehingga perkalian matriks baru dimungkinkan setiap 2 siklus
  • Intinya, jika data dipasok ke systolic array dalam urutan yang benar, aliran nilai dan hasil itu sendiri membentuk urutan komputasi yang dibutuhkan
    • Tidak perlu menyimpan hasil antara ke memori utama lalu mengambilnya kembali
    • Berkat struktur unit perkalian matriks dan urutan input, hasil antara otomatis tersedia pada saat dibutuhkan

Konfigurasi Sistem TPU v1

  • TPU v1 berkomunikasi dengan komputer host melalui bus serial berkecepatan tinggi PCIe, dan mengakses DDR3 DRAM miliknya sendiri secara langsung
  • Komponen utamanya adalah sebagai berikut
    • DDR3 DRAM / Weight FIFO
      • Bobot disimpan pada chip DDR3 RAM yang terhubung melalui antarmuka DDR3-2133
      • Setelah dimuat lebih dulu dari memori host melalui PCIe, bobot dipindahkan ke Weight FIFO agar dapat digunakan oleh Matrix Multiply Unit
    • Matrix Multiply Unit
      • Ini adalah systolic array yang terdiri dari MAC 256×256
      • Menerima 256 bobot dari atas dan 256 input data dari kiri
    • Accumulators
      • Menyimpan hasil yang keluar dari bagian bawah unit matriks sistolik
    • Activation
      • Tahap yang menerapkan fungsi aktivasi neural network
    • Unified Buffer / Systolic Data Setup
      • Menyimpan hasil penerapan fungsi aktivasi dan menyiapkannya untuk dipasok kembali sebagai input ke Matrix Multiply Unit untuk komputasi lapisan berikutnya

Format Komputasi dan Set Instruksi

  • Matrix Multiply Unit pada TPU v1 melakukan perkalian bilangan bulat 8-bit×8-bit
    • Dengan menggunakan kuantisasi, ia menghindari komputasi floating-point yang membutuhkan luas die lebih besar
  • Set instruksinya adalah desain CISC dengan sekitar 20 instruksi
    • Instruksi tidak diambil dari memori, melainkan dikirim oleh komputer host melalui PCIe
  • Sebagian besar alur inferensi terdiri dari 5 instruksi utama
    • Read_Host_Memory
      • Membaca nilai input dari memori host ke Unified Buffer melalui PCIe
    • Read_Weights
      • Membaca bobot dari memori bobot ke Weight FIFO
    • Matrix_Multiply / Convolve
      • Mengirim input dari Unified Buffer ke Accumulators sambil melakukan perkalian matriks atau konvolusi
      • Mengalikan input B×256 dengan input bobot konstan 256×256 untuk menghasilkan output B×256, dan memerlukan B siklus pipeline
    • Activate
      • Menerapkan fungsi nonlinier neuron buatan seperti ReLU dan Sigmoid pada input dari Accumulators, lalu mengeluarkan hasilnya ke Unified Buffer
    • Write_Host_Memory
      • Menulis hasil dari Unified Buffer ke memori host melalui PCIe
  • Alur ini secara garis besar dapat dilihat sebagai berikut
Read_Host_Memory
Read_Weights
Loop_Start
    Matrix_Multiply
    Activate
Loop_End
Write_Host_Memory
  • Unit matriks menggunakan eksekusi sistolik untuk menghemat energi dengan mengurangi baca/tulis Unified Buffer
    • Data masuk dari kiri, dan bobot dimuat dari atas
    • Operasi MAC untuk 256 elemen melewati matriks seperti muka gelombang diagonal

TensorFlow dan Stack Driver

  • Agar perangkat keras TPU v1 dapat digunakan dalam layanan nyata, diperlukan stack perangkat lunak yang mendukungnya
    • Karena Google mengembangkan dan menggunakan TensorFlow, membuat driver agar TensorFlow bekerja dengan TPU v1 menjadi tahap kunci
  • Stack perangkat lunak TPU harus kompatibel dengan stack untuk CPU dan GPU
    • Aplikasi harus dapat dipindahkan ke TPU dengan cepat
    • Bagian aplikasi yang dijalankan di TPU umumnya ditulis dengan TensorFlow dan dikompilasi menjadi API yang dapat dijalankan di GPU atau TPU
  • Seperti GPU, stack TPU juga dibagi menjadi User Space Driver dan Kernel Driver
    • Kernel Driver dijaga tetap ringan, hanya menangani manajemen memori dan interrupt, dengan tujuan stabilitas jangka panjang
    • User Space Driver sering berubah dan bertanggung jawab atas konfigurasi serta kontrol eksekusi TPU, pemformatan ulang data sesuai urutan TPU, konversi pemanggilan API menjadi instruksi TPU, dan pembuatan binary aplikasi

Proses 28nm dan Tata Letak Die

  • TPU v1 diproduksi dengan proses 28nm TSMC yang relatif matang
    • Chip Intel Haswell CPU dan Nvidia K80 GPU yang saat itu digunakan di data center Google dibuat dengan proses yang lebih maju
    • Menurut Google, luas die TPU v1 kurang dari setengah luas die chip-chip tersebut
  • ISA yang sederhana menurunkan overhead die yang diperlukan untuk decoding dan pekerjaan terkait
    • Area control hanya menempati 2% dari luas die
    • Matrix Multiply Unit menempati 24%, dan Unified Buffer menempati 29%

Perbandingan Kinerja dan Batasan yang Jelas

  • TPU v1 adalah perangkat untuk inferensi agar model yang sudah dilatih dapat digunakan dengan lebih efisien dalam layanan nyata berskala Google
    • Ini bukan perangkat yang dirancang untuk meningkatkan kecepatan atau efisiensi pelatihan
    • Inferensi dan pelatihan menimbulkan tantangan yang berbeda dalam pengembangan perangkat keras khusus
  • Pada 2013, pembanding utamanya adalah Intel Haswell CPU dan Nvidia K80 GPU
    • TPU v1 memiliki jumlah MAC 25 kali lebih banyak daripada K80 GPU
    • TPU v1 memiliki memori on-chip 3,5 kali lebih banyak daripada K80 GPU
    • TPU v1 sekitar 15~30 kali lebih cepat dalam inferensi dibanding K80 GPU dan Haswell CPU
    • Peningkatan relatif kinerja/Watt dibanding GPU adalah 25~29 kali
  • Berkat arsitektur kustomnya, TPU v1 mencapai kinerja inferensi yang lebih tinggi dan penggunaan energi yang lebih rendah dibanding CPU dan GPU pada masa itu
  • Karena merupakan desain generasi pertama yang berfokus pada satu tujuan, yaitu inferensi cepat dan efisiensi daya, keterbatasannya tetap ada: perangkat ini tidak dirancang untuk pelatihan

1 komentar

 
GN⁺ 2024-03-26
Komentar Hacker News
  • CEO Groq Jonathan Ross baru-baru ini menceritakan dalam wawancara podcast tentang masa-masa membuat TPU awal di Google; katanya awalnya itu adalah FPGA yang ia buat dalam 20% time setelah duduk di dekat tim yang sedang mengalami masalah kecepatan inferensi
    Setelah membuat sesuatu yang berfungsi, Jeff Dean menghitung-hitungnya lalu mereka memutuskan beralih ke ASIC
    Menurut saya, kalau sekarang Google seharusnya memisahkan tim TPU menjadi perusahaan tersendiri. Itu satu-satunya pesaing yang kredibel untuk menghadapi Nvidia, dan dukungan perangkat lunaknya juga berada di level setelah Nvidia
    https://open.spotify.com/episode/0V9kRgNS7Ds6zh3GjdXUAQ?si=q...

    • Keunggulan Nvidia, jika diurutkan berdasarkan pentingnya, menurut saya adalah kapasitas foundry yang sudah dipesan, perangkat lunak yang sangat terintegrasi, struktur perangkat keras yang sudah ada, dan hubungan dengan pelanggan
      Namun masing-masing punya kelemahan. Kapasitas foundry memang ketat, tetapi Nvidia bisa mengorbankan pasar GPU konsumen jika bisa menjual chip AI yang lebih mahal. Jika pesaing sudah bertaruh besar sejak beberapa tahun lalu, atau perusahaan dengan kapasitas produksi besar seperti Intel mengubah prioritas, keunggulan ini akan hilang
      Perangkat lunak proprietari yang menjadi standar industri memang nyaman, tetapi tingkat kepentingannya sangat bergantung pada use case. Desain perangkat keras untuk TPU tampaknya secara inheren jauh lebih sederhana daripada GPU; tidak perlu ray tracing, texture sampler, atau rasterisasi, dan sebagian besar hanya membutuhkan banyak perkalian matriks dan memori
      Hubungan pelanggan berguna agar tetap ikut dalam percakapan, tetapi di pasar yang mencari keunggulan sekecil apa pun, pemasok perangkat keras dengan FLOPS per dolar tertinggi akan memperoleh cukup pelanggan untuk memenuhi kapasitas produksinya. Jadi saya rasa dalam beberapa tahun, persaingan akan menjadi kenyataan dengan cukup cepat
    • Soal gagasan bahwa Google seharusnya memisahkan tim TPU menjadi perusahaan tersendiri, melihat ukuran pasar dan situasinya yang nyaris monopoli, saya pikir nilainya bisa hampir seketika melampaui bisnis perangkat keras Pixel
      Namun TPU juga merupakan sumber daya komputasi yang relatif langka bahkan di internal Google, dan besar kemungkinan mereka kesulitan memenuhi permintaan internal sekalipun
    • Amazon mengakuisisi Annapurna Labs yang melakukan hal serupa, sehingga memiliki silikon Trainium/Inferentia sendiri, dan dari sisi dukungan jelas lebih banyak daripada Google
    • Pernyataan bahwa satu-satunya pesaing kredibel Nvidia adalah TPU itu salah. AMD dan Intel juga punya GPU dengan performa setara H100 melalui Habana
    • Groq benar-benar luar biasa. Banyak startup datang hanya membawa bualan dan janji, tetapi Groq muncul dengan produk keren yang sudah berfungsi, dan itu saja sudah cukup menjadi alasan untuk menyukainya
      Saya hampir tidak pernah mengatakan sangat menghormati sebuah perusahaan sampai sejauh ini, tetapi saya benar-benar menghormati Groq
  • Google menciptakan TPU dan Google Research bahkan menerbitkan makalah LLM, tetapi saya tidak mengerti mengapa NVDA dan startup AI justru mengambil hampir 100% nilainya

    • Ada lelucon lama tentang Xerox dan PARC yang menjelaskannya begini: “sulit menjual kantor tanpa kertas kepada perusahaan mesin fotokopi”
      Dalam kasus Google, analoginya bisa jadi: jika ada usulan untuk menyediakan sesuatu seperti ChatGPT secara luas, itu bisa menggerus penempatan berbayar di mesin pencari dan pendapatan iklan dari situs-situs yang tidak lagi perlu dikunjungi orang. Jadi mungkin muncul keputusan untuk mengadopsinya dengan hati-hati, hanya ketika diperlukan secara kompetitif, dan dengan cara yang dampaknya lebih kecil
      Kenyataannya tentu tidak sesederhana itu, tetapi kalau itu alasannya, rasanya cukup lucu
    • Google tidak mampu fokus lebih dari 18 bulan pada produk yang tidak menghasilkan laba bernilai miliaran dolar. Mereka mabuk iklan
    • Terlalu dini untuk mengatakan Google tidak akan bisa mengambil nilai dari AI. Mereka punya banyak peluang untuk mengintegrasikan AI ke produk-produknya sendiri
    • Untuk preseden historis, lihat saja Xerox PARC
    • OpenAI merebut talenta Google dengan kompensasi yang jauh lebih tinggi
      https://www.linkedin.com/posts/eolver_googles-defense-agains...
  • Saya karyawan Google, dan kalau sudah lama tidak melihat TPU, saya sarankan mengecek v5. Sekarang sudah mendukung PyTorch/JAX, sehingga jauh lebih mudah digunakan dibanding saat masih khusus TensorFlow

    • Di mana saya bisa membeli TPU v5 untuk dipasang di server saya? Kalau jawabannya “cloud”, itulah alasan Nvidia begitu dominan
  • Tulisan ini berhasil menghubungkan berbagai potongan yang sebelumnya tersebar secara abstrak dengan bagaimana semuanya benar-benar mengalir di dalam silikon
    Saya terutama senang melihat instruksi CISC sederhana hampir langsung berpadanan dengan tahap inferensi LLM

  • Mungkin ini pertanyaan bodoh yang menunjukkan ketidaktahuan saya, tetapi di sisi konsumen saya terus mendengar bahwa chip M1–M4 bagus untuk sebagian pekerjaan AI
    Saat ini yang paling penting bagi saya adalah alat seperti Photoshop dan Resolve, dan saya melihatnya berjalan jauh lebih cepat di chip baru buatan Apple sendiri dibanding mesin lama saya
    Mungkin ini tidak terlalu berkaitan dengan apa yang bisa dilakukan chip ini atau H100, tetapi saya penasaran apakah ada keterkaitan sampai batas tertentu. Tentu saja Apple tidak menjual chip buatannya secara terpisah, jadi agar praktis mereka harus merilis produk semacam server eksternal yang berisi banyak GPU dan chip AI

    • Saya tidak bisa dibilang ahli, tetapi saya pernah melakukan benchmark pada M1 dan beberapa GPU
      Chip M* memakai memori terpadu, dan khususnya Pro/Max/Ultra memiliki bandwidth memori yang sangat tinggi bahkan dibanding GPU seperti 1080. Bandwidth memori M1 Ultra kira-kira berada di antara 2080 dan 3090
      Pada ukuran batch kecil, terutama batch 1 seperti kebanyakan pekerjaan lokal, inferensi terhambat oleh bandwidth memori, bukan kemampuan komputasi. Karena itulah muncul pendapat bahwa chip M* bagus untuk machine learning
      Namun H100 terutama digunakan untuk pelatihan dengan ukuran batch sangat besar, dan untuk melatih model besar dibutuhkan banyak interkoneksi. Pada skala itu intensitas aritmetik sangat tinggi, sehingga chip M* tidak terlalu kompetitif meski bisa dihubungkan lewat jaringan. Mereka memilih titik berbeda pada kurva Pareto daya/efisiensi dibanding chip boros daya seperti H100
  • Hal yang benar-benar perlu dilakukan Google adalah masuk ke ranah 2nm EUV dan turun di bawah 2nm.
    Entah itu litografi elektron atau teknologi yang dipakai ASML untuk mencetak pada chip, kalau mereka punya hal seperti itu, mereka akan menjadi pihak yang benar-benar berbahaya. Sepertinya dibutuhkan proyek moonshot hardcore ala Google X.
    Atau mungkin mereka punya sekitar 500 juta dolar untuk membeli satu peralatan. Kalau TPU memang sebagus itu, ini bisa menjadi bisnis yang bagus untuk melakukan integrasi vertikal hingga teknologi sendiri dan fab sendiri.

    • Sejujurnya, itu hampir mustahil. Kalau memikirkan puluhan tahun rahasia dagang yang harus dipahami lebih dulu, puluhan atau ratusan miliar dolar modal untuk membangun fab canggih pertama, 10–20 tahun sampai matang menjadi bisnis yang berfungsi dengan baik, dan fakta bahwa volume yang akan mereka produksi terlalu kecil, besar kemungkinan mereka akan membakar 500 miliar dolar hanya untuk, sekitar 10 tahun kemudian, mencapai posisi yang masih tertinggal beberapa tahun dari proses canggih saat ini.
      Alasan fab canggih saat ini menghasilkan keuntungan adalah karena mereka membuat perangkat komputasi serbaguna untuk beragam pelanggan dan penggunaan, didukung talenta dan rekayasa yang terakumulasi selama puluhan tahun. Selain itu, para pelanggan secara independen mendorong inovasi di area-area penting, seperti peningkatan yield chip-on-chip HDI Micron, serta fabric komunikasi antardai dan desain substrat multichip Xilinx.
      TPU tidak akan pernah bisa menghasilkan volume yang dibutuhkan, dan juga tidak akan bisa menarik pelanggan yang menciptakan skala ekonomi yang menguntungkan. Google juga harus menawarkan harga yang menarik dibanding pesaing.
      Jika ada alasan bisnis yang cukup meyakinkan, fab yang sudah ada akan dengan senang hati mengalokasikan kapasitas. TPU sejauh ini sama sekali belum semeyakinkan itu.
  • Saya pernah mendengar presentasi Jim Keller dari TensTorrent yang menjelaskan pendekatan lain untuk membuat core AI. Caranya memakai 5 core RISC-V: satu untuk memuat data, satu untuk mengunggah data, dan sisanya khusus untuk operasi matriks.
    Ia juga menyebut Google TPU, katanya pemrogramannya seperti menangani VLIW dan ada sekitar 500 orang yang mengerjakan compilernya.

  • Di artikel asli tertulis “TPU v1 adalah desain CISC dengan sekitar 20 instruksi”, dan lucu rasanya melihat CISC/RISC tampaknya telah bergerak dari pengamatan tajam, menjadi program riset, teknologi revolusioner, buzzword pemasaran, lalu akhirnya sampai ke omong kosong yang sama sekali tak bermakna.
    Mungkin ini bisa disebut siklus hidup sebuah istilah.

    • Saya tidak sepenuhnya yakin, tetapi dari yang saya pelajari di arsitektur komputer, perbedaan CISC dan RISC lebih berkaitan dengan kompleksitas instruksi daripada jumlah instruksinya sendiri.
      Jadi meskipun jumlah instruksi TPU sedikit, kalau tiap instruksinya cukup kompleks, itu bisa saja CISC. Namun terakhir kali saya mengambil arsitektur komputer adalah di kelas pascasarjana 15 tahun lalu, jadi ingatan saya agak samar. Sebagian besar semester itu juga dihabiskan untuk pekerjaan terkait Itanium yang sekarang sudah tidak berguna.
    • Sepertinya itu menyiratkan bahwa jumlah instruksi yang tersedia membedakan CISC, padahal awalnya bukan itu kriterianya.
  • Permintaan kapasitas foundry tampaknya sangat besar, jadi saya penasaran bagaimana Microsoft atau Google bisa berada di barisan paling depan ketika mereka membuat chip sendiri dan membutuhkan produksi.
    Apakah chip itu cukup sederhana sehingga bisa dibuat di fab yang “lebih tua dan kurang diminati”? Setahu saya Apple dan Nvidia sudah mengamankan banyak kapasitas foundry.

  • Saya penasaran bagaimana hardware akan berubah jika LLM benar-benar banyak mengadopsi kuantisasi -1, 0, 1