[torchlib] log2 and log10 lose float64 precision
I maintainer di solito rispondono entro 4 giorni
@Syedmudassir1604 ci sta già lavorando.
Dal 2/11/2026.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- machine-learning
Direzione di ricerca
Inizia dalle implementazioni torchlib di aten_log2 e aten_log10, che dividono per un CastLike della costante float32 Log(2.0) o Log(10.0). Esegui il reproducer dell'issue per vedere la deriva dei valori esportati in float64 rispetto all'output di PyTorch. È completato quando i valori esportati per n = 8 e n = 1024 corrispondono a PyTorch in float64 e torch.floor(torch.log2(n)) restituisce 3 e 10.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 457
- Fork
- 149
- Merge medio
- 3g 20h
- PR unite (30g)
- 22
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/onnxscript
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
microsoft/onnxscript#3155 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
microsoft/onnxscript#3003 · 3 commenti ·
I maintainer di solito rispondono entro 4 giorni
-
CI : Pin github actions to full commit SHAForse già presa @Aniketsy l’ha presa 184 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
microsoft/onnxscript#2903 · 6 commenti ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
microsoft/onnxscript#3156 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
microsoft/onnxscript#3154 ·
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di microsoft/onnxscript
Issue simili
-
Server mode OAuth2: 'NoneType' object is not subscriptable on every request after re-submitting the OAuth2 login while already logged inForse già presa @Rarasinhoo l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
pgadmin-org/pgadmin4#10733 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
aws-samples/sample-per-model-bedrock#752 ·
I maintainer di solito rispondono entro 1 giorno
-
lesson-submission pending-review
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
Ikalus1988/MisakaNet#4452 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OCHA-DAP/topo-tools#250 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno