huggingface / huggingface/diffusers
Cache text encoder embeds in pipelines
- 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
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