0Pricing
Learn AI with Python · Pelajaran

Pelatihan Presisi Campuran dengan AMP

torch.cuda.amp.autocast(), GradScaler, FP16 vs BF16, penghematan memori, peningkatan kecepatan.

Pelatihan Presisi Campuran dengan AMP adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa Itu Presisi Campuran

Pelatihan dengan presisi campuran menjalankan sebagian besar operasi menggunakan bilangan titik mengambang 16-bit (FP16), bukan 32-bit (FP32). FP16 menggunakan separuh memori dan berjalan lebih cepat pada inti tensor GPU modern, sementara beberapa operasi yang sensitif tetap menggunakan FP32 demi kestabilan.

Manfaatnya

Presisi campuran memberi Anda:

  • penghematan memori sekitar 2x, sehingga memungkinkan kumpulan data atau model yang lebih besar
  • Perkalian matriks yang lebih cepat pada inti tensor
  • Hanya sedikit atau tidak ada penurunan akurasi model akhir jika dilakukan dengan benar

Masalah Nilai Terlalu Kecil pada FP16

FP16 memiliki rentang yang sempit. Nilai gradien yang kecil dapat menjadi nol karena terlalu kecil, sehingga pembelajaran berhenti tanpa disadari. Inilah tantangan utama yang harus diatasi presisi campuran dan alasan kita tidak dapat begitu saja mengubah semuanya menjadi FP16.

torch.cuda.amp

Automatic Mixed Precision (AMP) dari PyTorch menangani detailnya dengan dua alat: autocast memilih presisi untuk setiap operasi, sedangkan GradScaler mencegah gradien menjadi terlalu kecil.

import torch
from torch.cuda.amp import autocast, GradScaler

Konteks autocast

Bungkus lintasan maju dengan autocast(). Di dalamnya, PyTorch secara otomatis menjalankan setiap operasi dengan presisi yang paling aman: perkalian matriks dalam FP16, sedangkan reduksi seperti softmax dan kerugian dalam FP32.

with autocast():
    output = model(x)
    loss = criterion(output, y)

Memperkenalkan GradScaler

GradScaler mengatasi gradien yang terlalu kecil dengan mengalikan kerugian menggunakan faktor skala besar sebelum propagasi mundur. Hal ini menggeser gradien kecil ke rentang yang dapat direpresentasikan oleh FP16; skala tersebut dihapus sebelum langkah pengoptimal.

scaler = GradScaler()

Menskalakan Kerugian

scaler.scale(loss).backward() memperbesar skala kerugian, lalu menjalankan propagasi mundur. Gradien yang dihasilkan juga diskalakan, sehingga nilai kecil tidak menghilang.

scaler.scale(loss).backward()

scaler.step

scaler.step(optimizer) terlebih dahulu mengembalikan skala gradien ke besarannya yang sebenarnya, lalu memanggil optimizer.step(), tetapi hanya jika tidak ada nilai tak hingga atau NaNs. Jika gradien meluap, langkah tersebut dilewati.

scaler.step(optimizer)

scaler.update

scaler.update() menyesuaikan faktor skala untuk iterasi berikutnya: faktor tersebut diperbesar ketika langkah berhasil dan diperkecil setelah terjadi luapan. Penskalaan adaptif ini menjaga kestabilan pelatihan secara otomatis.

scaler.update()

Perulangan AMP Lengkap

Dengan menggabungkan semua bagian, Anda mendapatkan satu langkah pelatihan dengan presisi campuran yang lengkap.

scaler = GradScaler()
for x, y in loader:
    x, y = x.cuda(), y.cuda()
    optimizer.zero_grad()
    with autocast():
        out = model(x)
        loss = criterion(out, y)
    scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()

Tips Praktis

Ingat hal-hal berikut:

  • Hanya panggil backward() pada kerugian yang telah diskalakan
  • autocast hanya membungkus lintasan maju, bukan propagasi mundur atau langkah pengoptimal
  • AMP sangat bermanfaat pada GPU dengan inti tensor; peningkatannya lebih kecil pada perangkat keras lama

Pemeriksaan Singkat

Uji pengetahuan Anda tentang AMP.

Ringkasan

Anda telah mempelajari pelatihan dengan presisi campuran menggunakan AMP:

  • autocast() memilih FP16 atau FP32 untuk setiap operasi dalam lintasan maju
  • GradScaler menskalakan kerugian untuk mencegah gradien menjadi terlalu kecil
  • Siklusnya adalah scaler.scale(loss).backward(), scaler.step(optimizer), scaler.update()
  • Hasilnya: penghematan memori sekitar 2x dan pelatihan yang lebih cepat

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pelatihan Presisi Campuran dengan AMP” gratis?

Ya — teks lengkap “Pelatihan Presisi Campuran dengan AMP” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pelatihan Presisi Campuran dengan AMP”?

torch.cuda.amp.autocast(), GradScaler, FP16 vs BF16, penghematan memori, peningkatan kecepatan. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Learn AI with Python?

Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pelatihan Presisi Campuran dengan AMP” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?

Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pelatihan Multi-GPU dengan DataParallel
  2. DistributedDataParallel (DDP)
  3. Pelatihan Presisi Campuran dengan AMP
  4. Pelatihan Efisien dengan Hugging Face Accelerate
← Kembali ke Learn AI with Python