AI Engineering/이론

기획자에겐 그림판을, 개발자에겐 메모장을 쥐어줬다 (MHA, MQA, GQA)

마늘냄새폴폴 2026. 9. 24. 20:10

안녕하세요! 조금 자극적인 제목으로 인사드립니다. 저번 포스팅에선 Attention 레이어, 그 중에서도 Q, K, V의 연산 과정 하나에 관한 내용을 포스팅했습니다. 

 

그래서 이전 포스팅을 통해 Q, K, V가 힘을 합쳐 잔차 스트림에 잔차 연결을 통해 의미를 조금씩 붙인다는 것을 알게 되었습니다. 

 

근데 사실 Attention Layer에서 이 작업은 수십개의 작업 중 하나일 뿐입니다. 

 

이번 포스팅에선 여러 Q, K, V가 어떻게 동작하는지 조금 더 넓은 범위에서 알아보도록 하겠습니다. 

 

잔차 연결과 잔차 스트림

이전 포스팅에서부터 이번 도입까지 잔차 연결과 잔차 스트림이라는 얘기가 나오는데 이 개념에 대한 정리부터 짚고 넘어가겠습니다. 

 

잔차 연결과 잔차 스트림은 쉽게 이렇게 이해하셔도 무방합니다. 

  • 잔차 연결 : 더하는 구조 그자체
  • 잔차 스트림 : 더해지는 대상

이게 무슨 말이냐. 

 

LLM 안에는 수십개의 Layer(층)가 있습니다. LLM에 층을 통과하면서 의미가 어떻게 만들어지는지 알아보겠습니다. 

 

예를 들어서 질문에

 

"츤데레 말투로 점심메뉴 추천해줘"

 

이런 질문이 들어왔다고 가정해보죠. 

 

그럼 초반 레이어에선 모델이 이런식으로 반응합니다. 

 

"한국어가 들어왔다"

"점심, 메뉴, 추천 이라는 단어가 보인다"

"내가 추천해줘야되는 입장이다"

 

그리고 중간 레이어에선 문장의 맥락이 잡히고 좀 더 구체적으로 변합니다. 

 

"사용자는 점심 메뉴를 추천받고 싶어한다"

"단순 정보 제공이 아닌 특정 말투를 요구하고있다"

"츤데레처럼 말해야한다"

 

마지막 레이어에선 이제 더 확실해집니다.

 

"추천할 음식 종류를 가져오자"

"츤데레 말투에서는 어떤 말투가 자주 사용되는가"

"딱히 널 위해서 추천하는건 아니지만 으로 시작하는 말투로 말하자"

 

이렇게 점점 모델이 맥락을 잡아가고 글자를 출력합니다. 

 

"딱히 널 위해서 추천하는건 아니지만 오늘 점심은 햄버거를 추천할게..!"

 

물론 당연히 초반레이어에선 글자를 담당하고 중간은 말투를 담당하고 이런건 아닙니다. 그냥 이해를 돕기위해 쉽게 풀어 설명한 것입니다. 

 

다시 잔차 연결과 잔차 스트림으로 돌아오겠습니다. 

 

잔차 연결은 더하는 구조 잔차 스트림은 더해지는 대상이라고 언급했습니다. 

 

위의 예시에서 잔차 스트림이 바로 어떤 언어로 입력이 들어왔고 어떤 말투로 말해야되는지 등의 맥락을 추가한겁니다. 

 

조금 더 단순한 예시를 들면 다음과 같습니다. 

 

Transformer라는 이름의 회사가 있습니다. 이 회사는 각 층에 두개의 핵심 부서가 일을 하고 있습니다. 

 

Attention 부서와 MLP 부서가 바로 그 주인공들입니다. 

 

Attention 부서는 자료조사팀입니다. 어떤 기획안에 대해 필요한 정보가 회사의 다른 문서 어디에 있는지 찾아서 현재 기획안으로 가져오죠. MLP 부서는 분석팀입니다. 현재 기획안에서 모인 정보를 바탕으로 새로운 특징을 찾아내거나 정보를 조합합니다. 

 

어떤 사람이 기획안을 올립니다. 그럼 그 기획안을 첫번째 층의 Attention 부서로 넘깁니다. 그리고 거기서 필요한 정보를 모아서 MLP 부서로 넘깁니다. MLP 부서는 자료조사가 된 기획안에서 새로운 특징을 찾아내고 조합해서 다음층으로 넘깁니다. 

 

이 과정이 바로 잔차 연결과 잔차 스트림을 표현한겁니다. 기획안이 바로 "잔차 스트림(더해지는 대상)", 각 부서에서 더해지는 의견이 "잔차 연결(더해지는 구조)"이 됩니다. 

 

Attention Head

우리는 이전 시간 Attention 연산에서 Q, K, V가 있고 그 연산이 각각 어떤 의미를 가지는지 수식으로 풀어서 알아봤습니다. 

 

이전 포스팅 말미에서도 잠깐 언급했지만 이 Attention 연산은 한번만 이뤄지고 끝나는 것이 아닙니다. Attention Layer 안에는 여러개의 Attention 연산이 동시에 이루어집니다. 그리고 각각의 연산 단위를 Attention Head라고 표현합니다. 

 

그러니까 LLM Transformer 구조에는 여러개의 레이어가 있고 그 레이어 안에서 여러개의 Attention Head가 존재하는 것입니다. 

 

그래서 연구자들은 n번째 레이어의 m번째 헤드라는 뜻으로 (n, m) 이렇게 표현하기도 합니다. 

 

각 헤드들은 모델이 학습되는 과정에서 다음과 같은 특징이 생깁니다. 

  • 앞에 등장한 사람과 대명사를 연결하는 헤드
  • 문장의 주어와 동사를 연결하는 해드
  • 이전에 반복된 토큰을 감지하는 헤드
  • 지시사항을 추출하는 헤드

이렇게 여러 헤드가 다양한 관점에서 정보를 찾아서 처리하도록 합니다. 

 

MHA, MQA, GQA

MHA (Multi Head Attention)

MHA는 각 Query에 해당하는 Key, Value가 존재합니다. 예를 들어서 Q헤드가 8개라면 K도, V도 8개씩 존재합니다. 

 

다시 복습해보면 Q는 뱉어야되는 대상, K/V는 정보를 가지고 있는 대상이었습니다. 이걸 다시 회사에 비유하면 Q는 담당자, K/V는 담당자가 사용할 수 있는 도구로 비유할 수 있습니다. 

 

MHA에선 담당자가 자신에게 꼭 맞는 도구를 가지고 있어서 어떤 일을 받더라도 굉장히 다양한 표현이 가능해집니다. 예를 들어서 어떤 담당자는 개발을 잘하고 어떤 담당자는 기획을 어떤 담당자는 마케팅을, 디자인을, 영업을 잘합니다. 

 

어떤 개발자는 누구는 VSCode, 누구는 IntelliJ, 누구는 Pycharm을 사용한다는 얘기입니다. 각자가 자신에게 맞는 도구를 사용하는것이죠. 

 

그래서 하나의 명령이 떨어지면 굉장히 다양한 담당자와 굉장히 다양한 출력이 생겨서 표현력이 풍부해집니다. 

 

하지만 이 과정에서 문제가 있는데 헤드가 많을수록 K/V의 값을 모두 토큰마다 레이어마다 저장해야됩니다. KV는 VRAM에 저장하고 사용하는데 그럼 엄청나게 많은 메모리가 필요해지고 이건 꽤나 곤란해집니다. 

 

MQA (Multi Query Attention)

MQA에서는 Q는 여러개지만 K/V를 공유합니다. 

 

이 말은 담당자는 여러명인데 다 같은 도구를 쥐어주는 것과 같습니다. 각자에게 필요한 툴이 있을텐데 윈도우 기본 프로그램만 쥐어주는거죠. 

  • 개발자에게 메모장으로 코딩하라고 시키고
  • 디자이너에게 엣지에서 검색한 이미지만 사용하라고 시키고
  • 기획자에게 그림판으로 기획하라고 시키고

이런 대환장 파티가 벌어지고 그렇기에 표현력이 급격히 낮아집니다. 결과물이 개판이 될 수 밖에 없죠. 

 

물론 이렇게 하면 K/V에 대한 부담이 덜어져서 메모리를 획기적으로 줄일 수 있지만 이건 마치 몸무게를 줄이려고 팔다리를 자르는 격입니다. 

 

GQA (Group Query Attention)

GQA는 MHA와 MQA의 중간 형태입니다. 

 

모든 Q가 자신만의 K/V를 가지는 것도 아니고 모든 Q가 하나의 K/V만 가지는 것도 아닌, 회사로 치면 이렇게 바뀌는 것입니다. 

  • 개발자팀이 생겼고 개발팀에겐 VSCode와 DBeaver가 주어졌습니다. 
  • 기획팀이 생겼고 기획팀에겐 피그마가 생겼습니다. 
  • 디자인팀에게는 포토샵이 생겼습니다. 

물론 자신에게 꼭 맞는 도구를 사용할 수는 없지만 그래도 메모장에 코딩하는 것보다는 VSCode로 코딩하는게 20만배정도 나으니까요. 

 

이렇게 GQA는 MHA와 MQA의 절충안으로서 지금까지도 많은 연구자들에게 사랑받는 방법론이 되었습니다. 

 

마치며

이번 포스팅에서는 이전 포스팅에서 다뤘던 Attention 연산을 조금 넓은 범위에서 알아봤고 그 과정에서 생기는 문제들 그리고 해결방안들에 대해서 다뤄봤습니다. 

 

그리고 앞으로도 굉장히 많이 등장하게될 잔차 연결과 잔차 스트림에 대한 내용도 알아봤죠. 

 

잔차 연결과 잔차 스트림에 대한 내용은 추후에 인덕션 헤드라는 개념이 나올 때 아주 요긴하게 사용할 예정입니다. 다음 포스팅은 MLP, 예전에는 FFN이라고 불렸던 그것에 대해서 알아볼 예정입니다. 이것도 굉장히 중요한 내용이니 다음 포스팅도 많은 관심 부탁드립니다!

 

긴 글 읽어주셔서 감사합니다! 오늘도 즐거운 하루 되세요!