# 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](../optimization/data_parallelism) | 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](../optimization/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](../optimization/context_parallelism) | 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](../optimization/tensor_parallelism) | 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](../optimization/data_parallelism#accelerate) veya [PyTorch Distributed](../optimization/data_parallelism#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_map` daha 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](../optimization/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 ve `enable_parallelism`, zaten paralelleştirilmiş bir modelde ikinci kez çağrılamaz.

[xDiT](../optimization/xdit) ve [ParaAttention](../optimization/para_attn) topluluk entegrasyonları, kendi bağlam paralelliği uygulamalarını sunar.

