View a markdown version of this page

Cara Kerja Paralelisme Tensor - Amazon SageMaker AI

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:

  1. Partisi terjadi di seluruh subset peringkat paralel data, yang kita sebutTP_GROUP, bukan keseluruhanDP_GROUP, sehingga partisi model yang tepat direplikasi di dp_rank 0 dan dp_rank 2, dan serupa di dp_rank 1 dan 3. dp_rank

  2. Modul E dan F tidak lagi menjadi bagian dari model, karena modul induknya B dipartisi, dan eksekusi apa pun yang biasanya merupakan bagian dari E dan F berlangsung di dalam modul (dipartisi)B.

  3. Meskipun H didukung 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.

Dua angka menunjukkan dua konsep paralel tensor.

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.