Buckets:
| # Inferência distribuída | |
| A inferência distribuída divide a carga de trabalho entre várias GPUs. É útil para caber modelos maiores na memória e para processar mais prompts de uma vez. | |
| Diffusers suporta quatro estratégias. Cada uma possui seu próprio guia, e esta página ajuda você a escolher uma. | |
| ## Escolhendo uma estratégia | |
| Cada estratégia resolve um problema diferente, portanto, escolha uma com base no recurso que limita você. | |
| | Estratégia | Divisões | Reduz | Latência para um prompt | Melhor quando | | |
| |---|---|---|---|---| | |
| | [Paralelismo de dados](../optimization/data_parallelism) | prompts entre réplicas | nada, já que cada GPU mantém uma cópia completa | invariável | o modelo já cabe e você tem muitos prompts | | |
| | [device_map](../optimization/device_map) | componentes entre dispositivos | memória de pesos | um pouco pior | o modelo não cabe e o interconector é lento | | |
| | [Paralelismo de contexto](../optimization/context_parallelism) | a sequência de entrada | memória de ativação | lower | as sequências são longas, como imagens de alta resolução ou vídeos | | |
| | [Paralelismo de tensor](../optimization/tensor_parallelism) | matrizes de pesos | memória de pesos | lower | os pesos de um componente não cabem e o interconector é rápido | | |
| Algumas orientações práticas: | |
| - Se o modelo já couber e você tiver muitos prompts, use paralelismo de dados. Ele escala o throughput com o número de GPUs sem alterar o modelo e mantém a latência de prompt único inalterada. Configure-o com [Accelerate](../optimization/data_parallelism#accelerate) ou [PyTorch Distributed](../optimization/data_parallelism#pytorch-distributed). | |
| - Se os pesos de um único componente não couberem, tente primeiro o paralelismo de tensor, pois ele reduz tanto a memória quanto a latência. O paralelismo de tensor se comunica em cada fronteira de bloco, portanto requer um interconector rápido, como NVLink. Em PCIe, o tráfego por camada pode superar o cálculo que ele economiza, e `device_map` se torna a melhor escolha. `device_map` também lida com o caso em que os componentes são individualmente adequados, mas coletivamente grandes demais. | |
| - Se o problema são as ativações, e não os pesos, use paralelismo de contexto. Isso ajuda com sequências longas, como imagens grandes e vídeos com muitos quadros. Escolha um backend a partir dos benchmarks no guia de [Context parallelism](../optimization/context_parallelism). | |
| - Se tanto os pesos quanto a sequência forem grandes demais, o Diffusers não consegue aplicar paralelismo de tensor e de contexto ao mesmo modelo. `ParallelConfig` gera um erro se você passar ambas as configurações, e `enable_parallelism` não pode ser chamado uma segunda vez em um modelo que já está paralelizado. | |
| As integrações da comunidade [xDiT](../optimization/xdit) e [ParaAttention](../optimization/para_attn) oferecem suas próprias implementações de paralelismo de contexto. | |
Xet Storage Details
- Size:
- 2.97 kB
- Xet hash:
- f89e2b4b6dc16da6c3966f20314b01fee3f8e118f25a05ef7aa3cd9587a23b95
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.