Berita dalam Bahasa Indonesia
Terbaru
AI & Teknologi

Di balik cuda-convnet: lapisan AlexNet dua GPU dan era ImageNet

Detail die prosesor sebagai ilustrasi, bukan GPU NVIDIA yang dibahas dalam artikel.
Detail die prosesor sebagai ilustrasi, bukan GPU NVIDIA yang dibahas dalam artikel.

Tonggak sejarah AlexNet pada 2012 bertumpu pada rekayasa GPU tingkat rendah (cuda-convnet), arsitektur dua GPU terpisah, dan secara langsung memicu perlombaan cepat menuju model computer vision yang lebih dalam dan lebih efisien.

1. Cara Kerja cuda-convnet di Balik Layar

Sebelum NVIDIA membuat cuDNN, Alex Krizhevsky menulis cuda-convnet dalam CUDA C++ mentah untuk memeras kecepatan maksimal dari GPU arsitektur Fermi generasi awal (GTX 580). Pustaka modern biasanya membentangkan konvolusi menjadi perkalian matriks raksasa (im2col), yang menghabiskan memori dalam jumlah besar. Karena setiap GTX 580 hanya memiliki VRAM 3 GB, Krizhevsky merancang rutin GPU langsung yang hemat memori.

  • Tata Letak Memori Batch-First (CHWN). Framework modern secara bawaan memakai NCHW (Batch, Channels, Height, Width), yang menempatkan semua piksel satu gambar berdampingan di memori. Krizhevsky menyimpan tensor dalam urutan CHWN, dengan dimensi batch (N) di posisi terakhir. Ketika 32 thread GPU dalam satu warp memproses 32 gambar berbeda pada lokasi piksel yang persis sama, pembacaan memori mereka sepenuhnya berurutan (coalesced), sehingga bandwidth VRAM dimaksimalkan.
  • Shared Memory Tiling. Membaca dari VRAM global memerlukan ratusan siklus clock, sedangkan Shared Memory on-chip (hanya 48 KB per Streaming Multiprocessor pada GTX 580) hanya perlu beberapa siklus. Thread block memuat potongan 2D kecil dari piksel gambar dan bobot filter ke Shared Memory, menghitung puluhan dot product sebelum menulis hasil akhir kembali ke VRAM.
  • Penggunaan Ulang Register di Tingkat Warp. Krizhevsky menugaskan setiap thread block untuk menghitung satu tile piksel keluaran di beberapa filter sekaligus. Dengan menyimpan bobot filter di register GPU yang cepat, satu potongan gambar yang dimuat dari Shared Memory dipakai ulang di banyak filter sekaligus, sehingga lalu lintas memori berkurang drastis.

2. Lapisan Spesifik AlexNet dan Pemisahan Dua GPU

AlexNet terdiri dari 8 lapisan yang dipelajari (5 konvolusional dan 3 fully connected) dengan total sekitar 60 juta parameter. Karena satu GTX 580 tidak memiliki VRAM 3 GB+ yang dibutuhkan untuk aktivasi, bobot, dan gradien, Krizhevsky membelah jaringan secara vertikal menjadi dua aliran paralel.

LapisanTipeTotal Filter / NeuronPembagian per GPUKomunikasi Antar-GPU
InputGambar RGB224 × 224 × 3Disalin ke kedua GPUTidak ada
Conv 1Conv 11×11 (stride 4) + MaxPool96 filter48 filter per GPUTerisolasi (tanpa sinkronisasi)
Conv 2Conv 5×5 + MaxPool256 filter128 filter per GPUTerisolasi (hanya membaca Conv 1 dari GPU-nya sendiri)
Conv 3Conv 3×3384 filter192 filter per GPUSinkronisasi penuh (membaca semua 256 peta dari kedua GPU)
Conv 4Conv 3×3384 filter192 filter per GPUTerisolasi (hanya membaca Conv 3 dari GPU-nya sendiri)
Conv 5Conv 3×3 + MaxPool256 filter128 filter per GPUTerisolasi (hanya membaca Conv 4 dari GPU-nya sendiri)
FC 6Fully Connected + Dropout4.096 neuron2.048 neuron per GPUSinkronisasi penuh (terhubung ke semua keluaran Conv 5)
FC 7Fully Connected + Dropout4.096 neuron2.048 neuron per GPUSinkronisasi penuh (terhubung ke semua neuron FC 6)
FC 8Fully Connected (Softmax)1.000 kelas1.000 kelas (gabungan)Sinkronisasi penuh (mengeluarkan prediksi akhir ImageNet)
  • Spesialisasi Fitur Alami. Menariknya, karena Lapisan 1 dan 2 tidak pernah berkomunikasi antar-GPU, kedua kartu secara konsisten berkembang dengan peran khusus. Satu GPU mempelajari detektor tepi dan tekstur yang tidak peka warna (filter mirip Gabor dalam skala abu-abu), sementara GPU lainnya mengkhususkan diri pada gumpalan dan rona yang spesifik warna.
  • Meminimalkan Bottleneck PCIe. Mengirim data melalui bus PCIe pada motherboard itu lambat. Dengan membatasi komunikasi antar-GPU hanya pada Conv 3 dan lapisan Fully Connected, Krizhevsky menjaga GPU tetap menghitung dengan kecepatan penuh tanpa tersendat oleh transfer data.

3. Yang Terjadi Selanjutnya di Era ImageNet

Kemenangan AlexNet menyulut perlombaan tahunan di kompetisi ImageNet, mendorong jaringan dari 8 lapisan menjadi lebih dari 150 lapisan hanya dalam tiga tahun.

  • 2013 – ZFNet (Visualisasi & Penyetelan). Matthew Zeiler dan Rob Fergus memperkenalkan teknik dekonvolusi untuk memvisualisasikan apa yang sebenarnya "dilihat" AlexNet di dalam lapisan tersembunyi. Dengan memperkecil ukuran filter lapisan pertama AlexNet dari 11×11 menjadi 7×7 dan mengurangi stride, ZFNet menurunkan tingkat kesalahan top-5 ImageNet dari 15,3% menjadi 14,8%.
  • 2014 – VGGNet (Kedalaman melalui Filter 3×3 Seragam). Peneliti di Oxford membuktikan bahwa menumpuk banyak konvolusi 3×3 yang kecil (hingga 16 atau 19 lapisan) bekerja lebih baik daripada memakai satu filter besar (seperti 11×11 atau 5×5). Dua lapisan 3×3 yang ditumpuk mencakup area pandang 5×5 yang sama dengan parameter lebih sedikit dan aktivasi ReLU non-linear tambahan, menurunkan tingkat kesalahan menjadi 7,3%.
  • 2014 – GoogLeNet / Inception (Efisiensi Multi-Skala). Google memperkenalkan modul Inception, yang menjalankan konvolusi 1×1, 3×3, dan 5×5 secara paralel dalam lapisan yang sama lalu menggabungkan keluarannya. Dengan memakai konvolusi 1×1 yang murah untuk memampatkan kedalaman kanal sebelum perhitungan yang mahal, GoogLeNet mencapai 22 lapisan dan tingkat kesalahan 6,7% dengan parameter 12 kali lebih sedikit daripada AlexNet.
  • 2015 – ResNet (Skip Connection & 152 Lapisan). Sekadar menumpuk lebih banyak lapisan akhirnya membuat akurasi pelatihan menurun karena gradien menghilang selama backpropagation. Microsoft Research mengatasinya dengan Residual Connection (skip connection), yang memungkinkan data melewati lapisan lewat pintasan identitas langsung. Ini membuka jalan bagi jaringan 152 lapisan, yang mencapai tingkat kesalahan top-5 3,57%, melampaui performa tolok ukur tingkat manusia (~5%) untuk pertama kalinya.

Berita lainnya: AI & Teknologi