Diffusers documentation
Inferensi terdistribusi
Mulai
Inferensi
Menggunakan pipeline difusi
Adaptor dan personalisasi
Optimalkan dan skalakan
Performa dasar
Kecepatan dan memori
Inferensi terdistribusi
Kuantisasi
Akselerasi spesifik perangkat keras
Metode komunitas
Modular Diffusers
Pelatihan dan penyesuaian halus
Sumber daya
Kontribusi
API
Inferensi terdistribusi
Inferensi terdistribusi membagi beban kerja di antara beberapa GPU. Hal ini berguna untuk memuat model yang lebih besar ke dalam memori dan untuk memproses lebih banyak prompt sekaligus.
Diffusers mendukung empat strategi. Masing-masing memiliki panduannya sendiri, dan halaman ini membantu Anda memilih salah satunya.
Memilih strategi
Setiap strategi menyelesaikan masalah yang berbeda, jadi pilih salah satu berdasarkan sumber daya yang menjadi batasan Anda.
| Strategi | Pembagian | Mengurangi | Latensi untuk satu prompt | Paling baik saat |
|---|---|---|---|---|
| Paralelisme data | prompts di antara replika | tidak ada, karena setiap GPU menyimpan salinan lengkap | unchanged | model sudah muat dan Anda memiliki banyak prompt |
| device_map | komponen di antara perangkat | memori bobot | sedikit lebih buruk | model tidak muat dan interkoneksi lambat |
| Paralelisme konteks | urutan input | memori aktivasi | lower | urutan panjang, seperti gambar resolusi tinggi atau video |
| Paralelisme tensor | matriks bobot | memori bobot | lower | satu komponen bobot tidak muat dan interkoneksi cepat |
Beberapa panduan praktis:
- Jika model sudah muat dan Anda memiliki banyak prompt, gunakan data parallelism. Metode ini meningkatkan throughput seiring bertambahnya jumlah GPU tanpa mengubah model, dan tidak memengaruhi latensi untuk prompt tunggal. Atur dengan Accelerate atau PyTorch Distributed.
- Jika bobot satu komponen tidak muat, coba tensor parallelism terlebih dahulu, karena metode ini menurunkan baik memori maupun latensi. Tensor parallelism berkomunikasi di setiap batas blok, sehingga membutuhkan interkoneksi cepat seperti NVLink. Di PCIe, lalu lintas per lapisan dapat melebihi komputasi yang dihemat, dan
device_mapmenjadi pilihan yang lebih baik.device_mapjuga menangani kasus di mana komponen-komponen secara individual tidak masalah tetapi secara kolektif terlalu besar. - Jika aktivasi, bukan bobot, yang menjadi masalah, gunakan paralelisme konteks. Ini membantu untuk urutan panjang, seperti gambar besar dan video dengan banyak frame. Pilih backend dari benchmark di panduan Paralelisme konteks.
- Jika bobot dan urutan sama-sama terlalu besar, Diffusers tidak dapat menerapkan paralelisme tensor dan paralelisme konteks pada model yang sama.
ParallelConfigakan memicu error jika Anda meneruskan kedua konfigurasi tersebut, danenable_parallelismtidak dapat dipanggil untuk kedua kalinya pada model yang sudah diparalelkan.
Integrasi komunitas xDiT dan ParaAttention menawarkan implementasi parallelism konteks mereka sendiri.
Update on GitHub