Buckets:

hf-doc-build/doc / diffusers /v0.43.0 /es /training /distributed_inference.md
mishig's picture
|
download
raw
2.96 kB

Inferencia distribuida

La inferencia distribuida divide la carga de trabajo entre varias GPU. Es útil para ajustar modelos más grandes en la memoria y para procesar más prompts a la vez.

Diffusers admite cuatro estrategias. Cada una tiene su propia guía y esta página te ayuda a elegir una.

Elegir una estrategia

Cada estrategia resuelve un problema diferente, por lo que elige una en función del recurso que te limite.

Estrategia Divisiones Reduce Latencia para un solo prompt Mejor cuando
Paralelismo de datos prompts entre réplicas nada, ya que cada GPU mantiene una copia completa sin cambios el modelo ya cabe y tienes muchos prompts
device_map componentes entre dispositivos memoria de pesos ligeramente peor el modelo no cabe y el interconector es lento
Paralelismo de contexto la secuencia de entrada memoria de activación lower las secuencias son largas, como imágenes de alta resolución o video
Paralelismo de tensores matrices de pesos memoria de pesos lower los pesos de un componente no caben y el interconector es rápido

Algunas orientaciones prácticas:

  • Si el modelo ya cabe y tienes muchos prompts, usa paralelismo de datos. Escala el throughput con el número de GPUs sin tocar el modelo y deja la latencia de un solo prompt intacta. Configúralo con Accelerate o PyTorch Distributed.
  • Si los pesos de un solo componente no caben, prueba primero con la paralelización de tensores, ya que reduce tanto la memoria como la latencia. La paralelización de tensores comunica en cada límite de bloque, por lo que necesita un interconexión rápida como NVLink. En PCIe, el tráfico por capa puede superar el cómputo que ahorra, y device_map se convierte en la mejor opción. device_map también maneja el caso en que los componentes son individualmente adecuados pero colectivamente demasiado grandes.
  • Si el problema son las activaciones y no los pesos, usa el paralelismo de contexto. Esto ayuda con secuencias largas, como imágenes grandes y videos con muchos fotogramas. Elige un backend a partir de los benchmarks de la guía de Context parallelism.
  • Si tanto los pesos como la secuencia son demasiado grandes, Diffusers no puede aplicar la paralelización de tensores y de contexto al mismo modelo. ParallelConfig genera un error si se pasan ambas configuraciones, y enable_parallelism no se puede llamar una segunda vez en un modelo que ya esté paralelizado.

Las integraciones de la comunidad xDiT y ParaAttention ofrecen sus propias implementaciones de paralelismo de contexto.

Xet Storage Details

Size:
2.96 kB
·
Xet hash:
b26115424b89e4cc9002cea0eb1e10c47b5561136f456196a9598f143eea8548

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.