Apple Silicon (MPS): float64 timestep sinusoid fails — working 3-line fix
Los mantenedores suelen responder en 7 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 85/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- machine-learning
Línea de trabajo
La corrección está completamente escrita: reemplaza el cálculo de sinusoides en float64 en MOSSImageTransformer.forward dentro de pipeline_moss_image.py por la versión calculada en CPU que se muestra en el diff, y aplica el mismo cambio a las copias bajo transformer/ y scheduler/. Verifica primero en CPU que las salidas no cambien, y luego ejecuta la generación con el dispositivo MPS si está disponible. Listo cuando las tres copias estén parcheadas y la generación produzca imágenes correctas tanto en CPU como en MPS.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
On Apple Silicon (PyTorch MPS), generation fails on the first step:
TypeError: Cannot convert a MPS Tensor to float64 dtype as the MPS framework doesn't
support float64.
The cause is the float64 timestep sinusoid in MOSSImageTransformer.forward
(pipeline_moss_image.py). MPS has no float64.
Fix (verified)
Compute the sinusoid on the CPU in float64 (numerically identical to training) and move
the float32 result back to the device:
- freq = 10000 ** (-torch.arange(half, device=times.device, dtype=torch.float64) / half)
- phase = times.double()[:, None] * freq
- embedding = torch.cat((phase.cos(), phase.sin()), -1).float()
+ freq = 10000 ** (-torch.arange(half, device="cpu", dtype=torch.float64) / half)
+ phase = times.detach().cpu().double()[:, None] * freq
+ embedding = torch.cat((phase.cos(), phase.sin()), -1).float().to(times.device)
Important: use .cpu().double(), not .to("cpu", torch.float64). On MPS (torch 2.14.1),
torch.tensor([1000., 976., 24.], device="mps").to("cpu", torch.float64) silently returns
[0., 0., 0.]. Every timestep then becomes 0 and the output is pure noise, with no error.
Verification
- MacBook Pro, M5 Pro, 64 GB; macOS 27.0.1; torch 2.14.1; diffusers 0.42.0.dev0;
transformers 5.20.2;OpenMOSS-Team/MOSS-Image-SFT@f972bd4 - Same seed and prompt at 512×512, 10 steps, CFG 1: the MPS output matches the CPU
reference image (MPS 4 s vs CPU 701 s). - 1024×1024, 25 steps, CFG 2.5: 89 s on MPS, correct output.
- Every other component matched CPU on MPS in a layer-by-layer comparison: text
encoder, attention, RoPE, embedders, all 42 blocks.
Notes for Mac users
- Load with
torch_dtype={"default": torch.bfloat16, "vae": torch.float32}, then
pipe.to("mps"). causal_conv1dandflash-linear-attentionare CUDA-only, so the text encoder uses
transformers' reference kernels. That's slower but correct.torchvisionis required by the Qwen3-VL processor.
Please consider applying this in the repo (including the transformer/ and scheduler/
copies of the file) and listing Apple Silicon as supported.
- Lenguaje dominante
- Python
- Estrellas
- 2.2k
- Forks
- 114
- Merge medio
- 9 d 1 h
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OpenMOSS/MOSS-Image
-
Community project: hosted MOSS-Image studio with a visual JSON layout builder (no ComfyUI needed)Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 65/100
OpenMOSS/MOSS-Image#27 · 2 comentarios ·
Los mantenedores suelen responder en 7 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
OpenMOSS/MOSS-Image#10 · 1 comentario ·
Los mantenedores suelen responder en 7 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
OpenMOSS/MOSS-Image#33 ·
Los mantenedores suelen responder en 7 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 43/100
OpenMOSS/MOSS-Image#31 · 1 comentario ·
Los mantenedores suelen responder en 7 días
-
Why is it qwen3.5-9b-instruct?Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 45/100
OpenMOSS/MOSS-Image#28 · 1 comentario ·
Los mantenedores suelen responder en 7 días
Todos los issues de OpenMOSS/MOSS-Image
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
huggingface/smolagents#3106 ·
Los mantenedores suelen responder en 2 días
-
area:scripts area:tests bug priority:later
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Ikalus1988/MisakaNet#4358 ·
Los mantenedores suelen responder en 1 día
-
Discovered ports from service discovery are never propagated to modules in Module.load()Posiblemente ocupada @vishalmore90 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
OWASP/Nettacker#1828 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
aws-samples/sample-per-model-bedrock#708 ·
Los mantenedores suelen responder en 1 día
-
maintenance
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100