Diffusers documentation
Dağıtık çıkarım
Başlayın
Çıkarım
Diffusion pipeline'ları kullanma
Adaptörler ve kişiselleştirme
Optimize et ve ölçeklendir
Temel performans
Hız ve bellek
Dağıtık çıkarım
Kantizasyon
Donanıma özgü hızlandırma
Topluluk yöntemleri
Modüler Diffusers
Eğit ve ince ayar yap
Kaynaklar
Katkıda bulun
API
Dağıtık çıkarım
Dağıtık çıkarım, iş yükünü birden fazla GPU arasında paylaştırır. Daha büyük modellerin belleğe sığdırılması ve aynı anda daha fazla istek işlenmesi için faydalıdır.
Diffusers dört stratejiyi destekler. Her birinin kendi kılavuzu vardır ve bu sayfa size birini seçmede yardımcı olur.
Strateji seçimi
Her strateji farklı bir sorunu çözdüğü için, sizi sınırlayan kaynağa göre birini seçin.
| Strateji | Bölümler | Azaltır | Tek bir istem için gecikme | En iyi olduğu durum |
|---|---|---|---|---|
| Veri paralelliği | kopyalar arasında istemler | hiçbir şey, çünkü her GPU tam bir kopya tutar | değişmedi | model zaten sığıyor ve birçok isteminiz var |
| device_map | cihazlar arası bileşenler | ağırlık belleği | biraz daha kötü | model sığmıyor ve bağlantı yavaş |
| Bağlam paralelliği | giriş dizisi | aktivasyon belleği | düşük | diziler uzun, yüksek çözünürlüklü görüntüler veya videolar gibi |
| Tensor paralelliği | ağırlık matrisleri | ağırlık belleği | düşük | bir bileşenin ağırlıkları sığmıyor ve bağlantı hızlı |
Bazı pratik yönergeler:
- Model zaten sığmıyorsa ve birçok isteminiz varsa veri paralelliğini kullanın. Bu yöntem, modele dokunmadan GPU sayısıyla birlikte verimliliği ölçekler ve tek istem gecikmesini etkilemez. Bunu Accelerate veya PyTorch Distributed ile yapılandırın.
- Tek bir bileşenin ağırlıkları sığmıyorsa, hem belleği hem de gecikmeyi düşürdüğü için önce tensör paralelliğini deneyin. Tensör paralelliği her blok sınırında iletişim kurar, bu nedenle NVLink gibi hızlı bir bağlantıya ihtiyaç duyar. PCIe üzerinde, katman başına trafik, sağladığı hesaplama tasarrufundan daha ağır basabilir ve
device_mapdaha iyi bir seçim haline gelir.device_map, bileşenlerin tek başına uygun olmasına rağmen toplu olarak çok büyük olduğu durumu da ele alır. - Eğer sorun ağırlıklar değilse, aktivasyonlarsa, bağlam paralelliğini kullanın. Bu, büyük görüntüler ve çok sayıda kare içeren videolar gibi uzun dizilerde işe yarar. Context parallelism kılavuzundaki kıyaslamalardan bir arka uç seçin.
- Hem ağırlıklar hem de dizi çok büyükse, Diffusers aynı modele hem tensör hem de bağlam paralelliğini uygulayamaz.
ParallelConfig, her iki yapılandırmayı da iletirseniz bir hata üretir veenable_parallelism, zaten paralelleştirilmiş bir modelde ikinci kez çağrılamaz.
xDiT ve ParaAttention topluluk entegrasyonları, kendi bağlam paralelliği uygulamalarını sunar.
Update on GitHub