Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Cara Kerja Paralelisme Tensor
Paralelisme tensor terjadi pada tingkatnn.Modules; itu mempartisi modul tertentu dalam model melintasi peringkat paralel tensor. Ini adalah tambahan untuk partisi yang ada dari set modul yang digunakan dalam paralelisme pipa.
Ketika sebuah modul dipartisi melalui paralelisme tensor, propagasi maju dan mundurnya didistribusikan. Perpustakaan menangani komunikasi yang diperlukan di seluruh perangkat untuk mengimplementasikan eksekusi terdistribusi modul-modul ini. Modul dipartisi di beberapa peringkat paralel data. Berlawanan dengan distribusi beban kerja tradisional, setiap peringkat paralel data tidak memiliki replika model lengkap ketika paralelisme tensor pustaka digunakan. Sebaliknya, setiap peringkat paralel data mungkin hanya memiliki partisi modul terdistribusi, selain keseluruhan modul yang tidak didistribusikan.
Contoh: Per timbangkan paralelisme tensor di seluruh peringkat paralel data, di mana tingkat paralelisme data adalah 4 dan derajat paralelisme tensor adalah 2. Asumsikan bahwa Anda memiliki grup paralel data yang memegang pohon modul berikut, setelah mempartisi kumpulan modul.
A ├── B | ├── E | ├── F ├── C └── D ├── G └── H
Asumsikan bahwa paralelisme tensor didukung untuk modul B, G, dan H. Salah satu hasil yang mungkin dari partisi paralel tensor model ini adalah:
dp_rank 0 (tensor parallel rank 0): A, B:0, C, D, G:0, H dp_rank 1 (tensor parallel rank 1): A, B:1, C, D, G:1, H dp_rank 2 (tensor parallel rank 0): A, B:0, C, D, G:0, H dp_rank 3 (tensor parallel rank 1): A, B:1, C, D, G:1, H
Setiap baris mewakili himpunan modul yang disimpan di dp_rank dalamnya, dan notasi X:y mewakili fraksi y ke-2 dari modulX. Perhatikan hal-hal berikut:
-
Partisi terjadi di seluruh subset peringkat paralel data, yang kita sebut
TP_GROUP, bukan keseluruhanDP_GROUP, sehingga partisi model yang tepat direplikasi didp_rank0 dandp_rank2, dan serupa didp_rank1 dan 3.dp_rank -
Modul
EdanFtidak lagi menjadi bagian dari model, karena modul induknyaBdipartisi, dan eksekusi apa pun yang biasanya merupakan bagian dariEdanFberlangsung di dalam modul (dipartisi)B. -
Meskipun
Hdidukung untuk paralelisme tensor, dalam contoh ini tidak dipartisi, yang menyoroti bahwa apakah akan mempartisi modul tergantung pada input pengguna. Fakta bahwa modul didukung untuk paralelisme tensor tidak selalu berarti itu dipartisi.
Bagaimana perpustakaan mengadaptasi paralelisme tensor ke modul NN.linear PyTorch
Ketika paralelisme tensor dilakukan di atas peringkat paralel data, subset dari parameter, gradien, dan status pengoptimal dipartisi di seluruh perangkat paralel tensor untuk modul yang dipartisi. Untuk modul lainnya, perangkat paralel tensor beroperasi secara paralel data reguler. Untuk mengeksekusi modul yang dipartisi, perangkat pertama-tama mengumpulkan bagian yang diperlukan dari semua sampel data di seluruh perangkat peer dalam grup paralelisme tensor yang sama. Perangkat kemudian menjalankan fraksi lokal modul pada semua sampel data ini, diikuti oleh putaran sinkronisasi lain yang menggabungkan bagian-bagian output untuk setiap sampel data dan mengembalikan sampel data gabungan ke GPU dari mana sampel data pertama kali berasal. Gambar berikut menunjukkan contoh proses ini melalui nn.Linear modul yang dipartisi.
Gambar pertama menunjukkan model kecil dengan nn.Linear modul besar dengan paralelisme data di atas dua peringkat paralelisme tensor. nn.LinearModul direplikasi ke dalam dua peringkat paralel.
Gambar kedua menunjukkan paralelisme tensor diterapkan pada model yang lebih besar saat memisahkan modul. nn.Linear Masing-masing tp_rank memegang setengah modul linier, dan keseluruhan operasi lainnya. Sementara modul linier berjalan, masing-masing tp_rank mengumpulkan setengah yang relevan dari semua sampel data dan melewatkannya melalui setengah nn.Linear modul mereka. Hasilnya perlu direduksi-tersebar (dengan penjumlahan sebagai operasi reduksi) sehingga setiap peringkat memiliki output linier akhir untuk sampel data mereka sendiri. Sisa model berjalan dengan cara paralel data tipikal.