Kata “deep” di deep learning dulu saya dengar seperti istilah marketing. Ternyata artinya teknis dan sederhana: neural network dengan banyak hidden layer. Sedangkan GPU — awalnya saya kira itu cuma alat para korporat dengan budget besar. Dua asumsi itu saya luruskan di episode ini, termasuk pengalaman nyata belajar deep learning tanpa punya GPU sendiri.
Kenapa Namanya “Deep”
Yang membuat banyak layer spesial bukan sekadar jumlah parameternya, tapi hierarki abstraksi yang terbentuk. Pada model visi, layer awal belajar mendeteksi pola elementer seperti garis dan tepi. Layer tengah menggabungkannya jadi pola menengah seperti sudut dan tekstur. Layer dalam menggabungkan lagi jadi konsep tingkat tinggi seperti wajah atau objek. Setiap layer membangun di atas abstraksi layer sebelumnya.
Sebagai programmer, saya menyebutnya seperti arsitektur software yang sehat: helper functions kecil dirakit jadi modul, modul dirakit jadi service, service dirakit jadi sistem. Anda tidak menulis satu fungsi seribu baris untuk semuanya — dan deep network tidak mempelajari konsep mentah langsung dari piksel. Kedalaman memberi ruang bagi abstraksi bertingkat itu.
Kenapa Butuh GPU
Inti komputasi training adalah perkalian matriks raksasa, diulang jutaan kali. Kabar baiknya: operasi-operasi di dalam perkalian matriks saling independen — elemen hasil satu tidak menunggu elemen hasil lain. Ini pekerjaan yang bisa diparalelkan habis-habisan.
CPU dan GPU menjawab tantangan ini dengan filosofi berbeda. CPU punya segelintir core yang besar dan pintar, dioptimalkan untuk logika bercabang dan operasi serial. GPU punya ribuan core kecil dan sederhana, dioptimalkan untuk melakukan operasi identik atas data masif secara serentak. Training neural network hampir seluruhnya tipe kerja kedua, jadi GPU bisa puluhan kali lebih cepat — dan kecepatan itu bukan kemewahan, tapi syarat agar siklus eksperimen tidak memakan hari.
| Aspek | CPU | GPU |
|---|---|---|
| Jumlah core | Sedikit, besar, pintar | Ribuan, kecil, sederhana |
| Gaya kerja | Serial, logika kompleks | Paralel masif, operasi seragam |
| Cocok untuk | Web server, scripting, logika bisnis | Perkalian matriks, grafis, training model |
| Analogi | Empat senior engineer | Seribu intern yang disiplin |
Mencoba Sendiri di PyTorch
import time
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
print("device:", device)
a = torch.randn(2048, 2048, device=device)
b = torch.randn(2048, 2048, device=device)
start = time.time()
c = a @ b
if device == "cuda":
torch.cuda.synchronize() # pastikan komputasi benar-benar selesai
print("waktu matmul:", round(time.time() - start, 4), "detik")
Jalankan skrip ini di laptop tanpa GPU lalu di Colab dengan GPU, dan perbedaannya tidak butuh penjelasan lagi. Satu catatan penting dari pengalaman sendiri: pemindahan data antara CPU dan GPU itu mahal. Pola yang benar adalah mengirim data ke device sekali di awal, mengolah semuanya di sana, lalu mengambil hasilnya di akhir — bukan bolak-balik di setiap langkah.
Realita Belajar Tanpa GPU Mahal
Saya tidak punya GPU gaming, apalagi server. Yang saya pakai: Google Colab dan Kaggle Notebooks yang memberi akses GPU gratis dengan kuota harian. Konsekuensinya nyata: VRAM terbatas, jadi batch size harus kecil, dan pesan “CUDA out of memory” menjadi pemandangan rutin. Strategi yang menyelamatkan saya: batch kecil, mixed precision, model yang lebih ringkas, dan disiplin menghapus tensor besar yang tidak dipakai lagi.
Kapan Deep Learning Justru Berlebihan
Bagian yang jarang dibahas tutorial: deep learning bukan selalu jawaban. Untuk data tabular berukuran kecil-menengah — spreadsheet, log transaksi, data pelanggan — model klasik seperti gradient boosting sering menang dengan biaya jauh lebih murah. Prinsip yang saya pegang sama seperti prinsip ngoding: mulai dari baseline sederhana, naikkan kompleksitas hanya kalau metrik membuktikan perlu. Deep learning adalah palu luar biasa; pastikan masalah Anda memang paku.
Komentar Terbaru