TileFuse: A Fused Mixed-Precision Kernel Library for Efficient Quantized LLM Inference on AMD NPUs
이 논문은 언패킹(unpacking), 역양자화(dequantization), 행렬 연산을 융합하여 인기 있는 AWQ 스타일의 양자화된 LLM 추론에 대한 효율적인 네이티브 지원을 가능하게 함으로써, 클라이언트 엣지 장치에서 기존 베이스라인 대비 상당한 성능 및 에너지 효율 이득을 달성하는 AMD XDNA2 NPU용 근접 하드웨어(close-to-metal) 혼합 정밀도 커널 라이브러리인 TileFuse를 소개한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신의 차고에 아주 새롭고 빠른 배송 트럭(NPU)이 놓여 있지만, 당신이 가진 유일한 지도(소프트웨어)는 느리고 오래된 자전거를 타는 법만을 알려준다고 상상해 보십시오. 트럭의 속도를 활용할 수 없는 이유는 지도가 트럭의 차선을 탐색하는 법을 모르기 때문입니다.
이것이 오늘날 새로운 노트북 칩에서 현대적인 AI 챗봇(LLM)을 실행할 때 발생하는 문제입니다. 이 칩들은 배터리를 절약하고 빠르게 작동하도록 설계된 강력한 "AI 엔진"(NPU)을 갖추고 있지만, 소프트웨어는 엔진이 AI에 맞춰 적응하게 하는 대신, AI가 엔진에 맞게 형태를 바꾸도록 강요합니다.
TileFuse는 이를 해결하는 새로운 도구 세트입니다. 이는 트럭이 데이터를 다시 포장하기 위해 멈출 필요 없이 무거운 압축 데이터를 운반할 수 있도록 설계된, 전용 고속도로를 건설하는 것과 같습니다.
다음은 이 논문이 이 솔루션을 쉬운 비유를 사용하여 설명하는 방식입니다.
1. 문제점: "재포장" 병목 현상
보통 이러한 새로운 칩에서 AI를 실행하려면, AI의 "압축된" 가중치(작은 여행 가방 안에 빽빽하게 담긴 책들과 같은 것)를 칩이 읽을 수 있는 부피가 큰 형식(책을 꺼내서 테이블 위에 평평하게 펼쳐 놓는 것과 같은 것)으로 풀어헤쳐야 합니다.
- 기존 방식: 칩이 여행 가방을 읽고, 책을 꺼내고, 다시 다른 가방에 넣은 다음, 그제서야 읽기를 시작합니다. 이는 시간과 에너지를 낭비합니다.
- TileFuse 방식: 칩이 여행 가방을 읽으면서, 가방을 여는 동시에 그 안의 책들을 읽습니다. 모든 것을 하나의 매끄러운 동작으로 처리합니다.
2. 해결책: "퓨즈드(Fused)" 커널
저자들은 TileFuse라는 라이브러리를 만들었습니다. "커널"을 칩을 위한 특정 지침 매뉴얼이라고 생각하십시오.
- 퓨전(Fusion): 세 명의 별도 작업자(하나를 풀고, 하나를 변환하고, 하나를 계산하는 작업자)를 두는 대신, TileFuse는 이들을 하나의 슈퍼 작업자로 결합합니다. 이 작업자는 압축된 데이터를 잡아서, 즉석에서 변환하고, 한 번에 수학 계산까지 마칩니다.
- 결과: 이것은 채소를 단순히 써는 것이 아니라, 써는 것, 양념하는 것, 요리하는 것을 하나의 연속적인 동작으로 수행하는 요리사와 같습니다. 논문은 이 방식이 특정 작업에서 기존 방식보다 "언패킹(unpacking)" 과정을 최대 2.8배 더 빠르게 만든다고 주장합니다.
3. "인터리브드(Interleaved)" 레이아웃: 창고 정리하기
대규모 AI 모델은 거대한 숫자 리스트(가중치)를 가지고 있습니다. 칩의 메모리 시스템에는 다음 데이터 조각을 가져오기 위해 뻗을 수 있는 거리의 한계가 있습니다. 만약 데이터가 무질서하고 흩어진 방식으로 저장되어 있다면, 칩은 다음 조각을 가져오기 위해 길고 느린 이동을 해야 합니다.
- 비유: 상자들이 무작위로 쌓여 있는 창고를 상상해 보십시오. 지게차가 다음 상자를 가져오기 위해 50피트를 달려가야 합니다.
- TileFuse의 해결책: 그들은 창고를 재배치(이를 "Interleaved Pre-tiling"이라 부름)하여, 지게차가 다음에 필요로 하는 상자들이 바로 옆에 있도록 만듭니다. 이를 통해 칩은 방대한 양의 데이터를 한 번의 매끄러운 움직임으로 휩쓸 듯이 가져올 수 있으며, 이전에는 들어갈 수 없었던 훨씬 더 큰 AI 모델(최대 32,000개 항목 너비)을 지원합니다.
4. "GEMV" 문제: 교통 체증
AI 챗봇은 두 단계로 작동합니다:
- 프리필링(Prefilling): 긴 프롬프트를 한꺼번에 읽는 단계 (책 한 권을 통째로 읽는 것과 같습니다). 이는 트럭에게 쉽고 빠릅니다.
- 토큰 생성(Token Generation): 한 번에 한 단어씩 쓰는 단계 (한 문장을 쓰는 것과 같습니다). 이는 느리고 까다롭습니다.
- 문제점: 한 단어를 쓸 때, 칩의 "트럭"은 종종 유휴 상태가 됩니다. 왜냐하면 이 트럭은 작은 짐이 아니라 큰 짐을 실으라고 설계되었기 때문입니다. 이는 마치 한 통의 편지를 배달하기 위해 세미 트럭을 사용하는 것과 같습니다. 엔진은 돌아가고 있지만, 트럭은 비어 있는 상태입니다.
- 해결책: TileFuse는 이 단계의 교통 흐름을 재설계했습니다. 데이터를 단 하나의 차선으로만 보내는 대신, 칩의 32개 차선 전체에 작업을 분산시킵 most 합니다. 이를 통해 "짐"이 작더라도 엔진 전체가 계속 바쁘게 돌아가도록 유지합니다.
5. 실제 결과
팀은 실제 AMD 노트북(Ryzen AI)에서 테스트를 진행했으며, 이를 노트북의 표준 그래픽 카드(iGPU)와 비교했습니다.
- 속도: 긴 프로프트를 읽는 데 있어서(prefilling), TileFuse를 적용한 NPU는 그래픽 카드보다 최대 2배 더 빨랐습니다.
- 배터리: NPU는 더 효율적이기 때문에 동일한 작업을 수행하는 데 64% 적은 에너지를 사용했습니다.
- 주의점: 한 번에 한 단어를 쓰는 단계(token generation)에서는 NPU가 때때로 그래픽 카드보다 느렸습니다. 이는 NPU를 설정하는 "준비 시간(setup time)"이 너무 작은 작업에는 너무 길기 때문입니다.
- 하이브리드 솔루션: 논문은 "최선의 조합"을 제안합니다: NPU는 무거운 작업(긴 프롬프트 읽기)을 담당하고, 그래픽 카드는 빠른 작업(단어 쓰기)을 담당하게 하는 것입니다. 이 조합이 최고의 속도와 배터리 수명을 제공합니다.
요약
TileFuse는 가교 역할을 합니다. 개발자들이 이미 사용 중인 인기 있는 압축 AI 형식(AWQ 등)을 AI 모델 자체를 변경하지 않고도 AMD의 새로운 AI 칩에서 네이티브로 실행되도록 만듭니다. 언패킹 단계와 수학 계산 단계를 융합하고, 데이터를 완벽하게 정리하며, 칩의 차선 전체를 활용함으로써, TileFuse는 노트북에서 AI를 실행하는 것을 훨씬 더 빠르고 에너지 효율적으로 만듭니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.