Division by zero in rescale_noise_cfg can produce NaNs during inference

Ouverte Adaptée aux débutants
#13,425 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Akash504-ai y travaille déjà.

Depuis le 6/4/2026.

  • #13426 par @Akash504-ai — ouverte
  • #13704 par @jbbqqf — ouverte
  • #13763 par @arieleli01212 — fermée sans fusion
  • #13989 par @Whning0513 — fermée sans fusion
  • #14334 par @feiiiiii5 — fermée sans fusion

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
68/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
python, pytorch

Piste de recherche

Localisez le point d’entrée rescale_noise_cfg dans le code source de Diffusers et exécutez la reproduction PyTorch fournie avec un noise_cfg de variance nulle. Suivez le traitement existant de std_cfg et ajoutez une couverture pour ce cas limite. C’est terminé lorsque le chemin de variance nulle ne produit plus de valeurs NaN ou infinies pendant l’inférence.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug
Describe the bug

Bug: Division by zero in rescale_noise_cfg can produce NaNs

Description

The function rescale_noise_cfg performs a division by std_cfg without any numerical stability guard:

noise_pred_rescaled = noise_cfg * (std_text / std_cfg)

If std_cfg becomes zero, this leads to NaN or inf values, which can silently corrupt the diffusion process and produce invalid outputs.

This can happen in edge cases where noise_cfg has zero variance.

Reproduction
import torch

noise_cfg = torch.zeros(1, 4, 64, 64)  # std = 0
noise_pred_text = torch.randn_like(noise_cfg)

std_text = noise_pred_text.std(dim=list(range(1, noise_pred_text.ndim)), keepdim=True)
std_cfg = noise_cfg.std(dim=list(range(1, noise_cfg.ndim)), keepdim=True)

result = noise_cfg * (std_text / std_cfg)
print(result)
Logs

System Info
  • Diffusers: main
  • PyTorch: any
  • OS: any
Who can help?

No response

Langage dominant
Python
Étoiles
34.8k
Forks
7.4k
Merge moyen
2 j 12 h
PR mergées (30 j)
55

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de huggingface/diffusers

Toutes les issues de huggingface/diffusers

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.