Top-N-Sigma: 불필요한 softmax+sort 제거 (llama.cpp PR #22645)
Top-N-Sigma: Remove unconditional softmax+sort by TimNN · Pull Request #22645 · ggml-org/llama.cpp
핵심 요약
llama.cpp의 Top-N-Sigma 샘플러에서 중복되는 연산을 제거해 성능을 50% 향상시킨 PR입니다.
- 성능 최적화 — Top-N-Sigma 샘플러에서 불필요한 softmax와 정렬 과정을 생략함
- 속도 향상 — M3 Max 환경에서 토큰 생성 속도가 초당 30개에서 45개로 50% 증가함
- 연산 효율성 — 후속 샘플러가 데이터를 재계산하는 경우 기존의 비싼 연산을 방지함
- 범용성 — 아키텍처 의존적인 작업이 아닌 샘플링 로직 변경으로 모든 백엔드에 적용 가능함
github.com
원문 사이트로 이동
개요
현재 Top-N-Sigma 샘플러는 마지막에 무조건적인 softmax+sort를 수행합니다.
Top-N-Sigma 뒤에 Dist가 오는 경우(흔하다고 생각함), 이 비싼 작업은 완전히 낭비됩니다.추가 정보
제 M3 Max MacBook Pro에서 이 PR은google_gemma-4-E4B-it-Q8_0의 t/s를 50% 증가시켰으며, 초당 약 30개에서 45개로 늘어나 토큰당 시간을 10ms 단축했습니다.
(체인 샘플러 간의 정확한 API 계약에 대해서는 잘 모르겠고, 현재 동작에 의존하는 다른 샘플러 체인에 악영향을 미칠지는 모르겠습니다.)
훌륭한 %와 t/s 수치네. 다른 모델들로도 t/s 통계를 더 보여줬으면 좋겠음.
누가 이거 초등학생도 이해할 수 있게 설명 좀 해줄 사람? 그리고 이게 모든 백엔드랑 모든 모델에 적용 가능한 건지도 알려줘. 고마워


