3 poin oleh GN⁺ 2023-11-13 | 1 komentar | Bagikan ke WhatsApp
  • Pengembangan AI tidak lagi cukup hanya dengan eksekusi berurutan ala CPU; untuk benar-benar menangani performa pelatihan dan inferensi, kita perlu memahami model pemrosesan paralel skala besar pada GPU
  • CPU umumnya memiliki 2~16 core untuk kelas konsumen dan unggul dalam thread tunggal serta pekerjaan dengan percabangan kondisi, sedangkan GPU memiliki ribuan core kecil yang lebih cocok untuk operasi matriks, pemrosesan gambar, dan deep learning
  • AWS menyediakan lingkungan eksekusi GPU seperti P3/P4, P5/Inf1, G4, dan Amazon SageMaker; p3.2xlarge berada di kisaran $3.06 per jam, p5.48xlarge $98.32, dan g4dn.xlarge $0.526
  • NVIDIA CUDA memungkinkan developer menangani langsung alur eksekusi paralel mulai dari alokasi memori GPU, penyalinan data, eksekusi kernel, hingga kompilasi
  • Contoh penjumlahan array, pembuatan Mandelbrot, dan CNN klasifikasi kucing-anjing menunjukkan cara membagi loop berurutan menjadi thread GPU; Mandelbrot turun dari 4.07 detik di CPU menjadi 0.0046 detik di GPU

Mengapa pengetahuan CPU saja tidak cukup

  • Banyak developer belajar pemrograman dan pemecahan masalah dengan pendekatan berpusat pada CPU, tetapi CPU pada dasarnya bekerja dengan mengandalkan arsitektur berurutan
  • CPU tradisional mengeksekusi instruksi secara linear dan mengoptimalkan sejumlah kecil core yang kuat untuk performa thread tunggal
  • Saat harus menangani banyak pekerjaan sekaligus, pendekatan eksekusi berurutan membuat biaya memproses tugas satu per satu menjadi besar
  • Performa memang bisa ditingkatkan dengan multithreading, tetapi filosofi desain dasar CPU tetap lebih dekat ke eksekusi berurutan

Model AI dan pemrosesan paralel

  • Arsitektur AI modern seperti Transformer memanfaatkan pemrosesan paralel untuk meningkatkan performa pelatihan
  • RNN bekerja secara berurutan, tetapi Transformer seperti GPT dapat memproses banyak kata sekaligus, sehingga meningkatkan efisiensi pelatihan dan kapabilitas model
  • Pelatihan paralel memungkinkan model yang lebih besar, dan model yang lebih besar menjadi dasar untuk menghasilkan output yang lebih baik
  • Paralelisme tidak hanya berlaku untuk pemrosesan bahasa alami, tetapi juga untuk pengenalan gambar
    • AlexNet adalah contoh yang memproses banyak bagian gambar secara bersamaan untuk mengidentifikasi pola
  • Karena CPU dirancang dengan fokus pada performa thread tunggal, CPU sulit mendistribusikan dan menjalankan komputasi paralel dalam jumlah besar yang dibutuhkan model AI kompleks secara efisien

Cara GPU mengurangi bottleneck

  • GPU dirancang dengan struktur yang menggunakan banyak core kecil dan terspesialisasi alih-alih core CPU yang besar dan kuat
  • Paralelisme GPU sangat terlihat pada workload yang mengulang jenis operasi yang sama dalam jumlah besar, seperti rendering grafis dan perhitungan matematis kompleks
  • Framework deep learning seperti TensorFlow dioptimalkan untuk memanfaatkan performa GPU agar pelatihan dan inferensi model berjalan lebih cepat
  • Pelatihan jaringan saraf melibatkan banyak operasi matriks, dan GPU unggul dalam memparalelkan operasi ini berkat jumlah core yang besar

Perbedaan peran CPU dan GPU

  • CPU

    • CPU dirancang dengan fokus pada pemrosesan berurutan, sehingga kuat untuk pekerjaan yang mengeksekusi satu aliran instruksi secara linear
    • Cocok untuk komputasi tujuan umum, tugas sistem, dan pemrosesan algoritme kompleks yang mengandung percabangan kondisi
    • CPU konsumen biasanya memiliki jumlah core yang relatif sedikit, umumnya di kisaran 2~16 core
    • Setiap core dapat memproses instruction set-nya sendiri secara independen
  • GPU

    • GPU dirancang sebagai arsitektur paralel sehingga efisien untuk memproses banyak subtugas sekaligus
    • Unggul untuk rendering grafis, perhitungan matematis kompleks, dan eksekusi algoritme yang bisa diparalelkan
    • Pekerjaan dipecah menjadi unit paralel yang lebih kecil agar banyak operasi bisa diproses bersamaan
    • Core GPU sering kali berjumlah ribuan dan tersusun dalam streaming multiprocessors(SMs) atau struktur serupa
    • Cocok untuk pekerjaan yang menangani banyak data sekaligus, seperti pemrosesan gambar dan video, deep learning, serta simulasi ilmiah

Lingkungan GPU yang bisa dipilih di AWS

  • AWS menyediakan berbagai instance GPU yang bisa digunakan untuk pekerjaan seperti machine learning
  • Instance GPU serbaguna

    • P3 dan P4 adalah instance GPU serbaguna yang cocok untuk berbagai workload
    • Dapat digunakan untuk pelatihan dan inferensi machine learning, pemrosesan gambar, dan encoding video
    • p3.2xlarge berharga $3.06 per jam dan menyediakan 1 GPU NVIDIA Tesla V100 dengan memori GPU 16GB
  • Instance yang dioptimalkan untuk inferensi

    • Inferensi adalah proses memasukkan data real-time ke model AI yang telah dilatih untuk membuat prediksi atau menyelesaikan tugas
    • P5 dan Inf1 ditujukan untuk inferensi machine learning yang membutuhkan latensi rendah dan efisiensi biaya
    • p5.48xlarge berharga $98.32 per jam dan menyediakan 8 GPU NVIDIA H100, masing-masing dengan memori 80GB, total memori video 640GB
  • Instance yang dioptimalkan untuk grafis

    • G4 instances dirancang untuk menangani pekerjaan yang intensif grafis
    • Developer video game dapat menggunakan instance G4 untuk merender grafis 3D untuk game
    • g4dn.xlarge berharga $0.526 per jam dan menggunakan 1 GPU NVIDIA T4 dengan memori 16GB
  • Layanan machine learning terkelola

    • Amazon SageMaker adalah layanan terkelola untuk machine learning yang menyediakan akses ke instance berbasis GPU seperti P3, P4, dan P5
    • SageMaker cocok untuk organisasi yang ingin memulai machine learning tanpa mengelola infrastruktur dasarnya secara langsung
    • Dokumen harga Amazon SageMaker disediakan secara terpisah

Dasar penggunaan NVIDIA CUDA

  • CUDA adalah platform komputasi paralel sekaligus model pemrograman yang dikembangkan NVIDIA, yang memungkinkan aplikasi berjalan lebih cepat dengan memanfaatkan akselerator GPU
  • Contohnya menunjukkan alur pengembangan CUDA mulai dari alokasi memori GPU, penyalinan data, eksekusi kernel, hingga pengambilan hasil
  • Alur instalasi

    • Unduh base installer dan driver installer dari CUDA
    • Tambahkan variabel lingkungan berikut ke .bashrc di folder home
      • export PATH="/usr/local/cuda-12.3/bin:$PATH"
      • export LD_LIBRARY_PATH="/usr/local/cuda-12.3/lib64:$LD_LIBRARY_PATH"
    • Jalankan perintah berikut
      • sudo apt-get install cuda-toolkit
      • sudo apt-get install nvidia-gds
    • Reboot sistem untuk menerapkan perubahan
  • Perintah pemeriksaan yang berguna

    • lspci | grep VGA: mengidentifikasi dan menampilkan GPU di sistem
    • nvidia-smi: menampilkan informasi detail seperti utilisasi, suhu, dan penggunaan memori GPU NVIDIA
    • sudo lshw -C display: menampilkan informasi display controller termasuk kartu grafis
    • inxi -G: menampilkan informasi subsistem grafis termasuk GPU dan display
    • sudo hwinfo --gfxcard: digunakan untuk memeriksa informasi detail kartu grafis sistem

Memparalelkan penjumlahan array dengan CUDA

  • Penjumlahan array adalah masalah yang cocok untuk menjelaskan paralelisasi GPU
  • Contoh array adalah A = [1,2,3,4,5,6], B = [7,8,9,10,11,12], dan hasilnya C = [8,10,12,14,16,18]
  • Pendekatan CPU menjumlahkan elemen array satu per satu
  • Saat data bertambah banyak, waktu pendekatan berurutan ikut meningkat, sedangkan GPU dapat menjalankan operasi seperti 1+7, 2+8, dan 3+9 secara bersamaan
  • Contoh CUDA menggunakan file kernel .cu
    • __global__ menandakan fungsi kernel yang dipanggil di GPU
    • vectorAdd menerima tiga pointer integer a, b, dan c lalu melakukan penjumlahan vektor
    • threadIdx.x mengambil indeks thread saat ini
    • Setiap thread menyimpan hasil penjumlahan elemen yang sesuai ke c[i]
  • Fungsi main berjalan dengan urutan alokasi memori GPU, penyalinan data, eksekusi kernel, lalu penyalinan hasil
    • cudaMalloc mengalokasikan memori cudaA, cudaB, dan cudaC di GPU
    • cudaMemcpy menyalin a dan b dari host ke GPU
    • vectorAdd <<<1, sizeof(a) / sizeof(a[0])>>> menjalankan kernel
    • Vektor hasil cudaC disalin kembali dari GPU ke host
  • Kompilasi dan eksekusi menggunakan perintah nvcc
  • Kode lengkap disediakan

Memanfaatkan GPU untuk pembuatan gambar Python

  • Pembuatan Mandelbrot set adalah pekerjaan yang menghasilkan pola visual kompleks berdasarkan perilaku angka dalam persamaan tertentu, dan sangat intensif sumber daya
  • Contoh Python berbasis CPU menghitung nilai Mandelbrot dengan menelusuri setiap piksel, dan membutuhkan 4.07 detik untuk membuat gambar 1024×1536
  • Versi akselerasi GPU menggunakan Numba library
    • Dekorator @jit melakukan kompilasi Just-In-Time yang mengubah kode Python menjadi machine code
    • cuda.jit digunakan untuk membuat mandel_gpu, dan device=True ditetapkan agar berjalan di GPU
    • mandel_kernel berjalan di CUDA GPU dan membagi pekerjaan pembuatan Mandelbrot ke thread GPU
  • create_fractal_gpu melakukan alokasi memori GPU, pengaturan thread dan block, eksekusi kernel GPU, sinkronisasi, dan penyalinan hasil
    • Menggunakan threadsperblock = (16, 16)
    • cuda.synchronize() menunggu hingga pekerjaan GPU selesai
    • d_image.copy_to_host(image) menyalin hasil ke sisi CPU
  • Waktu eksekusi GPU adalah 0.0046 detik, jauh lebih cepat daripada kode berbasis CPU
  • Kode lengkap disediakan

Melatih jaringan saraf klasifikasi kucing-anjing dengan GPU

  • Untuk menunjukkan bagaimana GPU digunakan dalam AI, digunakan contoh jaringan saraf yang membedakan kucing dan anjing
  • Prasyaratnya adalah CUDA dan TensorFlow
    • TensorFlow dapat diinstal dengan pip install tensorflow[and-cuda]
    • Dataset yang digunakan adalah Kaggle Dogs vs. Cats
    • Setelah diunduh, gambar kucing dan anjing diatur ke subfolder yang berbeda dalam folder pelatihan
  • Model menggunakan convolutional neural network(CNN)
    • pandas dan numpy digunakan untuk manipulasi data
    • Sequential digunakan untuk menumpuk layer jaringan saraf secara linear
    • Convolution2D, MaxPooling2D, Dense, Flatten adalah layer penyusun CNN
    • ImageDataGenerator digunakan untuk augmentasi data real-time selama pelatihan
  • Data pelatihan dimuat dengan ImageDataGenerator
    • Untuk data pelatihan diterapkan rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True
    • Gambar input diatur ke ukuran (64, 64), batch size 32, dan mode klasifikasi biner
  • Struktur CNN terdiri dari convolution, max pooling, flatten, layer Dense, dan output sigmoid
  • Model dikompilasi dengan optimizer adam, loss binary_crossentropy, dan metrik accuracy
  • Pelatihan dijalankan dengan epochs=25, validation_steps=2000, lalu disimpan ke file .h5 melalui classifier.save('trained_model.h5')
  • Kode inferensi memuat trained_model.h5, mengubah ukuran gambar ke (64, 64), lalu menampilkan dog jika nilai prediksi 0.5 atau lebih, jika tidak maka cat
  • Kode lengkap disediakan

Cakupan pemanfaatan GPU

  • Di era AI, kemampuan GPU sulit diabaikan, dan developer perlu memahami kapabilitas GPU dengan lebih baik
  • Saat beralih dari algoritme berurutan ke algoritme yang diparalelkan, GPU menjadi alat untuk mempercepat komputasi kompleks
  • Kemampuan pemrosesan paralel GPU sangat menguntungkan untuk menangani dataset skala besar dan arsitektur jaringan saraf kompleks dalam tugas AI dan machine learning
  • GPU digunakan tidak hanya di ranah machine learning tradisional, tetapi juga dalam riset ilmiah, simulasi, dan pekerjaan yang intensif data
  • Kemampuan pemrosesan paralel dimanfaatkan untuk memecahkan masalah di berbagai bidang seperti penemuan obat, pemodelan iklim, dan simulasi keuangan

1 komentar

 
GN⁺ 2023-11-13
Opini Hacker News
  • Kode dalam artikel ini salah. Kernel CUDA sama sekali tidak dipanggil: https://github.com/RijulTP/GPUToolkit/blob/f17fec12e008d0d37...
    Dalam kode kompilasi JIT, 90% waktu untuk “menghitung” himpunan Mandelbrot sebenarnya dihabiskan bukan untuk perhitungannya, melainkan untuk kompilasi fungsi
    Jika ingin benar-benar belajar CUDA, implementasi perkalian matriks adalah latihan yang bagus, dan tutorial yang layak dijadikan rujukan adalah https://cnugteren.github.io/tutorial/pages/page1.html dan https://siboehm.com/articles/22/CUDA-MMM

    • Ada juga SAXPY, yang sering disebut “Hello World” untuk kode matematika paralel di CUDA. SAXPY adalah singkatan dari “Single-Precision A·X Plus Y”, sebuah fungsi BLAS standar, dan merupakan operasi yang sangat sederhana yang menggabungkan perkalian skalar dan penjumlahan vektor
      Ia menerima vektor X dan Y bertipe floating point 32-bit serta skalar A, lalu mengalikan setiap X[i] dengan A dan menambahkannya ke Y[i]: https://developer.nvidia.com/blog/six-ways-saxpy/
    • Setelah dikoreksi, penulis memperbaiki kodenya dan juga memperbarui blognya
  • Artikel ini mengklaim “semua developer harus tahu”, tetapi sebenarnya lebih dekat ke tulisan tentang cara GPU digunakan dalam AI. Kebanyakan developer bukan developer AI, dan mereka juga tidak berinteraksi langsung dengan AI atau memakai GPU secara langsung
    Selain itu, grafik 3D, yang merupakan alasan utama GPU ada, hampir tidak dibahas

    • Mengetahui dasar-dasar bidang yang berdekatan tetap membantu. Terutama untuk bidang seperti machine learning yang penerapannya luas; bisa saja proyek yang Anda tangani bulan depan perlu memakai machine learning, atau pengetahuan itu berguna saat berkolaborasi dengan rekan yang menangani bagian tersebut
      Dengan pengetahuan dasar, Anda juga bisa lebih memahami cerita soal “AI” yang dijual ke manajer
      Sikap “bidang sekitar tidak perlu dipelajari” adalah sesuatu yang sering saya lihat di sekolah. Di sisi administrasi sistem, teman-teman menganggap mereka tidak perlu tahu pemrograman, tetapi ternyata tetap butuh scripting; di sekolah pengembangan perangkat lunak, ada yang bilang tak perlu paham jaringan, tetapi beberapa tahun kemudian lowongan kerja penuh dengan DevOps
      Jika artikelnya sekitar 1.500 kata, membacanya dengan serius mungkin makan waktu 12 menit, dan bahkan jika menghabiskan sekitar 2 jam untuk menjalankan contoh kodenya pun itu bukan investasi besar. Tentu saja, itu dengan asumsi artikelnya memang pengantar yang bagus
    • Saat pindah dari perusahaan embedded tradisional ke startup, saya ingat rekan kerja dengan ramah mengolok-olok saya karena tidak tahu cara mengirim request JSON dengan curl. Saya masih developer embedded, tetapi sejak itu saya banyak belajar backend, frontend, dan infrastruktur, dan tampaknya ada kemungkinan besar situasi serupa akan terjadi di seluruh industri dalam beberapa tahun ke depan terkait AI
    • Bahkan contoh render himpunan Mandelbrot pun hanya menunjukkan peningkatan kecepatan 10x, padahal ini adalah contoh khas komputasi yang hampir sepenuhnya dibatasi oleh jumlah operasi floating point. Menurut saya pribadi, ini artikel yang buruk
    • Ada banyak asumsi yang tidak akurat. Saya setuju bahwa sebagian besar developer bukan developer AI, dan penulis aslinya tampak agak terlepas dari populasi developer umum atau menganggap dunia di sekelilingnya sebagai gambaran keseluruhan
    • Setiap kali saya melihat artikel yang mengklaim “semua developer harus tahu”, klaim itu hampir selalu salah. Mungkin ada artikel yang benar-benar memuat informasi yang harus diketahui semua orang, tetapi yang saya temui kebanyakan adalah clickbait
  • Menurut saya, alasan Python dominan di AI adalah karena relasi Python-C mirip dengan relasi CPU-GPU
    GPU punya performa sangat bagus, tetapi sulit diprogram secara langsung, jadi orang mengakses GPU lewat pemanggilan API tingkat tinggi seperti PyTorch
    C juga punya performa bagus, tetapi sulit ditulis, jadi Python dipakai sebagai lapisan abstraksi di atas C
    Tidak jelas apakah orang benar-benar perlu memahami GPU sedalam itu. Kecuali jika benar-benar masuk jauh ke training atau operasi AI, dan jika Hukum Moore berakhir serta multithreading menjadi cara utama peningkatan kecepatan, kemungkinan akan muncul bahasa-bahasa baru yang disesuaikan dengan paradigma pemrograman paralel. Mojo tampak seperti titik awal ke arah itu

    • Saya pernah bertanya-tanya apakah ada tempat untuk bahasa baru yang dapat memaksimalkan performa secara tak terlihat di hardware apa pun tempat ia dijalankan
      Dari komputasi berulang sederhana hingga semua instruksi yang di belakang layar secara cerdas memanfaatkan semua core CPU secara paralel, dan pekerjaan yang memungkinkan akan dialihkan ke GPU
      Saya penasaran apakah upaya seperti ini sudah pernah ada, atau apakah ini memang memungkinkan sejak awal
    • Sulit mengatakan bahwa Hukum Moore sudah berakhir, dan multithreading juga bukan jawabannya. Namun, kalimat pertama itu benar
    • Pemrograman GPU sebenarnya tidak sesulit itu. CUDA cukup intuitif untuk banyak jenis pekerjaan, dan sering ada kasus di mana kurang dari 100 baris kode bisa menghasilkan peningkatan throughput 100x
    • Jika memakai bahasa yang lebih modern, Anda bisa mempertahankan ekspresivitas ala Python sambil mendapatkan performa setara C dengan cukup mudah. Malah menurut saya C kurang abstraksi, sehingga kode yang lambat tetapi sederhana justru terlihat lebih menarik
    • C adalah cara hidup. Orang yang hampir sepenuhnya hanya memakai C cenderung sulit menerima konsep “whitespace yang bermakna” di Python
  • Penjelasan bahwa “saat CPU menghadapi banyak tugas, ia membagi sumber daya untuk menangani tiap tugas satu per satu” terlalu menyederhanakan. Bahkan saya jadi berharap CPU masih sesederhana itu
    Wajar jika artikel ini berfokus pada model pemrograman, tetapi dari sudut pandang performa, pernyataan bahwa “CPU mengeksekusi instruksi secara berurutan” pada dasarnya salah. Pipeline mengeksekusi instruksi secara paralel, ada juga SIMD, dan beberapa core bisa bersama-sama menangani masalah yang sama

    • Artikel ini tampaknya salah fokus. CPU dengan AVX-512 juga punya paralelisme data skala besar, dan CPU pun dapat mengeksekusi banyak instruksi sekaligus
      Perbedaan besarnya adalah CPU menghabiskan banyak silikon dan daya untuk menangani control flow agar satu thread bisa berjalan efisien, sedangkan GPU menggunakan sumber daya itu untuk lebih banyak unit komputasi dan menjalankan sangat banyak thread guna menyembunyikan control flow dan latensi memori
    • CPU juga mengeksekusi beberapa instruksi SIMD secara bersamaan
  • Ungkapan bahwa CPU bagus untuk kode serial dan GPU bagus untuk kode paralel memang ada benarnya, tetapi itu pendekatan yang cukup kasar. Dengan asumsi anggaran daya yang mirip, di kisaran ratusan watt, CPU punya sekitar 100 “core” yang menjalankan tugas independen satu per satu, termasuk hyperthread, dan menyembunyikan latensi memori lewat prediksi cabang dan pipelining
    GPU punya sekitar 100 “compute unit”, dan tiap unit menjalankan silang sekitar 80 tugas independen, menyembunyikan latensi memori dengan mengeksekusi instruksi berikutnya dari tugas lain
    Istilahnya memang cukup membingungkan, dan CPU kemungkinan punya unit vektor selebar 256-bit, sementara GPU kemungkinan punya unit vektor selebar 2048-bit, tetapi jika dilihat dari agak jauh, kedua arsitektur ini tampak cukup mirip

    • GPU punya bandwidth memori sekitar 10 kali lebih besar daripada CPU, dan pada LLM perbedaan ini menjadi penting. Jika pemrosesan batch dilakukan secara optimal, untuk menghasilkan satu token output pada dasarnya harus membaca hampir seluruh memori, karena memori itu dipakai untuk bobot atau cache KV
    • Selalu terasa aneh bahwa hampir tidak ada upaya untuk menggabungkan beberapa core berlatensi rendah dengan banyak core berthroughput tinggi. Misalnya, satu Intel P-core dikelilingi beberapa E-core, lalu pada E-core itu dipasangi banyak core iGPU atau unit AVX-512
      Namanya bisa Xeon Chi
  • Sementara sebagian besar bahasa pemrograman dirancang untuk pemrosesan berurutan seperti CPU, kalau Erlang/Elixir dianggap dirancang untuk paralelisme seperti GPU, saya jadi penasaran apakah Nx / Axon akan naik daun: https://github.com/elixir-nx/

    • Erlang dirancang bukan untuk pemrosesan paralel yang berat secara komputasi, melainkan untuk sistem terdistribusi dengan konkurensi tinggi
    • Saya benar-benar penasaran seberapa baik Elixir dan Nx akan bekerja untuk tugas padat komputasi di klaster komputasi berkinerja tinggi. Secara struktur, ini tidak terlalu berbeda dari MPI yang sering dipakai di bidang ini, dan bisa jauh lebih mudah diakses seperti numpy dan ekosistem Python ilmiah
    • Sedang melihat apakah kombinasi Elixir dan Nx/Axon akan cocok dengan arsitektur seperti NVIDIA Grace Hopper yang menggabungkan CPU dan GPU
    • Penasaran apakah itu berjalan di GPU. Ke depannya saya rasa keduanya akan tetap dibutuhkan. Pemrograman sekuensial masih merupakan abstraksi terbaik untuk sebagian besar pekerjaan yang tidak membutuhkan eksekusi paralel masif
  • Perlu panduan pembelian. Ingin tahu minimal harus mengeluarkan berapa, dan pilihan terbaik di tiap rentang anggaran. Masalahnya, informasi itu kadang berubah, dan saya tidak tahu apakah ada sumber yang terus diperbarui

  • Jadi kita kembali lagi ke artikel clickbait model “yang harus diketahui semua developer”

    • Artikel dengan format seperti itu memang terasa akan tergantikan oleh ChatGPT, tetapi kalau ditulis dengan baik sebenarnya tetap cukup bernilai
      Saya suka tulisan yang menghadapi kompleksitas secara langsung, dan karena saya cukup paham baik pendekatan kuantitatif maupun detail kualitatif di bidang seperti perangkat keras komputer, saya senang melihat tulisan yang benar-benar menjelaskan detail suatu bidang
      Misalnya, terlepas dari apakah “What every programmer should know about memory” memang harus diketahui semua programmer, programmer yang baik setidaknya perlu punya gambaran tentang bagaimana komputer benar-benar bekerja. Inti penting yang bisa diambil dari tulisan itu, yaitu locality, sering muncul secara alami dalam kode yang cepat, mudah diikuti, dan cocok dengan masalahnya
    • Sepertinya begitu. Klaim dalam tulisan ini memang perlu disaring
  • Tulisan yang bagus, tetapi AWS P5 instance jelas lebih ditujukan untuk pelatihan, bukan inferensi, bersama P4d dan P4de. Jenis instance yang lebih cocok untuk inferensi adalah G4dn dan G5, yang masing-masing memakai GPU T4 dan A10G

    • Tulisan aslinya melewatkan G5
  • Saya hampir benar-benar baru dalam pemrograman GPU, tetapi tulisan ini menyenangkan untuk dibaca. Menakjubkan bahwa sekarang melatih jaringan saraf sederhana “anjing atau kucing” bisa semudah ini