Norm Batch Tersinkronisasi dan State Terpecah
Jaga agar statistik dan bobot tetap konsisten
Norm Batch Tersinkronisasi dan State Terpecah adalah pelajaran Deep Learning Academy 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 Deep Learning Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Deep Learning Academy mencakup 4 pelajaran total.
Masalah Batch Kecil
Normalisasi batch menghitung statistik dari batch lokal setiap GPU. Jika dibagi ke banyak GPU, batch per perangkat menjadi lebih kecil dan statistiknya menjadi bising.
Perkenalkan SyncBatchNorm
SyncBatchNorm mengatasi hal ini dengan menghitung rata-rata dan varians di semua GPU secara bersamaan, seolah-olah melihat seluruh batch global.
Konversi dalam Satu Panggilan
Anda tidak perlu menulis ulang lapisan secara manual. Satu pembantu mengonversi setiap BatchNorm dalam model Anda menjadi versi yang disinkronkan.
import torch.nn as nn
model = nn.SyncBatchNorm.convert_sync_batchnorm(model)Konversi Sebelum Membungkus
Urutannya penting: panggil konversi sebelum membungkus model dalam DDP, agar lapisan yang disinkronkan menjadi lapisan yang dikelola DDP.
model = nn.SyncBatchNorm.convert_sync_batchnorm(model)
model = DDP(model, device_ids=[local_rank])Ada Biaya Komunikasi
Menyinkronkan statistik berarti ada operasi all-reduce tambahan di setiap lapisan normalisasi batch. Gunakan ini ketika batch kecil per GPU menurunkan akurasi, bukan sebagai pengaturan bawaan.
Batas Memori
DDP biasa menyalin seluruh model, gradien, dan keadaan pengoptimal ke setiap GPU. Untuk model yang sangat besar, duplikasi ini dengan cepat menghabiskan memori.
Bagi Keadaan
Sharding membagi tensor tersebut ke seluruh GPU sehingga setiap perangkat hanya menyimpan sebagian. Jika digabungkan, semua GPU tetap menyimpan keseluruhan model.
Perkenalkan FSDP
FullyShardedDataParallel milik PyTorch membagi parameter, gradien, dan keadaan pengoptimal. Dengan ini, Anda dapat melatih model yang jauh lebih besar daripada kapasitas memori satu GPU.
from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
model = FSDP(model)Kumpulkan Tepat Saat Dibutuhkan
FSDP mengumpulkan bobot lengkap setiap lapisan hanya saat dibutuhkan untuk komputasi, lalu membebaskannya kembali. Dengan begitu, penggunaan memori puncak tetap rendah.
Tahapan ZeRO
Sharding memiliki beberapa tingkat yang disebut tahapan ZeRO: membagi keadaan pengoptimal, lalu gradien, kemudian parameter. Semakin banyak yang dibagi, semakin besar penghematan memori.
Pilih Alat yang Tepat
Jika model Anda muat di setiap GPU, DDP biasa adalah pilihan yang paling sederhana. Jika tidak, gunakan FSDP untuk membagi keadaan dan melanjutkan pelatihan.
Pemeriksaan Singkat
Tentukan tujuan sebenarnya dari setiap teknik.
Ringkasan
Anda telah mempelajari dua alat konsistensi: SyncBatchNorm menjaga statistik tetap global di seluruh GPU, sedangkan FSDP membagi keadaan agar model raksasa dapat dimuat. Gunakan masing-masing hanya saat diperlukan.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Norm Batch Tersinkronisasi dan State Terpecah” gratis?
Ya — teks lengkap “Norm Batch Tersinkronisasi dan State Terpecah” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Deep Learning Academy, upgrade ke CoddyKit PRO. Kursus Deep Learning Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Norm Batch Tersinkronisasi dan State Terpecah”?
Jaga agar statistik dan bobot tetap konsisten Kamu berlatih Deep Learning Academy 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 Deep Learning Academy?
Tidak diperlukan pengalaman sebelumnya. Deep Learning Academy 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 “Norm Batch Tersinkronisasi dan State Terpecah” 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 Deep Learning Academy ini?
Ya. Setiap pelajaran Deep Learning Academy 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
- Paralelisme Data vs Model
- Dasar-Dasar DistributedDataParallel
- Norm Batch Tersinkronisasi dan State Terpecah
- Luncurkan Pekerjaan dengan torchrun