[torchlib] log2 and log10 lose float64 precision
Los mantenedores suelen responder en 4 días
@Syedmudassir1604 ya está trabajando en esto.
Desde el 2/11/2026.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- machine-learning
Línea de trabajo
Empieza con las implementaciones de torchlib de aten_log2 y aten_log10, que dividen entre un CastLike de la constante float32 Log(2.0) o Log(10.0). Ejecuta el reproductor del issue para ver la desviación de los valores exportados en float64 respecto a la salida de PyTorch. Se da por terminado cuando los valores exportados para n = 8 y n = 1024 coinciden con PyTorch en float64 y torch.floor(torch.log2(n)) da 3 y 10.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In a float64 model, torch.log2 and torch.log10 export with only about float32 accuracy, so whole-number results come out just below the whole number:
import torch
class Model(torch.nn.Module):
def forward(self, x):
return torch.log2(x), torch.log10(x)
x = torch.tensor([8.0, 1000.0], dtype=torch.float64)
onnx_program = torch.onnx.export(Model(), (x,), dynamo=True)
torch.set_printoptions(precision=17)
print(*onnx_program(x)) # [2.99999999175649368, 9.96578425727775219] [0.90308997445095363, 2.99999995833973321]
print(*Model()(x)) # [3.00000000000000000, 9.96578428466208699] [0.90308998699194354, 3.00000000000000000]
aten_log2 and aten_log10 divide by op.CastLike(op.Log(2.0), self). Log runs on a float32 constant and only the result is cast, so the graph holds 0.6931471824645996 instead of log(2) = 0.6931471805599453 as a float64 initializer, and every result is off by about 3e-9 relative. That's within the 1e-7 float64 tolerance of assert_onnx_program, which is why the op tests pass.
It matters wherever the result is floored or compared, for example torch.floor(torch.log2(n)) for a bit length or a number of levels: the exported model gives 2 for n = 8 and 9 for n = 1024, where PyTorch gives 3 and 10.
Versions: onnxscript 0.7.2 and main (682b59de), torch 2.14.1, onnxruntime 1.31.0, Linux, CPU.
- Lenguaje dominante
- Python
- Estrellas
- 457
- Forks
- 149
- Merge medio
- 3 d 16 h
- PR fusionados (30 d)
- 24
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 microsoft/onnxscript
-
`fuse_skip_rms_normalization` fuses a float16 residual into a norm whose scale is float32, which ONNX Runtime rejectsPosiblemente ocupada @justinchuby la tomó hace 2 días. Abiertomodule: optimizer
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
microsoft/onnxscript#3155 · 3 comentarios · 1 reacción · 2 asignados ·
Los mantenedores suelen responder en 4 días
-
Constant folding uses onnx's plain reference ops, never onnx.reference.ops_optimizedPosiblemente ocupada @todkarsant la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
microsoft/onnxscript#3003 · 3 comentarios ·
Los mantenedores suelen responder en 4 días
-
CI : Pin github actions to full commit SHAPosiblemente ocupada @Aniketsy la tomó hace 187 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
microsoft/onnxscript#2903 · 6 comentarios ·
Los mantenedores suelen responder en 4 días
-
Batch-transpose fusion into `FusedMatMul` sets `transBatchA` on inputs of different ranks, which ONNX Runtime can't computePosiblemente ocupada @Syedmudassir1604 la tomó hace 2 días. Abiertomodule: optimizer
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
microsoft/onnxscript#3156 ·
Los mantenedores suelen responder en 4 días
-
`SlicesSplit` rule makes `optimizer.optimize` quadratic in the number of `Slice` nodesPosiblemente ocupada @mayuriphad la tomó hace 1 día. Abiertomodule: optimizer
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
microsoft/onnxscript#3154 ·
Los mantenedores suelen responder en 4 días
Todos los issues de microsoft/onnxscript
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
RunestoneInteractive/rs#1661 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
streamlink/streamlink#7192 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
aws-samples/sample-per-model-bedrock#795 ·
Los mantenedores suelen responder en 1 día