Potential numerical accuracy issue in the fused_moe implementation

Aperta
#23 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 8 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python, pytorch

Direzione di ricerca

Inizia da tests/ops/test_moe.py, riproduci l’insieme di parametri segnalato con torch.manual_seed(0) e confronta bfloat16 con float16. Segui il punto di ingresso fused_moe utilizzato da questo test e analizza gli output non corrispondenti per le dimensioni maggiori. Il lavoro è completato quando il caso bfloat16 corrisponde al riferimento entro la tolleranza del test, senza introdurre regressioni nei casi che passano.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Test environment: CTK 13.1, torch = 2.9.1+cu130, cuda-tile = 1.0.0, single B200 GPU

When using a parameter set (num_tokens, hidden_size, moe_intermediate_size, n_experts, top_k) = (128, 4096, 2048, 16, 4) in tests/ops/test_moe.py and add torch.manual_seed(0) in line 101, will have mismatched results:

(Earlier output omitted)
>       assert passed, f"\n{failed_msgs}"
               ^^^^^^
E       AssertionError:
E               *** OUTPUT 0 DID NOT MATCH THE REFERENCE (rtol=0.1, atol=0.1) ***
E                       allclose: False
E                       matched: 523466 / 524288 [99.84%]
E                       ref range:    -1.1700e+02 :  1.2300e+02
E                       test range:   -1.1650e+02 :  1.2300e+02
E                       |ref| range:   0.0000e+00 :  1.2300e+02
E                       |test| range:  0.0000e+00 :  1.2300e+02
E                       max absolute difference:  1.0000e+00
E                       max relative change:      4.3000e+01
E                       max max mean change:      2.0000e+00
E                       max arith mean change:    5.1400e+02
E                       shape: torch.Size([128, 4096]) stride: (4096, 1) dtype: torch.bfloat16
E                       mismatched indices:tensor([[   0, 1842],
E               [   0, 2071],
E               [   1,  675],
E               ...,
E               [ 127, 1728],
E               [ 127, 2207],
E               [ 127, 2628]])

For the same parameter set, if dtype is changed to float16, the test can pass.
Using a smaller hidden_size or a smaller moe_intermediate_size can also pass the test.

Lingua principale
Python
Stelle
834
Fork
92
Merge medio
8g 11h
PR unite (30g)
8

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di NVIDIA/TileGym

Tutte le issue di NVIDIA/TileGym

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.