0Pricing
Learn AI with Python · Pelajaran

Pelatihan Multi-GPU dengan DataParallel

nn.DataParallel, penyeimbangan memori GPU, hambatan bandwidth, kapan DDP lebih baik.

Pelatihan Multi-GPU dengan DataParallel adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 1 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.

Mengapa Menggunakan Beberapa GPU

Model dan kumpulan data modern dapat melampaui kapasitas memori serta komputasi satu GPU. Menggunakan beberapa GPU memungkinkan Anda melatih model yang lebih besar atau memproses kumpulan data yang lebih besar dalam waktu nyata yang lebih singkat. PyTorch menyediakan beberapa cara untuk melakukannya; cara paling sederhana adalah DataParallel.

Paralelisme Data

Paralelisme data mereplikasi model pada setiap GPU dan membagi setiap kumpulan data masukan di antara GPU tersebut. Setiap GPU melakukan komputasi pada pecahannya, lalu gradien digabungkan agar semua replika tetap tersinkronisasi.

nn.DataParallel

nn.DataParallel membungkus model hanya dalam satu baris. Anda memberikan id GPU yang akan digunakan, lalu PyTorch menangani pembagian masukan dan pengumpulan keluaran secara otomatis.

import torch
import torch.nn as nn

model = MyModel().cuda()
model = nn.DataParallel(model, device_ids=[0, 1])

Pemisahan Kumpulan Data Otomatis

Selama lintasan maju, DataParallel membagi kumpulan data sepanjang dimensi 0 ke seluruh GPU yang tercantum. Kumpulan data berukuran 64 pada dua GPU menjadi dua subkumpulan data berukuran 32. Setiap GPU menjalankan model yang sama pada subkumpulan datanya secara paralel.

# batch of 64 with device_ids=[0, 1]
# GPU 0 processes samples 0..31
# GPU 1 processes samples 32..63

Perataan Gradien

Dalam lintasan mundur, gradien dari setiap GPU dikumpulkan ke perangkat utama dan dirata-ratakan (secara efektif dijumlahkan lalu diskalakan) agar pembaruan model mencerminkan seluruh kumpulan data. Replika kemudian disinkronkan kembali untuk langkah berikutnya.

Perulangan Pelatihan Normal

Bagian terbaiknya: perulangan pelatihan Anda hampir tidak berubah. Anda memindahkan data ke GPU utama dan memanggil model yang telah dibungkus seperti biasa; DataParallel menangani distribusinya secara tersembunyi.

for x, y in loader:
    x, y = x.cuda(), y.cuda()
    optimizer.zero_grad()
    out = model(x)            # auto-split across GPUs
    loss = criterion(out, y)
    loss.backward()           # gradients averaged
    optimizer.step()

Ketidakseimbangan GPU 0

DataParallel memiliki kelemahan yang sudah dikenal: GPU utama (biasanya GPU 0) mengumpulkan semua keluaran dan menghitung kerugian, sehingga memikul beban memori dan komputasi tambahan. Dengan banyak GPU, GPU 0 menjadi hambatan dan mungkin kehabisan memori sebelum GPU lainnya.

Satu Proses, Banyak Utas

DataParallel berjalan dalam satu proses Python dan menggunakan utas untuk mengendalikan GPU. Kunci interpreter global Python serta beban pembagian dan pengumpulan membatasi efisiensi penskalaan, terutama jika menggunakan lebih dari 2 hingga 4 GPU.

Mengapa DDP Lebih Disukai

Karena alasan tersebut, DistributedDataParallel (DDP) direkomendasikan untuk pekerjaan serius dengan banyak GPU. DDP menjalankan satu proses per GPU, menyinkronkan gradien dengan agregasi semua yang efisien, dan menghindari hambatan GPU 0, sehingga memberikan penskalaan yang hampir linear.

Kapan DataParallel Masih Memadai

DataParallel dapat digunakan untuk eksperimen cepat pada satu mesin dengan 2 GPU, karena kesederhanaannya dalam satu baris lebih menguntungkan daripada ketidakefisienannya. Untuk pelatihan pada banyak simpul atau dengan banyak GPU, gunakan DDP.

Kesalahan Umum: Penyimpanan

State dict model yang dibungkus memiliki awalan module.. Untuk menyimpan titik pemeriksaan yang bersih, gunakan model.module.state_dict() agar dapat dimuat dengan benar ke dalam model yang tidak dibungkus nantinya.

torch.save(model.module.state_dict(), "model.pt")

Pemeriksaan Singkat

Uji pengetahuan Anda tentang DataParallel.

Ringkasan

Anda telah mempelajari pelatihan dengan banyak GPU menggunakan DataParallel:

  • nn.DataParallel(model, device_ids=[0, 1]) mereplikasi model dan membagi kumpulan data
  • Gradien dirata-ratakan di seluruh GPU pada setiap langkah
  • Ketidakseimbangan GPU 0 dan desain satu proses membatasi penskalaan
  • Lebih baik gunakan DDP untuk banyak GPU atau pelatihan pada banyak simpul

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pelatihan Multi-GPU dengan DataParallel” gratis?

Ya — teks lengkap “Pelatihan Multi-GPU dengan DataParallel” 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 Multi-GPU dengan DataParallel”?

nn.DataParallel, penyeimbangan memori GPU, hambatan bandwidth, kapan DDP lebih baik. 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 1 dari 4.

Berapa lama pelajaran “Pelatihan Multi-GPU dengan DataParallel” 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