AI VIDEO BRIEFING

딥시크 MLA 다중 헤드 잠재 어텐션 원리: KV 캐시 90% 줄이는 압축 방식

긴 문맥이 비싸고 느린 진짜 이유는 KV 캐시다. 딥시크가 채택한 다중 헤드 잠재 어텐션(MLA)이 키·값을 잠재 벡터로 압축해 캐시를 90% 넘게 줄이는 원리를 정리했다.

긴 문맥의 병목은 KV 캐시였다: 딥시크가 쓴 다중 헤드 잠재 어텐션(MLA) 뜯어보기 영상 대표 이미지

핵심 메시지

  • 트랜스포머는 앞선 토큰의 키와 값을 캐시에 쌓아 두는데, 이 KV 캐시가 문맥 길이에 비례해 늘어나며 GPU 메모리를 잠식한다.
  • 다중 쿼리 어텐션과 그룹 쿼리 어텐션은 키·값을 공유해 캐시를 줄이지만 표현력을 일부 내주는 방식이다.
  • MLA는 키와 값을 저차원 잠재 벡터로 압축해 캐시에는 이 잠재 벡터만 저장하고, 필요할 때 키와 값을 다시 만들어 쓴다.
  • 위치 정보는 압축된 캐시에 굽지 않고, 쿼리 쪽에 회전 위치 인코딩을 적용해 그때그때 계산한다.
  • 영상은 이 방식으로 캐시 크기가 90% 넘게 줄면서도 벤치마크 품질은 떨어지지 않는다고 정리한다.

쉽게 이해하기

긴 대화를 넣을수록 모델이 느려지고 비싸지는 이유를 대부분 '토큰이 많아서'라고 뭉뚱그리지만, 영상은 더 구체적인 범인을 지목한다. 트랜스포머는 이미 처리한 토큰의 키와 값을 일종의 메모장에 적어두는데, 이 KV 캐시가 층마다, 토큰마다 선형으로 불어나 결국 GPU 메모리의 한계에 부딪힌다. 카드가 아무리 커도 긴 대화를 넉넉히 서비스하기 어려운 이유다.

지금까지의 절충안은 키와 값을 공유하는 것이었다. 표준 다중 헤드 어텐션은 헤드마다 자기 키와 값을 갖지만 그만큼 무겁고, 다중 쿼리 어텐션은 여러 헤드가 키·값 한 벌을 함께 쓰며, 그룹 쿼리 어텐션은 그 중간에서 헤드를 묶어 공유한다. 메모리는 줄지만 세밀함과 표현력을 내주는 거래여서, 영상은 이 방식들이 품질로 값을 치른다고 정리한다.

다중 헤드 잠재 어텐션(MLA)의 발상은 공유가 아니라 압축이다. 크고 높은 차원의 키·값 행렬을 그대로 들고 있는 대신, 저랭크 압축을 거쳐 작은 잠재 벡터 묶음으로 줄인다. 모든 방향을 남기지 않고 중요한 방향만 남기는 셈이다. 캐시에는 이 얇은 잠재 표현만 저장하고, 각 헤드가 쓸 키와 값은 필요할 때 잠재 벡터에서 다시 만들어낸다.

여기서 걸리는 것이 위치 정보다. 키를 압축해 버리면 순서를 어떻게 다룰지가 문제인데, MLA는 위치를 캐시에 담지 않는 쪽을 택한다. 캐시에는 위치 정보가 없는 작은 잠재 벡터가 남고, 위치를 반영한 쿼리는 회전 위치 인코딩을 쿼리 경로에 적용해 그때그때 만든다. 압축된 내용과 위치를 아는 쿼리가 어텐션 안에서 만나 위치에 민감한 출력을 되살리는 구조다.

정리하면 한 층의 흐름은 두 갈래다. 시간에 걸쳐 캐시되는 것은 압축된 잠재 벡터 한 줄기뿐이고, 쿼리 쪽은 고차원과 위치 정보를 유지한 채 실행 시점마다 새로 계산된다. 영상은 메모리·지연·품질 세 가지 비교를 통해 MLA가 캐시를 크게 줄이고 지연도 낮추면서, 품질은 손해 보지 않도록 설계됐다고 요약한다.

주요 인사이트

  • KV 캐시는 배치 크기, 문맥 길이, 모델 크기를 동시에 제약한다. 어느 하나를 늘리려면 캐시부터 줄여야 한다는 점에서 서빙 비용의 급소다.
  • 메모리를 줄이는 방식에는 두 갈래가 있다. 키·값을 '공유'하는 MQA·GQA는 품질을 내주고, '압축'하는 MLA는 복원 가능한 표현을 남긴다는 점이 다르다.
  • 캐시에 무엇을 넣지 않을지 정하는 것도 설계다. MLA는 위치 정보를 캐시에서 빼고 쿼리 쪽에서 처리해, 압축의 이득과 긴 문맥의 정확성을 동시에 가져간다.
  • 캐시가 줄어 생긴 여유는 더 긴 문맥으로 쓸 수도, 더 많은 동시 요청으로 쓸 수도 있다. 지연 감소는 그 자체보다 무엇과 교환하느냐가 중요하다.
  • 압축은 손실을 뜻하지만, 저랭크 구조를 잘 고르면 실제로 쓰이는 정보 대부분을 적은 차원으로 담을 수 있다는 것이 MLA가 기대는 전제다.

자주 묻는 질문

KV 캐시가 왜 문제인가?

모델은 이후 토큰이 앞을 참조할 수 있도록 각 토큰의 키와 값을 저장해 둔다. 이 저장량이 문맥 길이와 층 수에 따라 늘어나 GPU 메모리를 채우고, 결국 배치 크기나 문맥 길이를 제한한다.

MLA는 기존 방식과 무엇이 다른가?

다중 쿼리·그룹 쿼리 어텐션이 키와 값을 여러 헤드가 나눠 쓰는 방식이라면, MLA는 키와 값을 저차원 잠재 벡터로 압축해 캐시에는 그것만 두고 실제 키·값은 필요할 때 복원한다.

위치 정보는 어떻게 처리하나?

압축된 잠재 벡터에는 위치를 넣지 않는다. 대신 회전 위치 인코딩을 쿼리 경로에 적용해 위치를 아는 쿼리를 실행 시점에 만들고, 이를 압축된 표현과 함께 어텐션에 넣는다.

품질 손해는 없나?

영상은 MLA가 손실을 감수하는 절충이 아니라 성능을 유지하거나 약간 개선하도록 설계됐다고 설명하며, 일반적인 벤치마크에서 눈에 띄는 품질 저하 없이 캐시를 90% 넘게 줄인다고 정리한다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식