MiniMax-H3 video decode only enables fp16 autocast on CUDA, so the block silently runs in fp32 on other accelerators
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 1/5
- Temps estimé
- Moins d'une heure
- Accessibilité débutants
- 86/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Domaine
- machine-learning
Piste de recherche
Commencez dans src/diffusers/modular_pipelines/minimax_h3/decoders.py, au niveau de MiniMaxH3VideoDecodeStep.call, et examinez la condition d’autocast autour du décodage VAE. Vérifiez que les accélérateurs autres que CPU utilisent l’autocast en float16, que CPU reste désactivé et que le comportement de CUDA reste inchangé ; la reproduction du dtype de l’issue permet de vérifier le chemin spécifique au périphérique.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
MiniMaxH3VideoDecodeStep.__call__ (src/diffusers/modular_pipelines/minimax_h3/decoders.py, line ~187) wraps the VAE decode in an fp16 autocast whose gate is CUDA-only:
with torch.autocast(device_type=device.type, dtype=torch.float16, enabled=device.type == "cuda"):
video = components.vae.decode(latents, return_dict=False)[0]
The block's own description states the intent - "the decode itself runs under float16 autocast even though the VAE weights are float32" - but with enabled=device.type == "cuda" that is only true on CUDA. On every other accelerator (Ascend NPU, Intel XPU, Apple MPS) autocast is silently disabled, so the same workflow decodes with the VAE's fp32 weights: slower, and numerically on a different path than the documented CUDA behaviour.
Suggested change - gate on "not CPU" instead of "CUDA only":
enabled=device.type != "cpu",
CPU keeps the current behaviour (autocast disabled).
Reproduction
On Ascend 910B2 NPU (torch 2.15.0.dev20260917+cpu + torch_npu), the enabled flag is the only thing keeping the NPU on the fp32 path:
import torch
x = torch.randn(8, 8, device="npu", dtype=torch.float32)
with torch.autocast(device_type="npu", dtype=torch.float16, enabled=True):
print((x @ x).dtype) # torch.float16
with torch.autocast(device_type="npu", dtype=torch.float16, enabled=False):
print((x @ x).dtype) # torch.float32
Not measured
End-to-end NPU decode speed-up of the change is not measured here - no A/B benchmark of the decode block was run, only the dtype-path check above. CUDA behaviour is unchanged by the linked PR.
Related but distinct
#14746 reports a trade-off in the opposite direction on CUDA (fp32 VAE weights + fp16 decode costs VRAM and forces a downcast). This issue is only about the device gate being CUDA-only; it does not argue about whether the fp16 autocast should exist at all.
System Info
- diffusers: main
- hardware: Ascend 910B2 NPU (torch 2.15.0.dev20260917+cpu +
torch_npu); applies to any non-CUDA accelerator.
- Langage dominant
- Python
- Étoiles
- 34.6k
- Forks
- 7.4k
- Merge moyen
- 4 j 8 h
- PR mergées (30 j)
- 50
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de huggingface/diffusers
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
huggingface/diffusers#14888 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
huggingface/diffusers#14881 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
huggingface/diffusers#14864 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
huggingface/diffusers#14837 ·
Les mainteneurs répondent en général sous 1 jour
-
bug needs-env-info pipelines
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
huggingface/diffusers#14794 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de huggingface/diffusers
Issues similaires
-
[Bug] @deck.gl/arcgis dist import resolves to unpublished @deck.gl/core source path (9.3.11, 9.4.0)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
workflow: a tick's dispatch counts as 'only this step', and no review self-grants a round unattendedOuverteworkflow
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
kristofdegrave/homeassistant-smart-charging#1505 ·
Les mainteneurs répondent en général sous 1 jour
-
New Submission: TropWATEROuvertemetadata submission
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
-
Wrongly named dashboard variableOuvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
canonical/content-cache-operator#163 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[submission]Ouvertesubmission
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
leanprover/lean-eval-submissions#1852 ·
Les mainteneurs répondent en général sous 1 jour