Pengantar Cloud TPU
Tensor Processing Unit (TPU) adalah sirkuit terintegrasi khusus aplikasi (ASIC) Google yang dikembangkan secara kustom dan digunakan untuk mempercepat beban kerja machine learning. Untuk mengetahui informasi selengkapnya tentang hardware TPU, lihat Arsitektur Sistem. Cloud TPU adalah layanan web yang menyediakan TPU sebagai resource komputasi skalabel di Google Cloud.
TPU melatih model Anda secara lebih efisien menggunakan hardware yang dirancang untuk melakukan operasi matriks besar yang sering ditemukan dalam algoritma machine learning. TPU memiliki memori bandwidth tinggi (HBM) di chip yang memungkinkan Anda menggunakan model dan ukuran batch yang lebih besar. TPU dapat dihubungkan dalam grup yang disebut Pod yang meningkatkan skala beban kerja Anda dengan sedikit atau tanpa perubahan kode.
Bagaimana cara kerjanya?
Untuk memahami cara kerja TPU, sebaiknya pahami cara akselerator lain mengatasi tantangan komputasi dalam melatih model ML.
Cara kerja CPU
CPU adalah prosesor serbaguna berdasarkan arsitektur von Neumann. Artinya, CPU bekerja dengan software dan memori seperti ini:
Manfaat terbesar CPU adalah fleksibilitasnya. Anda dapat memuat jenis software apa pun di CPU untuk berbagai jenis aplikasi. Misalnya, Anda dapat menggunakan CPU untuk pemrosesan kata di PC, mengontrol mesin roket, menjalankan transaksi bank, atau mengklasifikasikan gambar dengan jaringan saraf.
CPU memuat nilai dari memori, melakukan penghitungan pada nilai, dan menyimpan hasilnya kembali ke memori untuk setiap penghitungan. Akses memori lambat jika dibandingkan dengan kecepatan penghitungan dan dapat membatasi total throughput CPU. Hal ini sering disebut sebagai bottleneck von Neumann.
Cara kerja GPU
Untuk mendapatkan throughput yang lebih tinggi, GPU berisi ribuan Arithmetic Logic Unit (ALU) dalam satu prosesor. GPU modern biasanya berisi antara 2.500–5.000 ALU. Jumlah prosesor yang besar berarti Anda dapat menjalankan ribuan perkalian dan penambahan secara bersamaan.
Arsitektur GPU ini berfungsi dengan baik pada aplikasi dengan paralelisme besar, seperti operasi matriks dalam jaringan saraf. Faktanya, pada beban kerja pelatihan biasa untuk deep learning, GPU dapat memberikan throughput yang jauh lebih tinggi daripada CPU.
Namun, GPU masih merupakan prosesor serbaguna yang harus mendukung banyak aplikasi dan software yang berbeda. Oleh karena itu, GPU memiliki masalah yang sama dengan CPU. Untuk setiap penghitungan dalam ribuan ALU, GPU harus mengakses register atau memori bersama untuk membaca operand dan menyimpan hasil penghitungan perantara.
Cara kerja TPU
Google mendesain Cloud TPU sebagai prosesor matriks yang dikhususkan untuk workload jaringan neural. TPU tidak dapat menjalankan pengolah kata, mengontrol mesin roket, atau menjalankan transaksi bank, tetapi dapat menangani operasi matriks besar yang digunakan dalam jaringan neural dengan kecepatan tinggi.
Tugas utama untuk TPU adalah pemrosesan matriks, yang merupakan kombinasi operasi perkalian dan akumulasi. TPU berisi ribuan multiply-accumulator yang terhubung langsung satu sama lain untuk membentuk matriks fisik yang besar. Ini disebut arsitektur array sistolik. Cloud TPU v3, berisi dua array sistolik 128 x 128 ALU, pada satu prosesor.
Host TPU melakukan streaming data ke antrean infeed. TPU memuat data dari antrean infeed dan menyimpannya di memori HBM. Setelah komputasi selesai, TPU akan memuat hasilnya ke dalam antrean feed keluar. Host TPU kemudian membaca hasil dari antrean feed keluar dan menyimpannya di memori host.
Untuk melakukan operasi matriks, TPU memuat parameter dari memori HBM ke dalam Unit Perkalian Matriks (MXU).
Kemudian, TPU memuat data dari memori HBM. Saat setiap perkalian dieksekusi, hasilnya akan diteruskan ke penghitung perkalian berikutnya. Outputnya adalah jumlah semua hasil perkalian antara data dan parameter. Tidak ada akses memori yang diperlukan selama proses perkalian matriks.
Akibatnya, TPU dapat mencapai throughput komputasi tinggi pada penghitungan jaringan neural.
Compiler XLA
Kode yang berjalan di TPU harus dikompilasi oleh compiler linear algebra (XLA) akselerator. XLA adalah compiler tepat waktu yang mengambil grafik yang dimunculkan oleh aplikasi framework ML dan mengompilasi komponen aljabar linear, kerugian, dan gradien grafik menjadi kode mesin TPU. Bagian program lainnya berjalan di mesin host TPU. Compiler XLA adalah bagian dari image VM TPU yang berjalan di mesin host TPU.
Kapan harus menggunakan TPU
Cloud TPU dioptimalkan untuk workload tertentu. Dalam beberapa situasi, Anda mungkin ingin menggunakan GPU atau CPU di instance Compute Engine untuk menjalankan workload machine learning. Secara umum, Anda dapat memutuskan hardware mana yang paling cocok untuk beban kerja Anda berdasarkan panduan berikut:
CPU
- Pembuatan prototipe cepat yang memerlukan fleksibilitas maksimum
- Model sederhana yang tidak memerlukan waktu lama untuk dilatih
- Model kecil dengan ukuran batch kecil dan efektif
- Model yang berisi banyak operasi TensorFlow kustom yang ditulis dalam C++
- Model yang dibatasi oleh I/O yang tersedia atau bandwidth jaringan sistem host
GPU
- Model dengan sejumlah besar operasi TensorFlow/PyTorch/JAX kustom yang harus berjalan setidaknya sebagian di CPU
- Model dengan operasi TensorFlow yang tidak tersedia di Cloud TPU (lihat daftar operasi TensorFlow yang tersedia)
- Model sedang hingga besar dengan ukuran batch efektif yang lebih besar
TPU
- Model yang didominasi oleh komputasi matriks
- Model tanpa operasi TensorFlow/PyTorch/JAX kustom di dalam loop pelatihan utama
- Model yang dilatih selama berminggu-minggu atau berbulan-bulan
- Model besar dengan ukuran batch efektif yang besar
- Model dengan penyematan ultra-besar yang umum dalam beban kerja rekomendasi dan pengurutan lanjutan
Cloud TPU tidak cocok untuk workload berikut:
- Program aljabar linear yang sering memerlukan cabang atau berisi banyak operasi aljabar menurut elemen
- Workload yang memerlukan aritmetika presisi tinggi
- Beban kerja jaringan saraf yang berisi operasi kustom dalam loop pelatihan utama
Praktik terbaik untuk pengembangan model
Program yang komputasinya didominasi oleh operasi non-matriks seperti menambahkan, membentuk ulang, atau menyambungkan, kemungkinan tidak akan mencapai penggunaan MXU yang tinggi. Berikut adalah beberapa panduan untuk membantu Anda memilih dan mem-build model yang sesuai untuk Cloud TPU.
Tata Letak
Compiler XLA melakukan transformasi kode, termasuk menyusun matriks menjadi blok yang lebih kecil, untuk menjalankan komputasi secara efisien di unit matriks (MXU). Struktur hardware MXU, array sistol 128x128, dan desain subsistem memori TPU, yang lebih memilih dimensi yang merupakan kelipatan 8, digunakan oleh compiler XLA untuk efisiensi tiling. Akibatnya, tata letak tertentu lebih kondusif untuk ubin, sementara tata letak lainnya memerlukan perubahan bentuk sebelum dapat disusun ubin. Operasi pembentukan ulang sering kali dibatasi memori di Cloud TPU.
Bentuk
Compiler XLA mengompilasi grafik ML tepat waktu untuk batch pertama. Jika batch berikutnya memiliki bentuk yang berbeda, model tidak akan berfungsi. (Mengompilasi ulang grafik setiap kali bentuk berubah terlalu lambat.) Oleh karena itu, model apa pun yang memiliki tensor dengan bentuk dinamis tidak cocok untuk TPU.
Padding
Program Cloud TPU berperforma tinggi adalah program yang komputasi padatnya dapat disusun menjadi 128x128 bagian. Jika komputasi matriks tidak dapat mengisi seluruh MXU, kompiler akan mengisi tensor dengan nol. Ada dua kelemahan padding:
- Tensor yang ditambahkan dengan nol tidak memanfaatkan core TPU secara maksimal.
- Padding meningkatkan jumlah penyimpanan memori on-chip yang diperlukan untuk tensor dan dapat menyebabkan error kehabisan memori dalam kasus ekstrem.
Meskipun padding dilakukan secara otomatis oleh compiler XLA jika diperlukan, seseorang dapat menentukan jumlah padding yang dilakukan melalui alat op_profile. Anda dapat menghindari padding dengan memilih dimensi tensor yang sangat cocok untuk TPU.
Dimensi
Memilih dimensi tensor yang sesuai akan sangat membantu dalam mengekstrak performa maksimal dari hardware TPU, terutama MXU. Compiler XLA mencoba menggunakan ukuran batch atau dimensi fitur untuk menggunakan MXU secara maksimal. Oleh karena itu, salah satu dari keduanya harus kelipatan 128. Jika tidak, compiler akan menambahkan salah satunya menjadi 128. Idealnya, ukuran batch serta dimensi fitur harus merupakan kelipatan 8, yang memungkinkan ekstraksi performa tinggi dari subsistem memori.
Integrasi Kontrol Layanan VPC
Kontrol Layanan VPC Cloud TPU memungkinkan Anda menentukan perimeter keamanan di sekitar resource Cloud TPU dan mengontrol pergerakan data di seluruh batas perimeter. Untuk mempelajari Kontrol Layanan VPC lebih lanjut, lihat ringkasan Kontrol Layanan VPC. Untuk mempelajari batasan dalam menggunakan Cloud TPU dengan Kontrol Layanan VPC, lihat produk dan batasan yang didukung.
Edge TPU
Model machine learning yang dilatih di cloud semakin perlu menjalankan inferensi "di edge"—yaitu, di perangkat yang beroperasi di edge Internet of Things (IoT). Perangkat ini mencakup sensor dan perangkat smart lainnya yang mengumpulkan data real-time, membuat keputusan cerdas, lalu mengambil tindakan atau menyampaikan informasinya ke perangkat lain atau cloud.
Karena perangkat tersebut harus beroperasi dengan daya terbatas (termasuk daya baterai), Google mendesain koprosesor Edge TPU untuk mempercepat inferensi ML di perangkat dengan daya rendah. Setiap Edge TPU dapat melakukan 4 triliun operasi per detik (4 TOPS), hanya menggunakan daya 2 watt—dengan kata lain, Anda mendapatkan 2 TOPS per watt. Misalnya, Edge TPU dapat menjalankan model visi seluler tercanggih seperti MobileNet V2 dengan kecepatan hampir 400 frame per detik, dan dengan cara yang hemat daya.
Akselerasi ML dengan daya rendah ini melengkapi Cloud TPU dan Cloud IoT untuk menyediakan infrastruktur menyeluruh (cloud-to-edge, hardware + software) yang memfasilitasi solusi berbasis AI Anda.
Edge TPU tersedia untuk perangkat produksi dan pembuatan prototipe Anda sendiri dalam beberapa faktor bentuk, termasuk komputer single-board, system-on-module, kartu PCIe/M.2, dan modul yang dipasang di permukaan. Untuk mengetahui informasi selengkapnya tentang Edge TPU dan semua produk yang tersedia, buka coral.ai.
Mulai menggunakan Cloud TPU
- Menyiapkan akun Google Cloud
- Mengaktifkan Cloud TPU API
- Memberikan akses Cloud TPU ke bucket Cloud Storage Anda
- Menjalankan penghitungan dasar di TPU
- Melatih model referensi di TPU
- Menganalisis model Anda
Meminta bantuan
Hubungi dukungan Cloud TPU. Jika Anda memiliki project Google Cloud yang aktif, bersiaplah untuk memberikan informasi berikut:
- ID project Google Cloud Anda
- Nama TPU Anda, jika ada
- Informasi lain yang ingin Anda berikan
Apa langkah selanjutnya?
Ingin mempelajari Cloud TPU lebih lanjut? Referensi berikut dapat membantu: