Marlin
-
Fused 커널은 왜 3~4배 빠른가 — GPU 메모리 계층과 Marlin의 비밀IT 2026. 5. 5. 23:40
들어가며 — "단계를 합쳤더니 왜 빨라지는가"직전 글에서 Q4 양자화는 곱셈 직전에 dequantize를 거쳐야 한다고 했다. 그리고 그 변환 비용을 거의 0으로 만드는 도구가 Marlin 같은 fused 커널이라고 짧게 언급하고 넘어갔다.그런데 잘 생각해 보면 이상한 구석이 있다. 똑같이 dequantize 하고, 똑같이 행렬곱을 하는데, 두 단계를 그냥 한 함수에 합쳤다고 어떻게 3~4배가 빨라지는가? 합쳐도 일의 양은 똑같지 않은가?답은 GPU 메모리 계층에 있다. 단순 분리 구현은 중간 결과를 한 번 메모리에 썼다가 다시 읽는다. 그 왕복이 실제 연산보다 훨씬 비싸다. Fused 커널은 그 왕복을 없앤다 — 중간 결과를 GPU 레지스터 안에서 곧장 다음 단계로 흘려보낸다.이 글은 그 메커니즘을 G..
-
Q4 양자화는 GPU 안에서 어떻게 동작하나 — Blackwell FP8 텐서코어와의 만남IT 2026. 5. 5. 23:30
들어가며 — "Q4는 그럼 어떻게 곱셈을 하지?"직전 글에서 Blackwell이 FP8을 텐서코어로 네이티브 처리한다고 했다. 메모리에서 곧장 곱셈으로, 변환 단계 없이.그렇다면 자연스럽게 떠오르는 의문이 있다. Q4 양자화로 4비트까지 줄이면 어떻게 되는가? 메모리는 분명히 4분의 1로 줄어든다. 그런데 텐서코어가 받아주는 형식은 FP16, BF16, FP8, FP4까지인데, Q4는 거기 안 끼어 있다. 그럼 곱셈은 어떻게 되는가?답을 먼저 말하면, Q4는 메모리에는 4비트로 압축돼 있지만 GPU 안에서 곱셈 직전에 FP16(또는 FP8)으로 풀어준 뒤 텐서코어에 태운다. 압축 zip 파일을 디스크에 두고, 처리할 때만 풀어 읽는 것과 똑같다. 이 글은 그 흐름을 비유와 다이어그램으로 풀어쓴다.1. Q..