huggingface / huggingface/diffusers

Cache text encoder embeds in pipelines

Abierto
#10,078 3 comentarios 0 reacciones 0 asignados Ver en GitHub
community-examples stale
Lenguaje dominante
Python
Estrellas
34.5k
Forks
7.3k
Merge medio
3 d 3 h
PR fusionados (30 d)
91

Descripción

**Is your feature request related to a problem? Please describe.**

When reusing a prompt text encoder embeds are recomputed, this can be time consuming for something like T5-XXL with offloading or on CPU.

Text encoder embeds are relatively small, so keeping them in memory is feasible.
```python
import torch

clip_l = torch.randn([1, 77, 768])
t5_xxl = torch.randn([1, 512, 4096])
>>> clip_l.numel() * clip_l.dtype.itemsize
236544
>>> t5_xxl.numel() * t5_xxl.dtype.itemsize
8388608
```

**Describe the solution you'd like.**

MVP would be reusing the last text encoder embeds if the prompt hasn't changed, this behaviour is supported in community UIs. Ideally, supports multiple prompts, potentially serializable.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza trazando el recorrido de codificación de texto del pipeline y cómo los prompts se convierten en embeddings del codificador de texto. Define el comportamiento de la caché para los prompts que no han cambiado antes de considerar múltiples prompts o la serialización. Se considera completado cuando el uso repetido del pipeline evita recalcular los embeddings que no han cambiado y conserva resultados correctos cuando los prompts cambian.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python, pytorch
Área
machine-learning, performance
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.