[torchlib] Float remainder is off by the divisor when the quotient rounds up, and nan for an infinite divisor
I maintainer di solito rispondono entro 3 giorni
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
Direzione di ricerca
Start with _aten_remainder, whose TODO points to the PyTorch kernel; compare its remainder behavior with the examples in the issue, including quotient rounding and infinite divisors. Check the relevant tests for exported torch.remainder behavior. Done when exported results match PyTorch for the reported cases, including large quotients and both divisor signs.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Float remainder (a % b, torch.remainder) is exported as a - Floor(a / b) * b. When a / b rounds up to a whole number the result is off by a whole b, an infinite divisor gives nan, and large quotients lose their low digits.
import torch
class Model(torch.nn.Module):
def forward(self, a, b):
return a % b
inf = float("inf")
args = (torch.tensor([1.0, 4.2, 1e10, 5.0, -5.0]), torch.tensor([0.1, 1.4, 3.0, inf, inf]))
onnx_program = torch.onnx.export(Model(), args, dynamo=True)
print(onnx_program(*args)[0]) # tensor([0., 0., 0., nan, nan])
print(Model()(*args)) # tensor([0.1000, 1.4000, 1.0000, 5.0000, inf])
This matters for code that wraps a value into a period, such as a phase or an angle (phase % 1.0, theta % (2 * math.pi)). At the boundary, the exported model gives 0 where PyTorch gives a value just below the period.
The TODO in _aten_remainder already points at the PyTorch kernel, which takes the exact fmod(a, b) and adds b when the signs differ.
Versions: onnxscript main (d7cb02b0), torch 2.14.1, onnxruntime 1.31.0, Linux, CPU.
- Lingua principale
- Python
- Stelle
- 456
- Fork
- 148
- Merge medio
- 3g 13h
- PR unite (30g)
- 21
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 78/100
microsoft/onnxscript#3003 · 3 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
CI : Pin github actions to full commit SHAForse già presa @Aniketsy l’ha presa 179 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 3 giorni
-
optimize() crashes when constant folding produces a string tensorForse già presa @nniiovoo l’ha presa 3 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
microsoft/onnxscript#3129 ·
I maintainer di solito rispondono entro 3 giorni
-
bug module: torchlib
Difficoltà 3/5 1-2 giorni Idoneità per principianti 64/100
microsoft/onnxscript#3124 · 3 commenti · 1 reazione ·
I maintainer di solito rispondono entro 3 giorni
-
[torchlib] Float floor_divide is one too large when the quotient rounds up to a whole numberForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 57/100
microsoft/onnxscript#3115 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di microsoft/onnxscript
Issue simili
-
Admin member of a research group cannot see the HX2 allocation until they've been added to itAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
developmentseed/titiler-cmr#278 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni