Paper describes heap-based Top-k kernel, but codebase seems to use a different Top-k implementation
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Documentazione
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Ambito
- machine-learning, performance
Direzione di ricerca
Leggere la sezione 4.1 del paper e tracciare l’API esposta attraverso python/fmha_sm100/api.py::sparse_topk_select, python/fmha_sm100/csrc/sparse_topk_select.cu e python/fmha_sm100/csrc/include/sparse_topk_select.cuh. Confrontare il kernel basato su heap descritto con l’implementazione in stile TensorRT-LLM e documentare se il kernel del paper è presente, quale implementazione è prevista e quale ha prodotto i numeri del benchmark.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi, thanks for open-sourcing MSA.
In Section 4.1 of the paper, the Top-k kernel is described as a heap-based implementation:
Each of the warp’s 32 lanes streams a 1/32 stride of the input row and maintains a k-element min-heap in shared memory. The heap root is cached in a register, and insertions are performed with deferred writes. Finally, a k-round shuffle merge combines the 32 local TopK results.
However, in the current codebase I could not find this heap-based Top-k implementation.
The exposed API:
from fmha_sm100 import sparse_topk_select
appears to call:
python/fmha_sm100/api.py::sparse_topk_select
python/fmha_sm100/csrc/sparse_topk_select.cu
python/fmha_sm100/csrc/include/sparse_topk_select.cuh
The implementation in sparse_topk_select.cuh seems to be based on TensorRT-LLM indexerTopK, using histogram/threshold selection plus insertion sort, rather than the per-lane min-heap + shuffle-merge algorithm described in the paper.
Could you clarify:
- Is the heap-based Top-k kernel from the paper included in this repository?
- If yes, where is the implementation located?
- If no, is the current sparse_topk_select implementation intended to replace the paper-described heap-based kernel?
- Are the benchmark numbers in the paper based on the heap-based kernel or the currently released sparse_topk_select kernel?
Thanks!
- Lingua principale
- Python
- Stelle
- 425
- Fork
- 59
- Merge medio
- 15h 50m
- PR unite (30g)
- 1
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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 MiniMax-AI/MSA
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
MiniMax-AI/MSA#8 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
MiniMax-AI/MSA#13 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
MiniMax-AI/MSA#3 · 1 reazione ·
Tutte le issue di MiniMax-AI/MSA
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
spec-kitty/spec-kitty#5319 ·
I maintainer di solito rispondono entro 1 giorno
-
backend::vllm diffusion multimodal
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
openai/openai-agents-python#5229 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno