huggingface / huggingface/diffusers
`UNet2DConditionModel` : `qk_norm` setting in `config.json` is ignored
- Lingua principale
- Python
- Stelle
- 34.5k
- Fork
- 7.3k
- Merge medio
- 3g 3h
- PR unite (30g)
- 91
Descrizione
### Describe the bug
Adding eg `"qk_norm": "rms_norm"` to config.json for a `UNet2DConditionModel` has no effect.
This is because the value is not propagated by the `UNet2DContionalModel` initialization logic through to `Attention.__init__` in `src/diffusers/models/attention_processor.py`.
### Reproduction
Default behaviour with empty config dict:
```
from diffusers import UNet2DConditionModel
config_minimal = {}
model = UNet2DConditionModel.from_config(config_minimal)
print([n for n, _ in model.named_modules()
if 'attn1.norm_' in n])
# output: []
```
For supported models, QK norm modules show up as eg `... .attn1.norm_q` and `... .attn1.norm_k`. If we add `"qk_norm" : "rms_norm"` to the config then we should expect modules with these names to appear, but they don't:
```
config_minimal['qk_norm'] = 'rms_norm'
model = UNet2DConditionModel.from_config(config_minimal)
print([n for n, _ in model.named_modules()
if 'attn1.norm_' in n])
# expected output: ['down_blocks.0.attentions.0.transformer_blocks.0.attn1.norm_q', 'down_blocks.0.attentions.0.transformer_blocks.0.attn1.norm_k', ...]
# actual output: []
```
### System Info
diffusers main branch commit 0c71189abeaa8ab4b28dd7e5a309ac75c64968a2, macOS
### Who can help?
@DN6 @yiyixuxu @sayakpaul
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia dal percorso di inizializzazione di UNet2DConditionModel e traccia come qk_norm da config.json dovrebbe arrivare a Attention.__init__ in src/diffusers/models/attention_processor.py. Esegui nuovamente l’esempio from_config fornito e conferma che qk_norm="rms_norm" produca i moduli attn1.norm_q e attn1.norm_k invece di un elenco vuoto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- machine-learning
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 55/100