Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /pt /training /distributed_inference.md
mishig's picture
|
download
raw
2.97 kB
# 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.