Deep Learning Academy · Pelajaran

Asas DistributedDataParallel

Laluan standard untuk latihan berbilang GPU.

Pelajaran 2 daripada 413 langkah

Asas DistributedDataParallel ialah pelajaran Deep Learning Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Deep Learning Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Deep Learning Academy merangkumi sejumlah 4 pelajaran.

Kenali DDP

DistributedDataParallel, atau DDP, ialah alat utama PyTorch untuk latihan berbilang GPU. Ia menjalankan satu proses bagi setiap GPU dan memastikan semua salinan model disegerakkan.

Satu Proses bagi Setiap GPU

Berbeza daripada DataParallel yang lebih lama, DDP melancarkan satu proses berasingan bagi setiap GPU. Ini mengelakkan GIL Python dan diskalakan dengan jauh lebih kemas.

Kedudukan dan Saiz Dunia

Setiap proses mendapat kedudukan (ID-nya) dan berkongsi saiz dunia (jumlah proses). Kedudukan 0 biasanya ialah proses yang mencatat dan menyimpan.

import torch.distributed as dist
rank = dist.get_rank()
world = dist.get_world_size()

Mulakan Kumpulan Proses

Sebelum sebarang komunikasi, panggil init_process_group. Bahagian belakang nccl ialah pilihan pantas untuk GPU.

import torch.distributed as dist
dist.init_process_group(backend="nccl")

Tetapkan Setiap Proses kepada GPU

Gunakan kedudukan setempat untuk menetapkan peranti supaya setiap proses memiliki tepat satu GPU. Ini menghalang kerja daripada bertumpu pada satu kad sahaja.

import torch
torch.cuda.set_device(local_rank)
model = model.to(local_rank)

Bungkus Model Anda

Helahnya ialah satu baris: bungkus model anda dalam DDP. Selepas itu, gradien disegerakkan secara automatik semasa laluan backward.

from torch.nn.parallel import DistributedDataParallel as DDP
model = DDP(model, device_ids=[local_rank])

Gradien Disegerakkan Secara Automatik

Semasa backward(), DDP melakukan all-reduce untuk memuratakan gradien merentas GPU. Anda menulis kod latihan biasa dan semuanya kekal disegerakkan. ✨

Gunakan DistributedSampler

Supaya setiap GPU melihat data yang berbeza, berikan DistributedSampler kepada DataLoader anda. Ia memberikan setiap proses bahagian set data yang tidak bertindih.

from torch.utils.data.distributed import DistributedSampler
sampler = DistributedSampler(dataset)

Susun Semula Setiap Epoch

Panggil sampler.set_epoch(epoch) pada permulaan setiap epoch. Tanpanya, setiap GPU menyusun semula data dengan cara yang sama dan anda kehilangan pengacakan sebenar.

for epoch in range(epochs):
    sampler.set_epoch(epoch)
    train_one_epoch()

Simpan Hanya pada Kedudukan 0

Semua salinan adalah serupa, jadi buat titik semak hanya daripada kedudukan 0. Menyimpan daripada setiap proses hanya menulis fail yang sama berkali-kali.

if rank == 0:
    torch.save(model.module.state_dict(), "ckpt.pt")

Bersihkan pada Akhir

Apabila latihan selesai, panggil destroy_process_group untuk melepaskan kumpulan dengan kemas dan mengelakkan proses tergantung.

import torch.distributed as dist
dist.destroy_process_group()

Semakan Pantas

Fikirkan cara DDP memastikan salinan kekal disegerakkan.

Ringkasan

Anda telah menyediakan DDP: memulakan kumpulan proses, membalut model, membekalkannya dengan DistributedSampler dan menyimpan daripada rank 0. Gradien disegerakkan secara automatik.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Asas DistributedDataParallel” percuma?

Ya — teks penuh “Asas DistributedDataParallel” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Deep Learning Academy, tingkat taraf kepada CoddyKit PRO. Kursus Deep Learning Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Asas DistributedDataParallel”?

Laluan standard untuk latihan berbilang GPU. Anda berlatih Deep Learning Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Deep Learning Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Deep Learning Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Asas DistributedDataParallel” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Deep Learning Academy ini?

Ya. Setiap pelajaran Deep Learning Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Keselarian Data vs Model
  2. Asas DistributedDataParallel
  3. Norm Kelompok Segerak dan Keadaan Terpecah
  4. Lancarkan Tugas dengan torchrun
← Kembali ke Deep Learning Academy