Buckets:

hf-doc-build/doc / diffusers /main /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 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 componentes entre dispositivos memória de pesos um pouco pior o modelo não cabe e o interconector é lento
Paralelismo de contexto 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 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 ou 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.
  • 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 e ParaAttention 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.