PANDUAN Teknikal

ZeRO dan Sharded Optimizers

ZeRO (Zero Redundancy Optimizer) menghapuskan pertindihan memori yang membazir bagi keselarian data dengan mengosongkan keadaan pengoptimum, kecerunan dan pemberat merentas GPU.

2 min dibacaKemas kini terakhir

Gambaran keseluruhan

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

Menyelam dalam

Dalam keselarian data biasa, setiap GPU menyimpan salinan penuh berlebihan keadaan pengoptimuman, kecerunan dan parameter, yang sangat membazir, terutamanya untuk Adam, di mana keadaan pengoptimum boleh menjadi beberapa kali ganda saiz model itu sendiri. ZeRO, yang diperkenalkan oleh Microsoft dalam DeepSpeed, mengalih keluar redundansi ini dengan membahagikan tensor ini merentas GPU supaya setiap peranti hanya memiliki sekeping. ZeRO datang dalam tiga peringkat progresif: Tahap 1 keadaan pengoptimuman serpihan, Peringkat 2 menambah serpihan kecerunan dan Tahap 3 serpihan parameter itu sendiri. Seperti yang diperlukan, GPU mengumpulkan kepingan yang hilang melalui komunikasi, mengira, kemudian melepaskannya. Hasilnya ialah memori yang lebih rendah secara mendadak bagi setiap GPU, membolehkan latihan parameter berbilion hingga trilion, sambil mengekalkan model pengaturcaraan mudah selari data.

Wawasan Teknikal

ZeRO memperdagangkan komunikasi tambahan untuk penjimatan memori. Dalam Peringkat 3, sebelum hantaran ke hadapan lapisan, pengumpulan semua mengumpulkan parameter penuh lapisan itu pada setiap GPU; selepas itu kepingan bukan milik dibuang untuk menuntut semula ingatan. Kecerunan dikurangkan berserakan jadi setiap GPU hanya menyimpan kepingan kecerunan yang sepadan dengan parameter yang dimilikinya. FSDP PyTorch (Sejajar Data Berkongsi Penuh) melaksanakan idea yang sama secara asli, membalut modul kepada beling dan mengeras semula dengan cepat.

Kesan Strategik

Kos dan bajet

Keputusan seni bina memacu prestasi dan kos operasi selama bertahun-tahun.

Keputusan yang lebih jelas

Pendidikan teknikal membantu pasukan memilih timbunan yang betul, bukan hanya yang terbaharu.

Kawalan kualiti

Pilihan kejuruteraan yang lebih baik mengurangkan insiden kebolehpercayaan dalam pengeluaran.

Masa Depan ZeRO dan Sharded Optimizers

Sharding menjadi lalai untuk latihan berskala besar dan bukannya pilihan eksotik. Jangkakan penyepaduan yang lebih mendalam dengan pemunggahan (menolak kepingan ke CPU atau NVMe melalui ZeRO-Infinity), pertindihan yang lebih baik bagi semua-kumpul dan kurangkan-serakan dengan pengiraan untuk menyembunyikan kosnya, dan gabungan dengan selari tensor dan saluran paip. Memandangkan model terus berkembang, pengoptimum sharded yang cekap memori adalah penting untuk menyesuaikannya pada belanjawan perkakasan yang realistik.

Pelaksanaan Dunia Sebenar

Menggunakan DeepSpeed ​​ZeRO Stage 2 untuk memperhalusi model bahasa berbilion parameter yang sebaliknya akan melimpahi memori GPU.

Latihan dengan PyTorch FSDP, yang memecah parameter, kecerunan dan keadaan pengoptimum merentas GPU dan mengumpulkannya setiap lapisan atas permintaan.

Menggunakan ZeRO-Offload untuk menolak keadaan pengoptimum ke memori CPU, membenarkan satu GPU melatih model berkali-kali lebih besar daripada VRAMnya.

Menskalakan model trilion parameter dengan ZeRO-Infinity dengan menstrim serpihan parameter daripada storan NVMe apabila memori GPU dan CPU kehabisan.

Risiko & Pengawal

Mengoptimumkan satu penanda aras boleh menyembunyikan kelemahan sistem yang lebih luas.

Kos infrastruktur dan penyelenggaraan sering dipandang remeh.

Jurang keselamatan dan pemerhatian boleh berkembang apabila sistem menjadi lebih kompleks.

Hala Tuju Pelaksanaan

1

Tentukan sasaran kependaman, kualiti dan kos sebelum pelaksanaan.

2

Penanda aras di bawah beban realistik dan keadaan data.

3

Pemantauan instrumen untuk ralat, drift dan kesan pengguna.

4

Sediakan laluan balik dan tindak balas insiden sebelum penskalaan.

Teruskan Meneroka

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.

Mulakan kuiz

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

Panduan seterusnya

Lookahead dan Pengoptimum Singa

Soalan lazim

What is ZeRO and Sharded Optimizers?

ZeRO (Zero Redundancy Optimizer) menghapuskan pertindihan memori yang membazir bagi keselarian data dengan mengosongkan keadaan pengoptimum, kecerunan dan pemberat merentas GPU. Ia membolehkan anda melatih model besar dengan kesederhanaan keselarian data tetapi sebahagian kecil daripada memori per-GPU.

Apakah redundansi yang dihilangkan oleh ZeRO berbanding dengan keselarian data biasa?

Keselarian data standard menyimpan salinan penuh keadaan pengoptimum, kecerunan dan pemberat pada setiap GPU; Zero serpihan ini supaya setiap GPU hanya memegang sekeping.

Mengapakah keadaan pengoptimum selalunya menjadi hog memori terbesar dengan Adam?

Adam mengekalkan anggaran larian seperti detik pertama dan kedua bagi setiap parameter, yang digabungkan dengan pemberat induk fp32 boleh mengecilkan saiz model itu sendiri.

Apakah serpihan ZeRO Peringkat 3 yang tidak dilakukan oleh Peringkat 1 dan 2?

Keadaan pengoptimuman serpihan Peringkat 1, Peringkat 2 menambah kecerunan dan Peringkat 3 pergi lebih jauh dengan memecah parameter model merentas GPU juga.

Dalam Peringkat ZeRO 3, bagaimanakah GPU mendapat parameter penuh yang diperlukan untuk hantaran hadapan lapisan?

Sebelum mengira lapisan, kumpulan semua memasang parameter penuhnya pada setiap GPU; setelah selesai, kepingan bukan milik dibebaskan untuk menuntut semula ingatan.

Ciri PyTorch manakah yang melaksanakan sharding gaya ZeRO secara asli?

Parameter serpihan, kecerunan dan keadaan pengoptimum PyTorch's Fully Sharded Data Parallel (FSDP), mengumpulkan dan menyusun semulanya dengan cepat, mencerminkan ZeRO.