SplitZip: Ultra Fast Lossless KV Compression for Disaggregated LLM Serving
SplitZip은 고정 길이 코드북과 희소 탈출 스트림을 통해 부동 소수점 지수 중복성을 활용함으로써, 분리형 LLM 서빙에서 KV 캐시 전송을 가속화하여 기존 방식보다 훨씬 높은 처리량과 감소된 지연 시간을 달성하는 GPU 친화적인 무손실 압축기입니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 거대하고 고속인 도서관을 운영하며, 두 개의 서로 다른 팀이 협력하여 복잡한 질문에 답하고 있다고 상상해 보세요.
- 팀 A ("프리필(Prefill)" 팀): 이들은 연구원입니다. 이들은 방대한 양의 긴 문서(사용자의 프롬프트)를 읽고 상세한 노트를 작성합니다. 이 과정은 매우 빠르며 많은 두뇌 능력(연산 능력)을 필요로 합니다.
- 팀 B ("디코드(Decode)" 팀): 이들은 작가입니다. 이들은 그 노트들을 사용하여 한 번에 한 단어씩 답을 써 내려갑니다. 이 부분은 더 느리며, 노트를 담아둘 많은 메모리(기억 공간)를 필요로 합니다.
현대의 AI 시스템에서, 이 두 팀은 비용을 절감하고 작업 부하를 조절하기 위해 종종 서로 다른 건물(서버)에서 근무합니다. 문제는 무엇일까요? 팀 A가 작성한 노트를 팀 B에게 우편으로 보내야 팀 B가 글쓰기를 시작할 수 있다는 점입니다. 만약 노트의 양이 엄청나게 많다면(예를 들어 사용자가 책 한 권 분량에 대해 질문할 때), 우편을 보내는 데 너무 많은 시간이 걸립니다. 그러면 작가(팀 B)는 우편이 도착하기를 기다리며 아무것도 하지 못한 채 가만히 앉아 있게 됩니다. 이 "우편 배송 지연"이 전체 시스템을 느리게 만드는 병목 현상이 됩니다.
기존 "우편 배송" 방식의 문제점
이전에는 이 노트를 압축하여 더 빠르게 보낼 수 있도록 시도했습니다.
- "손실(Lossy)" 방식: 어떤 이들은 공간을 아끼기 위해 노트의 일부를 버리려고 했습니다. 하지만 이는 소설을 요약할 때 무작ful하게 문장을 삭제하는 것과 같습니다. 공간은 절약할 수 있겠지만, 이야기(AI의 답변)가 틀리거나 말이 안 되게 될 수 있습니다.
- "기존의 무손실(Lossless)" 방식: 다른 이들은 단 한 글자도 놓치지 않고 노트를 완벽하게 압축(zip)하려고 했습니다. 하지만 그들이 사용한 소프트웨어는 마치 느리고 구식인 타자기와 같았습니다. 팀 A가 새로운 배치(batch)를 생성하는 속도를 따라잡기에 너무 느렸습니다. 노트가 압축되는 동안 팀 A는 이미 다음 작업을 진행하고 있었습니다.
해결책: SplitZip
연구진은 SplitZip이라는 새로운 시스템을 개발했습니다. 이것은 AI 노트를 위해 설계된 매우 똑똑하고 빠른 특급 배송 서비스라고 생각하면 됩니다.
작동 방식은 다음과 같습니다.
1. "노트"의 구조
AI가 생성하는 노트는 숫자로 이루어져 있습니다. 그들이 사용하는 형식(BF16이라 불림)에서 모든 숫자는 세 부분으로 나뉩니다:
- 부호(Sign): 양수인지 음수인지 나타냅니다. (플러스 또는 마이너스 기호와 같습니다.)
- 가수(Mantissa): 숫자의 구체적인 세부 사항입니다.
- 지수(Exponent): 숫자의 "힘" 또는 규모입니다. (그 숫자가 10, 100, 혹은 1,000 단위인지 등을 나타냅니다.)
2. 비밀스러운 발견
연구진은 재미있는 사실을 발견했습니다. "세부 사항(가수)"은 매우 다양하고 불규칙한 반면, "규모(지수)"는 매우 반복적이라는 것입니다. 이는 마치 책을 쓸 때, 99%의 경우 "매우", "꽤", "극도로"라는 단어만 사용하는 것과 같습니다. "다소"나 "거의 ~않은" 같은 단어는 거의 사용하지 않는 것과 비슷합니다.
3. SplitZip 전략
모든 단어를 일일이 쓰는 대신, SplitZip은 다음과 같이 수행합니다:
- 지름길(The Shortcut): 가장 흔하게 등장하는 16개의 "규모(지수)" 목록을 만듭니다. 그리고 이 16개의 흔한 규모 각각에 아주 짧은 4글자 코드(비밀 암호 같은 것)를 할당합니다.
- 패킹(The Packing): 이 작은 코드 두 개를 하나의 바이트 공간 안에 집어넣습니다. 이는 마치 두 개의 비밀 암호를 하나의 글자 공간에 끼워 넣는 것과 같습니다.
- "희귀(Rare)" 목록: 만약 "희귀한" 규모가 나타날 확률이 1%라면, 이를 억지로 지름길에 맞추려 하지 않습니다. 대신, *"위치 #50에서, 실제 규모는 '희귀-값-99'였습니다"*라고 적힌 작은 "탈출 노트(escape note)"를 작성합니다.
4. 왜 빠른가?
- 팀 A를 위해 (인코딩): 시스템이 복잡하고 가변적인 코드를 사용하는 대신 고정된 짧은 코드를 사용하기 때문에, 노트를 믿을 수 없을 정도로 빠르게 패킹할 수 있습니다. 이는 매번 옷을 어떻게 접을지 고민하는 사람 대신, 물건을 어디에 둘지 정확히 아는 로봇 팔과 같습니다.
- 팀 B를 위해 (디코딩): 노트가 도착하면 팀 B는 즉시 압축을 풀 수 있습니다. 그들은 4글자 코드를 찾아보고, 규모를 파악한 뒤, 세부 사항과 결합합니다. 만약 "탈출 노트"가 있다면, 그 지점에 해당 값을 덮어쓰기만 하면 됩니다. 이는 혼란스러운 우회로 없이 직선으로 진행되는 작업입니다.
결과
논문은 SplitZip이 게임 체인저라고 주장합니다:
- 속도: 데이터 압축 및 해제 속도가 각각 613 GB/s와 2181 GB/s에 달합니다. 이를 체감하기 위해 비교하자면, CPU에서 이를 수행하려 했던 이전 방식들보다 수백 배 더 빠릅니다.
- 완벽한 정확도: 이 방식은 "무손실(lossless)"입니다. 팀 B가 받는 노트는 팀 A가 작성한 것과 비트 단위까지 완전히 동일합니다. 정보의 손실은 전혀 없습니다.
- 실제 세계의 영향: 연구진이 실제 AI 시스템(SGLang 프레임워크 사용)에서 테스트했을 때 다음과 같은 결과를 얻었습니다:
- 서버 간 노트 전송 속도 1.32배 향상.
- 첫 번째 답변 단어가 나오는 시간(TTFT) 1.30배 단축.
- 시간당 총 요청 처리량 1.23배 증가.
요약
SplitZip은 AI의 노트가 대부분 반복적이라는 것을 알고 있는 특화된 고속 택배 서비스와 같습니다. 전체를 담은 무거운 상자를 보내는 대신, 흔한 항목들의 아주 작고 암호화된 목록과 희귀한 항목들을 위한 작은 메모지를 보냅니다. 이 과정이 매우 빠르기 때문에 AI 서버는 기다릴 필요가 없으며, 덕분에 단 하나의 디테일도 놓치지 않으면서 훨씬 더 길고 복잡한 질문에 훨씬 더 빠르게 답할 수 있습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.