Mixed Precision & Loss Scaling

Bagaimana model sebenarnya belajar, dari gradient descent dasar hingga Adam

Pelatihan mixed precision menggunakan format angka yang lebih kecil demi kecepatan dan memori. Alih-alih menyimpan setiap perhitungan dalam presisi penuh (float 32-bit standar), banyak operasi menggunakan float16 atau bfloat16: format 16-bit yang memakai separuh memori dengan imbalan presisi yang lebih rendah dan, untuk float16, rentang ukuran yang bisa direpresentasikan lebih sempit.

Risikonya ada pada rentang numerik. Sebagian gradien sangat kecil. Jika angka kecil itu dibulatkan menjadi nol, optimizer kehilangan informasi. Loss scaling melindungi gradien-gradien kecil itu dengan mengalikan loss sebelum backpropagation, lalu membagi gradiennya kembali turun.

Timbangan dapur yang membulatkan ke gram penuh bisa melewatkan sejumput kecil bumbu. Jika Anda menimbang sepuluh jumput identik bersamaan, timbangan itu bisa melihat totalnya. Lalu Anda membagi sepuluh untuk mendapatkan kembali satu jumput. Loss scaling memakai trik yang sama: buat nilai kecil itu lebih mudah direpresentasikan, lalu skalakan kembali. Gambar di bawah adalah pengingat tentang apa yang dipertaruhkan. Descent hanya bekerja jika gradien setiap langkah bertahan melalui aritmetika; presisi tidak mengubah loop-nya, presisi menentukan apakah kemiringan-kemiringan kecil di dekat minimum masih terlihat olehnya.

Di mana ini berlaku dalam MLMixed precision adalah salah satu alasan jaringan neural besar bisa dilatih dengan cepat pada perangkat keras modern. Optimizer tetap membutuhkan konsep yang sama, tetapi skala numerik menjadi bagian dari resep pelatihan.
▶ Mixed Precision & Loss Scaling
← Alternating Least SquaresPenskalaan Batch Size →