Devotd Github
새 소식추론/서빙

luce-org/lucebox f3cc3ec — Qwen 분할 디코딩 커널 실행 횟수 감소

두 GPU 분할 디코딩에서 대상 GPU의 층당 커널 실행을 45.4개에서 약 36개로 줄이는 late-expert 옵션과 CUDA·HIP 퓨전 추가 커밋.

저장소 정보luce-org/lucebox ↗

두 GPU 분할 디코딩에서 대상 GPU의 층당 커널 실행을 45.4개에서 약 36개로 줄이는 late-expert 옵션과 CUDA·HIP 퓨전 추가 커밋.

GitHub 설명: LLM speculative inference server for heterogeneous hardware & consumer GPUs

스타
★ 2.9K
포크
287
언어
C++
라이선스
Apache-2.0
원문 보기 ↗GitHub에서 보기 ↗

luce-org/lucebox 저장소에 2026년 11월 6일 커밋 f3cc3ec9가 들어왔다. 제목은 perf(qwen4exp): fewer target launches in split decode(#937)이며, 두 GPU로 나눠 디코딩하는 Qwen 계열 경로에서 대상(target) GPU가 매 층마다 띄우던 커널 실행 횟수를 줄이는 성능 작업이다. 변경은 18개 파일, 993줄 추가와 61줄 삭제 규모다.

lucebox는 이종 하드웨어와 소비자용 GPU로 LLM의 예측적 추론(speculative inference)을 돌리는 서버다. 짧은 초안을 먼저 뽑고 큰 모델이 그 결과를 검증하는 방식이며, 서로 다른 성능의 장을 한 그래프에 함께 쓰는 것이 이 프로젝트의 방향이다. 이 커밋의 핵심은 한 층의 라우팅된 expert 합을 다음 층으로 늦게 합류시키는 기능이다. 대상 GPU는 다음 층의 어텐션과 라우터를, expert GPU는 라우팅된 expert 계산을 겹쳐 실행한다. 기존에는 두 장이 번갈아 쉬며 디코딩 시간의 약 3분의 1씩을 놀았다는 설명이 붙어 있다. 다만 이 경로는 모델의 산술을 바꾸기 때문에 기본값은 꺼짐이고, LUCE_QWEN4EXP_LATE_EXPERTS=all 또는 <a>-<b>로 직접 켜야 한다.

CUDA·HIP 백엔드 쪽 퓨전도 함께 늘었다. 라우터의 GET_ROWS·SUM_ROWS·CLAMP·DIV를 한 번의 실행으로 합치고, 공유 expert의 게이트 시그모이드와 곱셈을 MoE 결합 커널에 접어들였으며, q8_1 양자화 행을 다음 매트멀이 직접 읽게 해 별도의 양자화 실행을 없앴다. 커밋 메시지는 디코딩 프로필 기준 대상 GPU의 층당 커널 수가 45.4에서 약 36으로 줄고 late-expert 분할에서 디코딩이 1.5~2.5% 빨라진다고 적는다. AMD RDNA4(gfx1151)에는 짧은 행 Q8_0 MMVQ 커널이 추가되어 1~8열 구간에서 1.5~3배 빠르다고 했고, greedy 디코딩은 GPU에서 argmax를 계산해 로짓 행 전체 대신 토큰 ID만 읽도록 바뀌었다.

수치는 모두 커밋 메시지가 밝힌 값이지 독립 측정이 아니다. late-expert 경로는 산술을 바꾸므로 켜 두면 기존 출력과 달라질 수 있고, 퓨전도 켜고 끄는 플래그로 남아 있다. 대신 퓨전이 실제로 적용되는지와 argmax 동점 규칙을 확인하는 test_qn_split_fusions 테스트가 새로 추가되어 CI에 편입됐다. 하드웨어별로 손으로 다듬은 최적화를 코드와 테스트로 남긴 커밋으로 읽는 것이 맞고, 기본 설정의 성능이 얼마나 달라지는지는 아직 판단하기 이르다.