PANDUAN Teknis

ZeRO dan Pengoptimal Sharded

ZeRO (Zero Redundancy Optimizer) menghilangkan duplikasi memori paralelisme data yang boros dengan membagi status pengoptimal, gradien, dan bobot di seluruh GPU.

2 min readTerakhir diperbarui

Ikhtisar

It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.

Menyelam Lebih Dalam

Dalam paralelisme data biasa, setiap GPU menyimpan salinan lengkap status pengoptimal, gradien, dan parameter yang berlebihan, yang sangat boros, terutama bagi Adam, yang status pengoptimalnya bisa beberapa kali lebih besar dari model itu sendiri. ZeRO, yang diperkenalkan oleh Microsoft di DeepSpeed, menghilangkan redundansi ini dengan mempartisi tensor ini di seluruh GPU sehingga setiap perangkat hanya memiliki satu irisan. ZeRO hadir dalam tiga tahap progresif: Status pengoptimal pecahan Tahap 1, Tahap 2 menambahkan pecahan gradien, dan Tahap 3 membagi parameter itu sendiri. Jika diperlukan, GPU mengumpulkan bagian yang hilang melalui komunikasi, menghitung, lalu melepaskannya. Hasilnya adalah memori per GPU yang jauh lebih rendah, memungkinkan pelatihan miliaran hingga triliun parameter, sekaligus menjaga model pemrograman paralelisme data yang mudah.

Wawasan Teknis

ZeRO memperdagangkan komunikasi ekstra untuk penghematan memori. Di Tahap 3, sebelum suatu lapisan diteruskan, semua pengumpul mengumpulkan parameter lengkap lapisan tersebut ke setiap GPU; setelah itu irisan yang tidak dimiliki dibuang untuk mendapatkan kembali memori. Gradien dikurangi-sebar sehingga setiap GPU hanya menyimpan potongan gradien yang cocok dengan parameter yang dimilikinya. FSDP (Fully Sharded Data Parallel) PyTorch mengimplementasikan ide yang sama secara asli, membungkus modul menjadi shard dan resharding dengan cepat.

Dampak Strategis

Cost and budget

Keputusan arsitektur mendorong kinerja dan biaya pengoperasian selama bertahun-tahun.

Clearer decisions

Pendidikan teknis membantu tim memilih tumpukan yang tepat, bukan hanya yang terbaru.

Quality control

Pilihan teknik yang lebih baik mengurangi insiden keandalan dalam produksi.

Masa Depan ZeRO dan Pengoptimal Sharded

Sharding menjadi standar untuk pelatihan skala besar dan bukan pilihan yang eksotik. Harapkan integrasi yang lebih dalam dengan offloading (mendorong irisan ke CPU atau NVMe melalui ZeRO-Infinity), tumpang tindih all-gather dan pengurangan-penyebaran yang lebih baik dengan komputasi untuk menyembunyikan biayanya, dan kombinasi dengan tensor dan paralelisme pipeline. Seiring dengan terus berkembangnya model, pengoptimal sharding yang hemat memori sangat penting untuk menyesuaikannya dengan anggaran perangkat keras yang realistis.

Implementasi Dunia Nyata

Menggunakan DeepSpeed ​​ZeRO Tahap 2 untuk menyempurnakan model bahasa multi-miliar parameter yang jika tidak akan melebihi memori GPU.

Pelatihan dengan PyTorch FSDP, yang membagi parameter, gradien, dan status pengoptimal di seluruh GPU dan mengumpulkannya per lapisan sesuai permintaan.

Menerapkan ZeRO-Offload untuk mendorong status pengoptimal ke memori CPU, memungkinkan satu GPU melatih model berkali-kali lebih besar daripada VRAM-nya.

Menskalakan model triliun parameter dengan ZeRO-Infinity dengan mengalirkan pecahan parameter dari penyimpanan NVMe saat memori GPU dan CPU habis.

Risiko & Pagar Pembatas

Mengoptimalkan satu tolok ukur dapat menyembunyikan kelemahan sistem yang lebih luas.

Biaya infrastruktur dan pemeliharaan sering kali diremehkan.

Kesenjangan keamanan dan kemampuan observasi dapat tumbuh seiring dengan semakin kompleksnya sistem.

Peta Jalan Implementasi

1

Tentukan target latensi, kualitas, dan biaya sebelum penerapan.

2

Tolok ukur dalam kondisi beban dan data yang realistis.

3

Pemantauan instrumen untuk kesalahan, penyimpangan, dan dampak pengguna.

4

Siapkan jalur rollback dan respons insiden sebelum melakukan penskalaan.

Terus Menjelajah

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the ZeRO and Sharded Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Mulai kuis

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Next guide

Lookahead dan Lion Optimizer

Pertanyaan yang sering diajukan

What is ZeRO and Sharded Optimizers?

ZeRO (Zero Redundancy Optimizer) menghilangkan duplikasi memori paralelisme data yang boros dengan membagi status pengoptimal, gradien, dan bobot di seluruh GPU. Ini memungkinkan Anda melatih model berukuran besar dengan kesederhanaan paralelisme data tetapi hanya menggunakan sedikit memori per GPU.

Redundansi apa yang dihilangkan ZeRO dibandingkan dengan paralelisme data biasa?

Paralelisme data standar menyimpan salinan lengkap status pengoptimal, gradien, dan bobot di setiap GPU; ZeRO memecahnya sehingga setiap GPU hanya menampung sepotong.

Mengapa status pengoptimal sering kali merupakan memori terbesar bagi Adam?

Adam mempertahankan perkiraan berjalan seperti momen pertama dan kedua per parameter, yang dikombinasikan dengan bobot master fp32 dapat membuat ukuran model menjadi kerdil.

Apa yang dimiliki pecahan ZeRO Tahap 3 yang tidak dimiliki Tahap 1 dan 2?

Status pengoptimal shard Tahap 1, Tahap 2 menambahkan gradien, dan Tahap 3 melangkah lebih jauh dengan melakukan sharding parameter model di seluruh GPU juga.

Di ZeRO Tahap 3, bagaimana GPU mendapatkan parameter lengkap yang dibutuhkan untuk forward pass suatu lapisan?

Sebelum menghitung suatu lapisan, seluruh pengumpul mengumpulkan parameter lengkapnya pada setiap GPU; setelah selesai, irisan yang tidak dimiliki dibebaskan untuk mendapatkan kembali memori.

Fitur PyTorch manakah yang secara asli mengimplementasikan sharding gaya ZeRO?

Parameter pecahan, gradien, dan status pengoptimal PyTorch Fully Sharded Data Parallel (FSDP), mengumpulkan dan menyusun ulang semuanya dengan cepat, mencerminkan ZeRO.