AI VIDEO BRIEFING
vLLM 선정 과정과 페이지드 어텐션·연속 배칭 원리: 카카오페이 LLM 서빙 최적화 사례 정리
카카오페이 팀이 네 개의 LLM 서빙 프레임워크를 직접 비교하고 실험한 과정을 공개했다. 최종적으로 vLLM을 고른 기준과, GPU 메모리 낭비를 줄이는 페이지드 어텐션·연속 배칭의 원리를 함께 설명한다.

핵심 메시지
쉽게 이해하기
발표는 카카오페이가 실제로 운영 중인 언어 모델 기반 서비스 소개로 시작한다. 종목 토론방과 기업 정보를 요약해 답하는 주식 봇, 고객센터 질문을 이해해 적절한 답변을 찾아 주는 FAQ 봇이 이미 서비스되고 있고, 건강검진 결과와 약관 정보를 바탕으로 개인화된 상담을 해 주는 보험 진단 봇이 출시 준비 중이다. 이런 서비스는 외부 API를 쓰는 대신 모델을 GPU 서버에 직접 올려 운영하고 있어, 모델이 커질수록 필요한 GPU 메모리와 비용이 그대로 늘어난다. 서빙 프레임워크를 도입한 이유가 여기에 있다.
후보는 네 개였다. 허깅페이스가 제공하는 TGI, 파이썬 기반의 vLLM과 LightLLM, 그리고 엔비디아가 만든 TensorRT-LLM이다. 팀은 열한 가지 비교 요소를 정리한 뒤 그중 여섯 가지에 집중했다. 첫 번째 기준은 팀이 이미 쓰고 있던 트라이톤 추론 서버와 붙일 수 있는지였고, 두 번째는 여러 개의 로라 어댑터를 동시에 실행할 수 있는지였다. 하나의 사전학습 모델 위에 목적별로 학습한 어댑터를 얹어 쓰려는 구상 때문이다. 나머지는 성능 참고 자료, 로드맵, 깃허브 스타 수, 지원하는 모델 아키텍처였다.
이 기준으로 후보가 차례로 걸러졌다. 트라이톤 연동과 다중 로라 지원을 기준으로 TGI가 먼저 빠졌고, 성능은 비슷했지만 참고 사례와 스타 수가 적다는 이유로 TensorRT-LLM이 제외됐다. 남은 vLLM과 LightLLM은 당시 LightLLM이 더 빠르다는 벤치마크가 있었던 터라 팀이 직접 실험했다. 20억·70억·460억 파라미터 모델을 대상으로 일반 문장을 입력해 300개 토큰을 생성하도록 설정하고 초당 처리량과 요청당 평균 응답 시간을 쟀다. 결과는 처리량은 비슷하되 평균 응답 시간은 vLLM이 짧았고, 한 모델을 빼면 세 모델에서 같은 경향이 나왔다.
후반부는 선택한 프레임워크가 무엇으로 빨라지는지를 설명한다. 언어 모델은 이전 출력을 다음 입력에 붙여 한 단어씩 만들어 내는 구조라 같은 계산이 반복된다. 이를 줄이려고 이미 계산한 키와 값을 캐시에 저장해 두는데, 문제는 출력이 얼마나 길어질지 미리 알 수 없다는 점이다. 그래서 항상 최대 길이만큼 메모리를 잡아 두게 되고, 실제 출력이 짧으면 잡아 둔 공간이 그대로 놀면서 다른 요청도 쓰지 못하는 내부 단편화가 생긴다. 요청마다 할당 크기가 달라 사이사이 빈 공간이 남는 외부 단편화도 함께 발생한다.
첫 번째 해법인 페이지드 어텐션은 고정돼 있던 물리적 메모리 공간을 블록 단위로 쪼갠다. 블록은 입력에 따라 비연속적으로 할당되지만, 논리 블록이 이들을 하나의 연속된 공간처럼 보이게 해 준다. 한 블록이 다 차면 다른 빈 블록이 선택돼 이어지는 방식이라 필요한 만큼만 쓰게 되고, 내부·외부 단편화가 함께 줄어든다. 두 번째 해법인 연속 배칭은 배치 처리 방식을 바꾼다. 기존 정적 배칭에서는 먼저 끝난 요청이 나머지 요청이 모두 끝날 때까지 자원을 붙잡고 대기했지만, 연속 배칭에서는 끝나는 대로 그 자리에 새 요청을 받아 GPU가 노는 시간을 줄인다.
주요 인사이트
- 프레임워크 선택 기준의 첫 자리에 성능이 아니라 팀이 이미 쓰는 추론 서버와의 호환성이 놓였다는 점이 눈에 띈다. 도입 속도와 운영 편의가 벤치마크 수치만큼 무겁게 다뤄졌다는 뜻이다.
- 벤치마크를 그대로 믿지 않고 자기 조건에서 다시 재본 판단이 결과를 뒤집었다. 모델 크기와 입출력 길이를 자기 서비스에 맞춰 놓고 재는 것이 공개 수치보다 신뢰할 만하다.
- 처리량이 아니라 요청당 응답 시간을 최종 근거로 삼은 것은 대화형 서비스의 성격과 맞닿아 있다. 같은 처리량이라도 사용자가 기다리는 시간이 짧은 쪽이 낫다는 판단이다.
- 페이지드 어텐션의 아이디어는 운영체제의 가상 메모리와 닮아 있다. 논리 주소와 물리 주소를 분리해 조각난 공간을 연속된 것처럼 쓰는 오래된 해법이 GPU 메모리에 그대로 적용됐다.
- 깃허브 스타 수와 참고 사례가 실제 선택 기준에 들어갔다는 점은, 기술 스택 선정에서 생태계 규모가 성능 못지않게 실질적인 위험 지표로 쓰인다는 것을 보여 준다.
자주 묻는 질문
왜 외부 API 대신 모델을 직접 서빙하는가?
발표에서는 API를 이용하는 경우도 있지만 여러 요인으로 로컬 모델을 쓰는 곳도 있다고만 밝힌다. 카카오페이는 금융 관련 모델을 직접 개발하고 GPU 서버에 올려 서빙하고 있으며, 이 경우 모델이 클수록 GPU 메모리와 비용이 함께 늘어나기 때문에 서버 자원을 효율적으로 쓰는 것이 중요한 과제가 된다고 설명한다.
정적 배칭과 연속 배칭은 무엇이 다른가?
둘 다 여러 요청을 묶어 한꺼번에 처리한다는 점은 같다. 차이는 먼저 끝난 요청을 어떻게 다루느냐다. 정적 배칭에서는 생성이 끝난 요청도 같은 배치의 다른 요청이 모두 끝날 때까지 대기하며 자원을 붙잡는다. 연속 배칭은 끝나는 대로 그 자리에 새 요청을 받아 처리하므로 GPU 유휴 시간이 줄고 더 많은 양을 배치로 소화할 수 있다.
KV 캐시는 어떤 문제를 해결하고 어떤 문제를 남기나?
언어 모델은 이전 입력과 출력을 합쳐 다음 입력으로 쓰기 때문에 키와 값 계산이 중복된다. KV 캐시는 이미 계산한 값을 저장해 두고 재사용해 이 중복을 없앤다. 다만 출력 길이를 미리 알 수 없어 최대 길이만큼 공간을 잡아 두게 되고, 그 결과 내부 메모리 단편화와 외부 메모리 단편화라는 새로운 낭비가 생긴다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗