딥시크 +99 강화 트랜스포머 몽둥이, 최강 무기 변신의 비밀!
딥시크, AI 기술의 판도를 바꾸다!
요즘 AI 기술 정말 핫하지? 특히 중국 기업 딥시크가 기존 AI 개발에 드는 수천억 원을 80억 원으로 줄일 수 있다고 발표해서 난리가 났어. 엔비디아 주가가 17%나 떨어지고 미국 주요 기업들이 긴장할 정도라니까!
근데 더 놀라운 건, 딥시크가 이런 기술을 이미 1년 전부터 공개해 왔다는 거야. 경쟁사 모델을 베꼈다거나 개발 비용을 축소해서 발표했다는 말도 있지만, 딥시크는 다른 회사들과 달리 모든 모델 웨이트, 코드, 그리고 12개나 되는 상세한 논문까지 전부 공개했어.
오늘은 그중에서도 핵심인 멀티헤드 레이턴트 어텐션에 대해 알아볼 거야. 이걸 이해하면 요즘 AI의 핵심인 트랜스포머가 어떻게 작동하는지, 그리고 딥시크가 어떻게 트랜스포머 성능을 엄청나게 끌어올렸는지 알게 될 거야. 저장 공간은 57배 줄이고 속도는 6배나 높였다니, 정말 대단하지?
트랜스포머, AI의 핵심 엔진
딥시크 모델도 챗GPT처럼 언어 모델이야. 단어를 하나씩 내뱉고, 그 단어를 다시 입력받아 다음 단어를 예측하는 방식이지. 이때 중요한 게 바로 어텐션 패턴이야. 단어들끼리 얼마나 비슷한지 계산해서 다음 단어를 예측하는 건데, 이게 트랜스포머 모델의 핵심이야. 챗GPT의 GPT도 '제너레이티브 프리트레인드 트랜스포머'의 약자인데, 이 어텐션 패턴으로 작동하는 거야.
트랜스포머는 여러 개의 '헤드'를 가진 '레이어'를 쌓아서 만들어져. 예를 들어 12개의 헤드를 가진 레이어가 12개 쌓이면 총 144개의 어텐션 패턴을 가진 모델이 되는 거지.
어텐션 패턴의 크기는 입력되는 단어 수에 비례해. 만약 '한국 굽기는 검정, 빨강, 그리고'라는 9개의 단어가 입력되면, 어텐션 패턴은 9x9 크기가 돼. 이 패턴은 특정 단어의 정보를 다른 단어로 옮겨주는 나침반 역할을 해. 예를 들어 '국기'와 '한국'의 유사도가 높으면, '한국'의 정보가 '국기' 위치로 흘러가서 '태극기'라는 단어를 만드는 데 도움을 주는 거지.
어텐션 패턴, 어떻게 계산될까?
입력된 문장을 'X'라고 해보자. 각 단어는 여러 숫자로 이루어진 벡터로 표현돼. GPT-2는 768차원, 딥시크 R1은 7,168차원의 벡터를 사용해.
이 'X'는 'WQ'와 'WK'라는 두 개의 행렬과 곱해져서 '쿼리'와 '키'라는 것으로 변환돼. 이때 차원이 768에서 64로 압축되지.
- 쿼리 (Query): 하나의 질문이라고 생각하면 돼.
- 키 (Key): 질문에 대한 답이 될 수 있는 열쇠 같은 거야.
쿼리가 키들에게 "내 위치에 대한 정보 좀 바꿔줄 열쇠 없어?" 하고 물어보면, 적절한 키가 "나야 나!" 하고 손을 드는 거지. 이 과정이 컴퓨터에서는 쿼리와 키의 유사도 계산으로 이루어져. 유사도는 두 벡터를 곱하는 내적 연산으로 계산돼.
이렇게 계산된 모든 쿼리와 키의 유사도를 종합한 게 바로 9x9 크기의 어텐션 패턴이야. 그런데 이 패턴을 전부 다 쓰는 건 아니야. 훈련 과정에서 다음 단어를 미리 알면 안 되니까, 오른쪽 위 부분은 가려놓지. 마지막으로 '소프트맥스'라는 과정을 거치면 어텐션 패턴이 완성돼.
이 어텐션 패턴은 이제 밸류 (Value)라는 정보와 곱해져서 최종 결과물을 만들어. 밸류도 쿼리, 키와 마찬가지로 'X'에 'WV'라는 행렬을 곱해서 만들어져.
하나의 어텐션 패턴을 계산하는 단위를 어텐션 헤드라고 불러. 여러 개의 헤드가 각자 다른 쿼리, 키, 밸류로 변환해서 계산하고, 이 결과들을 합쳐서 다음 레이어로 넘겨주는 거지.
어텐션 패턴의 함정: 엄청난 연산량!
이런 단순한 연산을 반복해서 쌓아 올린 게 요즘 AI의 핵심인데, 문제는 어마어마한 연산량이야. 어텐션 패턴의 크기는 입력 단어 수의 제곱으로 늘어나.
챗GPT는 한 번에 최대 10만 개의 단어를 입력할 수 있는데, 이건 해리포터 책 한 권 분량과 비슷해. 상상해 봐. 책에 있는 모든 단어를 가로세로 표로 꽉 채워서 계산해야 한다고! 이걸 매번 계산하는 건 정말 비효율적이지.
딥시크의 혁신: KV 캐싱과 멀티헤드 레이턴트 어텐션
연구자들은 이 비효율성을 해결하기 위해 노력했어. 단어 하나가 추가될 때마다 어텐션 패턴이 크게 변하지 않는다는 점에 주목했지.
이때 등장한 기술이 바로 KV 캐싱이야. 이전에 계산했던 키와 밸류 값을 저장해 뒀다가 재활용하는 거야. 마치 봉리에 넣어둔 돈이 불어나듯이, KV 캐싱을 사용하면 연산량이 단어 수에 비례해서 선형적으로 증가하게 돼.
하지만 KV 캐싱은 저장 공간 문제를 야기해. 입력 단어 수, 헤드 개수, 벡터 차원 등에 따라 엄청난 양의 데이터를 저장해야 하거든. 10만 개의 단어를 처리하려면 400GB가 필요할 수도 있어!
이 문제를 해결하기 위해 여러 방법이 시도됐어.
- 멀티쿼리 어텐션: 모든 어텐션 헤드가 같은 키 밸류를 공유해서 저장 공간을 줄이는 방식이야. 딥시크 R1에 적용하면 저장 용량을 128배 줄일 수 있지만, 성능도 같이 떨어지는 단점이 있어.
- 그룹별 쿼리 어텐션: 어텐션 헤드를 그룹으로 묶어서 같은 그룹끼리 키 밸류를 공유하는 방식이야. 메타의 라마 3에서 사용했는데, 저장 공간은 아낄 수 있었지만 성능은 여전히 부족했어.
이때 딥시크가 저장 공간과 연산량 두 마리 토끼를 모두 잡는 기가 막힌 방법을 제시했어. 바로 멀티헤드 레이턴트 어텐션이야!
이 방식은 기존 멀티헤드 어텐션에서 키 밸류를 만들기 전에 잠재 공간 (Latent Space)으로 압축하는 단계를 추가해. 모든 어텐션 헤드가 이 잠재 공간을 공유하는 거지.
이게 어떻게 가능하냐고? 마치 곱셈에서 순서를 바꿔도 결과가 같은 것처럼, 딥시크는 쿼리, 키, 밸류를 만드는 함수들을 합쳐서 연산량을 줄였어. 훈련할 때 이렇게 합쳐진 모델로 훈련하기 때문에, 실제로 사용할 때 추가 연산이 필요 없어.
새로운 단어를 입력할 때도 쿼리를 거치지 않고 바로 잠재 공간으로 만들고, 저장해 둔 잠재 공간의 키 밸류를 꺼내 쓰는 거지. 정말 지혜로운 방식이지?
덕분에 딥시크 R1은 토큰당 70KB만 사용해서 저장 공간을 57배나 줄였고, 성능은 오히려 높였어! 또한 알고리즘 개선으로 토큰 생성 속도도 6배 빨라졌다고 하니, 정말 놀라운 발전이야.
앞으로의 AI 기술, 기대해도 좋아!
딥시크의 멀티헤드 레이턴트 어텐션은 어텐션 헤드 간 키 밸류를 어떻게 공유할지 정의하고, 모델이 학습 과정에서 이를 압축하고 최적화하도록 만들어.
매년 수천억 원이 드는 AI 기술 개발에 이런 혁신이 가능하다니, 앞으로 AI 기술이 얼마나 더 발전할지 정말 기대되지 않아? 딥시크의 2024년 논문이나 앞으로 나올 웨이츠랩스 영상도 놓치지 말고, AI의 놀라운 세계를 함께 지켜보자!