Skip to content
AI-Daily-Builder

2026-05-29 회 조회

Triton FP8 우회 패치가 DGX Spark의 GB10에서 NVFP4 속도를 17% 더 짜낸다

커뮤니티 패치가 NVFP4 가중치를 느린 BF16 폴백 대신 GB10의 FP8 텐서 코어로 우회시켜, DGX Spark에서 Qwen3.6-35B-A3B를 40.8에서 47.6 tok/s로 끌어올린다.

NVIDIA는 DGX Spark를 FP4를 네이티브로 다루는 Blackwell 머신으로 마케팅한다——하지만 이달의 한 커뮤니티 실측 글은 그 주장 뒤에 숨은 작은 단서와, 마케팅이 암시하는 처리량의 대부분을 되찾는 영리한 80줄짜리 우회책을 드러냈다. 요약하자면, Spark의 GB10 칩의 텐서 코어는 사실 FP4 연산을 직접 실행하지 못하며, 그래서 NVFP4 모델들은 느린 소프트웨어 폴백 경로를 기어가고 있었다. Triton monkey-patch가 이들을 칩의 FP8 코어로 우회시키자, Qwen3.6-35B-A3B가 40.8에서 47.6 tok/s로 뛰어올랐다.

GB10이 FP4에 대해 실제로 하는 일

NVIDIA DGX Spark의 GB10 Superchip(Grace Blackwell, SM121)에는 네이티브 FP4 하드웨어가 없다. 이것이 중요한 이유는, vLLM이 NVFP4 양자화 모델을 받았을 때 행렬 곱셈을 칩의 FP8 텐서 코어에는 전혀 손대지 않고 느린 BF16 역양자화 폴백(Marlin 경로)으로 돌리고 있었기 때문이다. 4-bit 가중치는 GEMM 실행 전에 다시 16-bit로 풀린다——이는 애초에 양자화한 의미의 대부분을 버리는 것이다. 메모리는 아끼지만 연산 경로는 더 큰 포맷을 돌리는 것보다 빠르지 않다.

이 80줄짜리 Triton 우회

한 실측 글(2026년 4월 22일 게시, 5월 6일 업데이트)은 vLLM을 포크하지 않고 이를 해결하는 약 80줄짜리 Triton monkey-patch를 상세히 설명한다. 모델 로드 시점에 패치가 NVFP4 가중치를 FP8로 변환하고, 추론 시점에는 torch._scaled_mm을 통해 GB10의 FP8 텐서 코어에서 GEMM을 실행한다. 런타임 monkey-patch이기 때문에 vLLM 소스를 변경할 필요가 없다——임포트하면 해당 커널이 교체되고, 기존 NVFP4 체크포인트가 갑자기 빠른 경로를 타게 된다.

저자는 역양자화 공식의 중요한 수정도 짚는다. 수치 오버플로를 피하려면 글로벌 스케일로 곱하는 것이 아니라 나눠야 한다. 이는 깔끔한 크래시 대신 쓰레기 출력이나 NaN을 만들어내는 종류의 ‘한 글자 부호 실수’이므로, 이 패치를 재현하려는 사람이라면 특히 주의할 가치가 있다.

수치

Qwen3.6-35B-A3B(NVFP4)에서 단일 스트림 생성이 40.8 tok/s에서 47.6 tok/s로——17% 빨라졌다. 참고로 같은 머신의 네이티브 FP8 체크포인트 상한은 53.8 tok/s이므로, 이 패치는 느린 폴백과 전용으로 만든 FP8 모델 사이 격차의 대부분(전부는 아니지만)을 되찾는다.

경로Qwen3.6-35B-A3B 단일 스트림
NVFP4 → BF16 폴백(Marlin)40.8 tok/s
NVFP4 → Triton FP8 우회47.6 tok/s(+17%)
네이티브 FP8 체크포인트(상한)53.8 tok/s

이 실측은 vLLM 0.19.1NVIDIA 드라이버 580.142에서 수행되었다.

실무 메모

Spark에서 셀프호스팅 중이고 통합 메모리에 들어맞는다는 이유로 NVFP4 체크포인트를 써왔다면, 이건 10분을 들일 가치가 있다. 솔직한 의사결정 트리는 이렇다. 모델의 네이티브 FP8 체크포인트가 존재하고 들어맞는다면, 53.8 tok/s로 그것이 여전히 가장 빠른 경로다. 하지만 FP8 가중치는 FP4의 약 두 배 크기이고, 1 GB의 통합 메모리도 다투는 머신에서는 더 큰 모델에게 그것이 아예 선택지가 아닐 수 있다. 그럴 때 Triton 우회는 더 작은 FP4 점유를 유지하면서 FP8 상한의 약 12% 이내까지 도달하게 해준다——진짜로 괜찮은 거래다. 테스트된 조합에 맞춰 스택을 vLLM 0.19.1과 드라이버 580.142에 고정하고, 출력을 신뢰하기 전에 ‘곱하지 말고 나누라’는 수정을 다시 확인하라.

덜 다뤄진 관점

여기서 더 깊은 교훈은 이 하드웨어에서 Blackwell 마케팅을 어떻게 읽을 것인가에 있다. ‘네이티브 NVFP4 Blackwell’은 포맷 층위에서는 기술적으로 사실이다——칩은 이 인코딩을 이해한다——하지만 GB10의 텐서 코어는 FP4 연산을 직접 실행하지 않으므로, 이 4-bit 포맷은 소프트웨어가 그것을 실리콘이 실제로 빠르게 돌릴 수 있는 경로(예컨대 FP8)로 다리 놓아줄 때에만 보상이 따른다. tok/s와 통합 메모리 여유가 승부의 전부인 3천 달러급 머신에서, vLLM 포크 없이 단 80줄짜리 유저랜드 패치가 네이티브 FP8과의 격차 대부분을 되찾는다는 사실은 날카로운 환기다. Spark에서는 실제 처리량을 결정하는 것이 라벨 위의 양자화 포맷이 아니라 커널과 런타임 층이다. 포맷은 가중치가 얼마나 작은지 알려줄 뿐, 그것이 얼마나 빠르게 돌아가는지는 알려주지 않는다.


Sources

커피