Skip to content
입문 NLP

1주차: 차세대 NLP 아키텍처의 이해와 과목 뼈대 공유

차세대 NLP 아키텍처의 이해와 과목 뼈대 공유

□ 첫 주차에 하는 일

  • 이 과목이 15주 동안 어떤 길을 가는지 지도를 펼쳐 본다
  • 오늘 AI의 심장이라 불리는 Transformer가 왜 생겼고, 어디가 아픈지(한계)를 쉬운 예로 이해한다
  • 그 아픈 곳을 고치려고 나온 새 아키텍처(상태공간모델)가 무엇인지 맛본다
새 메시지가 올 때마다 이전 모든 메시지와 연결선이 그물처럼 늘어나는 쪽과, 요약 노트 하나만 다음으로 넘기는 쪽의 비교 일러스트

□ 읽기 안내 - 이 노트의 어디와 이어지나

읽기이 노트에서 다루는 곳먼저 확인할 질문
Attention Is All You Need, Vaswani 외, 2017Query·Key·Value, 어텐션 점수표와 제곱 비용토큰이 늘 때 비교할 칸이 얼마나 늘어나는가
Mamba, Gu·Dao, 2023상태 갱신과 입력에 따른 선택같은 크기의 상태를 유지하면서 무엇을 남기는가
RWKV, Peng 외, 2023병렬 학습과 순차 생성의 구분생성할 때 앞 정보를 어떤 형태로 재사용하는가
Jamba, Lieber 외, 2024어텐션과 상태공간모델의 혼합압축 상태와 직접 참조를 함께 쓰는 이유는 무엇인가
  • 원전은 구조를 확인하는 읽기 자료. 본문의 2차원 벡터와 상태 숫자는 설명용 계산이며 논문의 모델 성능을 재현한 값이 아닌 예시

강의: LLM 발전사와 Transformer의 한계

Section titled “강의: LLM 발전사와 Transformer의 한계”

□ 이 과목의 지도 (뼈대)

  • 15주의 여정은 다섯 마디로 이어진다. 아키텍처(모델의 뼈대) → 적응(남의 모델을 내 용도로, PEFT) → 제어(말을 듣게 하기, 프롬프트·정렬) → 검색 결합(모르는 것을 찾아오기, RAG) → 시스템화(혼자 돌아가게, 에이전트·운영)
  • 앞 마디의 산출물이 다음 마디의 재료다. 순서가 뒤섞이면 실습이 성립하지 않는다
  • 이번 주는 첫 마디인 아키텍처의 출발점이다

□ 언어모델이란 - “다음 단어 맞히기” 게임

  • 언어모델(language model)이 하는 일은 생각보다 단순하다. 앞에 나온 글을 보고, 다음에 올 단어가 무엇일지 확률로 맞힌다
  • 빈칸 채우기 문제를 떠올리면 된다. “제주도의 특산물은 ___” 이라는 문장이 있을 때, 사람은 머릿속에서 자연스럽게 후보를 떠올린다. 감귤이 가장 먼저, 그다음 흑돼지나 전복 정도가 떠오른다
  • 언어모델도 똑같이 후보마다 점수를 매긴다. 아래 표는 설명용 예시 숫자다 (실제 모델의 값이 아니다)
빈칸이 뚫린 문장 띠 앞에서, 크기가 다른 퍼즐 조각(가장 큰 감귤, 작은 전복과 흑돼지, 아주 작은 구름) 중 무엇이 들어갈지 고르는 학생 일러스트
다음 단어 후보확률 (설명용 예시)뜻
감귤0.6210번 뽑으면 6번 정도
흑돼지0.1810번 중 2번 정도
전복0.1210번 중 1번 정도
그 밖의 단어 전부0.08가끔
  • 확률을 모두 더하면 1이 된다. “무조건 감귤”이 아니라 “감귤일 가능성이 가장 크다”는 뜻이다
  • 대화형 AI에 같은 질문을 여러 번 넣으면 답이 조금씩 달라지는 이유가 여기 있다. 매번 이 확률표에서 주사위를 굴리듯 뽑기(샘플링) 때문이다. 가장 높은 것만 고르게 설정하면 답이 매번 같아진다
  • 문장 전체는 이 게임을 반복해서 만든다. “제주도의 특산물은” → “감귤” → “이다” → ”.” 처럼 한 단어를 고르면 그것을 붙여 다시 다음 단어를 맞힌다. 이 반복이 생성(generation)이다

□ 토큰 - 모델이 실제로 읽는 글자 조각

  • 앞에서 “단어”라고 했지만, 모델은 정확히는 토큰(token)이라는 조각 단위로 읽는다. 토큰은 단어일 수도, 단어의 일부일 수도, 문장부호 하나일 수도 있다
  • 예를 들면 “제주바다가 예쁘다” 는 “제주 / 바다 / 가 / 예쁘 / 다” 처럼 쪼개질 수 있다 (설명용 예시, 실제 조각은 토크나이저마다 다르다)
  • 모델이 보는 것은 글자가 아니라 이 조각들의 번호다. 글자를 조각내고 번호를 붙이는 부품이 토크나이저이며, 2주차에 제주 방언으로 직접 실측한다
  • 이 과목에서 “길이”, “비용”을 말할 때 단위는 모두 토큰이다. 토큰 수가 곧 계산량과 돈이라는 감각을 첫 주부터 가져간다

□ LLM까지 오는 길 (발전사)

  • 컴퓨터에게 언어를 가르치는 일은 오래됐다. 방식이 바뀔 때마다 앞 방식의 약점 하나를 고쳤고, 그러면서 새 약점이 생겼다. 이 흐름을 알면 “왜 지금 이런 구조인가”가 보인다
단어 세기, n-gram, RNN과 LSTM, Transformer, 대규모 언어모델로 이어지는 발전 흐름과, 각 단계 아래에 순서를 모름, 멀리 못 봄, 잊고 느림, 제곱 비용이라는 남은 문제를 연결한 흐름도
  • 단어 세기: 글에 어떤 단어가 몇 번 나왔는지만 센다. 스팸 메일 거르기 같은 일에는 쓸 만했다. 하지만 “개가 사람을 물었다”와 “사람이 개를 물었다”는 나온 단어가 똑같아서 구별하지 못한다. 순서 정보가 사라지기 때문이다
  • n-gram: 바로 앞 단어 몇 개(n-1개)만 보고 다음 단어를 맞힌다. “제주도의 특산물은” 다음을 맞힐 때 앞 두세 단어만 참고하는 식이다. 순서는 조금 알게 됐지만, 창문이 좁아서 멀리 떨어진 단어와의 관계를 못 본다
  • RNN(순환신경망)과 그 개량형 LSTM: 문장을 앞에서부터 한 단어씩 읽으며 기억을 다음 칸으로 넘긴다. 사람이 책을 소리 내어 읽는 것과 비슷하다. 원리상 멀리까지 볼 수 있지만, 긴 문장에서는 앞부분이 흐려지고, 한 단어가 끝나야 다음 단어로 넘어가서 느리다
  • 2017년 Transformer(arXiv:1706.03762, “Attention Is All You Need”)가 판을 바꿨다. 순서대로 읽지 않고 문장 전체를 한 번에 병렬로 처리한다. 멀리 있는 단어도 한 번에 직접 쳐다본다. 학습 속도가 폭발적으로 빨라졌고, 오늘의 LLM 시대가 열렸다
  • 이후 모델은 눈에 띄게 커졌다. 크기(파라미터 수)와 데이터를 키울수록 성능이 좋아진다는 것이 확인됐고, 지금 우리가 쓰는 대화형 AI가 됐다
  • 그런데 Transformer도 공짜가 아니다. 모든 단어가 모든 단어를 쳐다보는 대가로 제곱 비용이 생겼다. 이번 주의 나머지는 이 비용 이야기다

□ 어텐션이란 무엇인가 (비유)

  • 어텐션(attention)은 “지금 이 단어를 이해할 때 문장 안의 다른 단어들을 얼마나 쳐다볼지 정하는 장치”다
  • 비유: 교실에서 발표를 하는데, 매 문장마다 반 친구 전원과 한 번씩 눈을 맞춰야 다음 문장으로 넘어갈 수 있다고 하자. 친구가 30명이면 매 문장 30번, 300명이면 300번의 눈맞춤이 필요하다
  • 더 정확히는, 눈맞춤은 나 혼자 하는 것이 아니라 모두가 모두와 한다. 친구가 30명이면 30 x 30 = 900쌍, 300명이면 300 x 300 = 90,000쌍이다
  • 숫자로 확인한다. 토큰(단어 조각)이 100개면 어텐션은 100 x 100 = 10,000쌍을 계산한다. 토큰이 1,000개면 1,000 x 1,000 = 1,000,000쌍이다. 토큰이 10배 늘었는데 계산은 100배가 늘었다
시퀀스 길이가 늘수록 어텐션 계산량은 제곱 곡선으로, 상태공간모델은 직선으로 늘어나는 비교 그래프
  • 이처럼 어텐션의 계산량과 메모리는 시퀀스 길이의 제곱(O(n^2)) 으로 늘어난다. 짧은 문장에서는 문제없지만, 책 한 권 분량의 긴 문맥을 넣으면 비용이 급격히 치솟는다
  • “제곱으로 늘어난다”는 말이 실감이 나야 한다. 입력이 10배면 어텐션 부분의 비용은 100배, 입력이 100배면 10,000배다. 회사가 문서를 통째로 AI에 넣고 싶을 때 바로 여기서 돈과 시간이 새어 나간다

□ 어텐션을 한 단계씩 따라가기 (도서관 비유)

  • 어텐션 안에서는 토큰마다 세 가지 역할의 숫자 묶음을 만든다. 도서관에서 책을 찾는 장면으로 이해하면 쉽다
  • Query(질문): 내가 들고 온 질문 쪽지. “지금 이 단어를 이해하려면 무엇이 필요한가”
  • Key(책등 제목): 서가에 꽂힌 책마다 붙은 제목표. “나는 이런 내용을 담고 있다”
  • Value(책 내용): 실제로 펼쳐서 가져올 내용
  • 계산 순서는 네 단계다
  • 1단계, 점수 매기기: 내 질문 쪽지와 모든 책의 제목표가 얼마나 잘 맞는지 점수를 낸다. 잘 맞으면 큰 수, 관계없으면 작은 수다 (수학으로는 두 숫자 묶음의 내적)
  • 2단계, 비율로 바꾸기: 점수들을 합이 1인 비율로 바꾼다. 이 변환이 softmax다
  • 3단계, 섞기: 비율만큼 각 책의 내용(Value)을 덜어 와서 섞는다. 비율이 0.33인 책은 내용을 33%만큼 가져온다
  • 4단계, 모든 토큰이 반복: 문장의 모든 토큰이 각자 질문 쪽지를 들고 1~3단계를 한다. 토큰이 n개면 점수표는 n x n 칸이 된다. 제곱 비용의 정체가 바로 이 표다

○ softmax를 숫자로 보기

  • 수식보다 숫자가 먼저다. 점수가 [2, 1, 0]인 세 후보가 있다고 하자
  • 각 점수에 e(약 2.718)의 거듭제곱을 씌운다. e^2 = 7.39, e^1 = 2.72, e^0 = 1.00. 합은 11.11
  • 각각을 합으로 나눈다. 7.39 / 11.11 = 0.67, 2.72 / 11.11 = 0.24, 1.00 / 11.11 = 0.09. 더하면 1이다
  • 한 줄 수식으로는 softmax(s_i) = e^(s_i) / (e^(s_1) + e^(s_2) + ... + e^(s_n)) 이다. 점수 차이가 1밖에 안 났는데 비율은 0.67 대 0.24로 크게 벌어진다. 큰 점수를 더 크게 만드는 성질이 있어서 “가장 관련 있는 것에 집중”하게 된다

○ 4토큰 문장으로 직접 계산해 보기 (설명용 예시)

  • 문장 “혼저 옵서예 제주 바다”의 네 토큰에 설명용으로 정한 2칸짜리 숫자 묶음을 준다. 혼저 [1.0, 0.0], 옵서예 [0.9, 0.3], 제주 [0.2, 1.0], 바다 [0.1, 0.9]. 첫째 칸은 “인사말다움”, 둘째 칸은 “장소다움” 정도로 생각하면 된다
  • 계산을 단순하게 하려고 Query와 Key를 이 숫자 묶음 그대로 쓴다. 점수는 내적을 √2(칸 수 2의 제곱근)로 나눈 값이다
  • “혼저”의 줄을 손으로 계산해 보자. 혼저·혼저 = (1.0 x 1.0 + 0.0 x 0.0) / 1.41 = 0.71, 혼저·옵서예 = (1.0 x 0.9 + 0.0 x 0.3) / 1.41 = 0.64, 혼저·제주 = (1.0 x 0.2 + 0.0 x 1.0) / 1.41 = 0.14, 혼저·바다 = 0.1 / 1.41 = 0.07
  • 이 네 점수를 softmax에 넣으면 0.33, 0.31, 0.19, 0.17이 나온다. “혼저”는 자기 자신과 짝꿍 인사말 “옵서예”를 가장 많이 쳐다보고, 장소 단어는 덜 쳐다본다
  • 네 줄을 모두 계산하면 아래 4 x 4 표가 된다. 칸 수는 4 x 4 = 16이다
혼저, 옵서예, 제주, 바다 네 토큰이 서로를 얼마나 쳐다보는지 나타낸 4 곱하기 4 어텐션 가중치 표. 혼저 줄은 0.33, 0.31, 0.19, 0.17이고 각 줄의 합은 1
  • 표를 읽는 법: 가로줄 하나가 “그 단어가 이해를 위해 누구를 얼마나 참고했나”다. 인사말끼리(왼쪽 위), 장소끼리(오른쪽 아래) 진한 칸이 모여 있다. 실제 모델에서는 이 숫자 묶음을 학습으로 만들고, 숫자 묶음의 길이(차원)도 수백 개가 넘는다

○ 표 한 장이 차지하는 메모리

  • 점수표의 칸 하나를 32비트 실수(float32)로 저장한다고 하자. 32비트는 4바이트다. 그래서 표 한 장의 메모리는 n x n x 4바이트다
  • 스크립트로 계산한 값이다 (1헤드·1층 기준. 1MiB = 1,048,576바이트)
토큰 수 n칸 수 (n x n)표 한 장 메모리
12816,3840.06 MiB
512262,1441.00 MiB
1,0241,048,5764.00 MiB
2,0484,194,30416.00 MiB
4,09616,777,21664.00 MiB
8,19267,108,864256.00 MiB
토큰 수가 128, 512, 1024, 2048, 4096, 8192로 늘 때 어텐션 표 한 장의 메모리가 0.06, 1, 4, 16, 64, 256 MiB로 늘어나는 막대그래프
  • 토큰이 2배가 될 때마다 메모리는 4배다. 표 한 장은 작아 보여도 모델에는 층과 헤드(한 층 안의 여러 어텐션)가 여러 개 있다
  • 12층, 층마다 12헤드인 모델에 문장 1개를 넣는다고 가정하면 표는 12 x 12 = 144장이다. n = 4,096이면 64MiB x 144 = 약 9GiB, n = 8,192면 약 36GiB다. 표를 모두 저장한다면 이만큼이 필요하다는 뜻이며, 이 저장을 피하는 기법을 2주차 대면에서 다룬다

□ Transformer의 한계 정리

  • 비용: 위에서 본 제곱 증가. 긴 문맥일수록 GPU 메모리와 시간이 급증한다
  • 속도: 글을 생성할 때 한 토큰씩 만들면서 앞의 내용을 계속 참조한다. 문맥이 길수록 한 토큰 만드는 데 드는 시간도 늘어난다
  • 생성 속도를 조금 더 들여다보자. 새 토큰 하나를 만들 때마다 앞의 모든 토큰을 다시 쳐다봐야 한다. 매번 처음부터 계산하면 낭비라서, 앞 토큰들의 Key와 Value를 메모장에 적어 두고 재사용한다 (KV 캐시)
  • 메모장 덕분에 계산은 줄지만, 메모장 자체가 토큰 수만큼 계속 길어진다. 긴 대화나 긴 문서를 다룰수록 메모리를 계속 차지한다. 대화가 길어질수록 AI 서비스가 비싸지고 느려지는 이유 중 하나다
  • 이 한계를 극복하려는 대표적인 시도는 두 갈래다. 어텐션을 더 빠르게 계산하는 길(2주차 대면에서 FlashAttention으로 다룬다)과, 어텐션 자체를 바꾸는 길(오늘 대면에서 볼 상태공간모델)이다
  • 설계도 §뼈대의 개념 위계(위의 다섯 마디)를 보고, 자신이 아는 마디와 모르는 마디를 표시하는 사전 진단을 한다
  • 정답을 맞추는 활동이 아니다. 학기 말에 같은 진단을 다시 해서 얼마나 자랐는지 비교하는 기준선이다

Q1 문제 정의 - 이 과목이 다루는 현장 문제

Section titled “Q1 문제 정의 - 이 과목이 다루는 현장 문제”
  • 이 과목은 “모델을 처음부터 만드는 법”이 아니라, 이미 있는 모델을 우리 현장 문제에 맞게 다루는 법을 배운다
  • 각자 진로 맥락에서 현장 문제를 하나씩 지목한다. 예: 관광 안내 다국어 응대, 도내 기업 문서 검색, 학교 행정 문의 자동 답변
  • 이 문제가 학기 전체 실습의 재료가 된다. 남의 예제가 아니라 내 문제로 배운다

□ 어텐션 말고 다른 길은 없을까

  • 어텐션은 매번 “모두와 눈맞춤”을 한다. 그런데 사람은 긴 글을 읽을 때 앞 문장을 매번 다시 보지 않는다. 머릿속에 요약해 두고 그 요약만 들고 앞으로 나간다
  • 상태공간모델(State Space Model, SSM)은 이 방식이다. 지금까지 읽은 내용을 상태(state)라는 작은 요약본에 압축해 들고 가면서, 새 토큰이 올 때마다 요약본만 갱신한다
  • 토큰이 늘어도 요약본 크기는 그대로다. 그래서 계산량이 토큰 수에 비례하여(선형, O(n)) 늘어난다. 제곱이 아니다
모든 토큰이 서로 연결되는 풀 어텐션과, 앞 내용을 상태 하나에 압축해 넘기는 상태공간모델의 정보 흐름 비교 다이어그램

□ 요약본 갱신을 숫자로 따라가기 (설명용 예시)

  • 상태공간모델의 핵심 규칙을 아주 단순하게 줄이면 한 줄이다. 새 요약본 h = a x 옛 요약본 h + b x 새 입력 x
  • a는 옛 기억을 얼마나 남길지, b는 새 입력을 얼마나 받아들일지다. a = 0.5, b = 1로 정하고, 입력 x가 2, 0, 4, 1 순서로 들어온다고 하자. 처음 요약본은 0이다
시점입력 x계산요약본 h
120.5 x 0 + 22
200.5 x 2 + 01
340.5 x 1 + 44.5
410.5 x 4.5 + 13.25
  • 확인할 점이 두 가지다. 첫째, 토큰이 몇 개가 되든 들고 다니는 것은 숫자 h 하나(실제로는 작은 묶음 하나)뿐이다. 둘째, 한 걸음마다 계산은 곱하기 두 번, 더하기 한 번이다. 토큰이 n개면 계산도 n번이다. 이것이 선형(O(n))의 뜻이다
  • 대신 약점도 보인다. 시점 2에서 입력이 0(의미 없는 토큰이라고 하자)이었는데도 요약본이 2에서 1로 절반이 날아갔다. 규칙이 입력과 상관없이 늘 같아서, 쓸모없는 토큰이 와도 옛 기억을 깎는다

□ 대표 주자 두 개

  • Mamba(arXiv:2312.00752): 상태공간모델에 “선택”을 얹었다. 새 토큰이 들어올 때 무엇을 요약본에 남기고 무엇을 버릴지를 입력에 따라 정한다. 중요한 정보가 긴 문맥에서도 덜 희석된다
  • 위의 예로 “선택”을 흉내 내 보자. 규칙을 “입력이 0이면 a = 1, b = 0으로 요약본을 그대로 두고, 아니면 a = 0.5, b = 1”로 바꾼다. 그러면 요약본은 2 → 2 → 0.5 x 2 + 4 = 5 → 0.5 x 5 + 1 = 3.5가 된다. 쓸모없는 토큰에서 기억을 잃지 않았다
  • 실제 Mamba는 이 a, b 같은 값을 사람이 정한 규칙이 아니라 입력을 보고 계산하도록 학습한다. 원리는 위의 흉내와 같다. “지금 들어온 것이 중요하면 적고, 아니면 흘려보낸다”
입력 2, 0, 4, 1이 들어올 때 고정 규칙의 요약본은 2, 1, 4.5, 3.25로, 입력이 0이면 요약본을 유지하는 선택 규칙은 2, 2, 5, 3.5로 변하는 비교 선 그래프
  • RWKV(arXiv:2305.13048): RNN처럼 순서대로 처리해 추론이 가볍고 선형이면서도, 학습은 Transformer처럼 병렬로 할 수 있게 설계했다. 이름은 핵심 요소 네 가지(Receptance, Weight, Key, Value)의 머리글자이고, 논문 제목이 “Transformer 시대를 위한 RNN의 재발명”이다. 엄밀히는 상태공간모델이 아니라 선형 어텐션 계열의 RNN이지만, 요약본을 들고 앞으로 나간다는 점이 같아 함께 본다
  • RWKV가 노린 것은 두 마리 토끼다. 학습할 때는 문장 전체를 한꺼번에 계산해 빠르게 배우고, 글을 만들 때는 요약본 하나만 들고 한 토큰씩 가볍게 나아간다. 생성할 때 메모장이 길어지지 않는다는 점이 어텐션과 가장 크게 다르다

□ 정확한 위치 잡기

  • 상태공간모델은 어텐션을 완전히 대체하지 못했다. 정확한 비교·참조가 필요한 과제에서는 어텐션이 여전히 강하다
  • 이유는 요약본 비유에 이미 들어 있다. 요약은 압축이라 세부가 빠진다. “3쪽 둘째 줄의 전화번호를 그대로 옮겨 적어라” 같은 일은 원문을 다시 펼쳐 보는 어텐션이 유리하다
  • 실제 최신 모델들은 둘을 섞은 혼합형도 많다. 예를 들어 Jamba(arXiv:2403.19887)는 Mamba 층 여러 개 사이에 Transformer 층을 섞어 넣어 두 방식의 장점을 함께 노렸다. 중요한 것은 어느 한쪽이 아니라, 비용 구조가 다르다는 사실과 그 차이가 언제 문제가 되는지 아는 것이다
비교 항목어텐션 (Transformer)상태공간모델 (Mamba 등)
읽는 방식모든 토큰이 모든 토큰을 직접 쳐다봄요약본 하나를 갱신하며 앞으로 나감
계산량토큰 수의 제곱, O(n^2)토큰 수에 비례, O(n)
생성할 때 메모리앞 토큰 메모장(KV 캐시)이 계속 길어짐요약본 크기가 고정
강한 일정확한 참조, 원문 그대로 옮기기아주 긴 입력을 싸게 훑기
약한 일긴 입력의 비용세부를 정확히 되찾기
  • 이것이 1주차의 핵심이다: “토큰이 늘면 돈과 시간이 어디서, 얼마나 빨리 새는가”를 구조로 설명할 수 있어야 한다
  • 1주차부터 제공 노트북을 Colab에서 실행. 라이브러리 설치 셀 제공, 인터넷 연결과 계정 로그인 필요
  • 오늘은 저장소·강의 사이트 구조 확인, CPU 어텐션 실행, 시퀀스 길이 한 값 변경
  • 과제 제출 안내의 웹 업로드 절차로 assignments/week-01/<학번>/ 제출 연습. 첫 평가 과제 전 계정·fork·PR 흐름 확인, 이름·연락처 없이 학번만 사용

[이론] 어텐션의 O(n^2) 비용이 어디서 나오는지 작은 행렬 그림으로 확인하고, 상태공간모델이 선형 복잡도를 얻는 구조적 근거 확인. 토큰 4개짜리 문장으로 4 x 4 표를 직접 그려 보고, 토큰이 하나 늘 때 칸이 몇 개 느는지 세어 본다 (4개 → 16칸, 5개 → 25칸, 1개 늘 때 9칸 증가)

[구현] 동작하는 어텐션 계산 코드를 받아 실행하고, 시퀀스 길이만 바꿔가며 메모리·연산량이 어떻게 늘어나는지 표로 확인. 시퀀스 길이 한 값만 변경하고 출력 숫자를 읽는 연습. 어텐션 골격 직접 작성 없음

○ 미리 보기: 이런 코드를 실행하게 된다

import numpy as np
for n in [128, 512, 1024, 2048, 4096]:
scores = np.zeros((n, n), dtype=np.float32) # n x n 점수표 한 장
print(n, scores.size, scores.nbytes / 2**20, "MiB")
  • 한 줄씩 읽어 보자. np.zeros((n, n))은 n x n 칸짜리 빈 표를 만든다. scores.size는 칸 수, scores.nbytes는 그 표가 차지하는 바이트 수다. 2**20(1,048,576)으로 나누면 MiB 단위가 된다
  • 출력의 마지막 줄은 4096 16777216 64.0 MiB다. 위의 메모리 표와 같은 숫자가 나오는지 확인한다
  • 읽는 요령: n이 2배가 될 때 칸 수와 메모리가 4배가 되는지 앞뒤 줄을 나눠 본다. 512 → 1,024에서 1.00 → 4.00, 2,048 → 4,096에서 16.00 → 64.00이다

[실무] 제주 관광·서비스 사업자가 다국어 응대를 붙인다고 할 때, 지연과 비용이 시퀀스 길이의 어디에서 발생하는지 지목. 전용 GPU가 없는 도내 소규모 조직 조건을 상정하고, 제공된 비용·지연 표에 실측값을 채워 어느 규모까지 감당 가능한지 판단. “고객 문의가 짧으면 싸고, 관광 가이드처럼 긴 문서를 넣으면 비싸진다”를 숫자로 보이는 것이 목표다

○ 한 줄 채워 보기 (계산 예)

  • 상황 A, 짧은 고객 문의: “렌터카 반납 장소가 어디인가요” 수준의 질문과 답을 합쳐 약 100토큰이라고 하자. 어텐션 점수표는 100 x 100 = 10,000칸이다
  • 상황 B, 관광 가이드 문서를 함께 넣은 질문: 문서와 질문을 합쳐 약 2,000토큰이라고 하자. 점수표는 2,000 x 2,000 = 4,000,000칸이다
  • 토큰은 20배(100 → 2,000)인데 점수표는 4,000,000 / 10,000 = 400배다. 반면 토큰 수에 비례하는 나머지 계산(층마다의 행렬 곱셈 등)은 20배로 늘어난다. 둘을 나눠 적는 것이 요령이다. 표의 “어텐션 계산량” 칸에는 이 배수를, “메모리”와 “지연” 칸에는 실습 코드로 잰 실측값을 적는다
  • 판단 문장의 예: “짧은 문의 위주라면 작은 장비로도 감당 가능하다. 문서를 통째로 넣는 기능은 토큰 수를 줄이는 방법(필요한 부분만 찾아 넣기, 이후 RAG 주차)이 없으면 어텐션 계산이 400배로 뛴다”
  • 실습 연결: 위 100·2,000토큰은 상정 계산 예. 노트북은 고정 제주 문서의 문자 위치 수를 작은 범위에서 비교하며 실제 언어모델 토큰 수·전체 서비스 지연을 재현하지 않는 실험
  • 노트북 표에서 이론 MAC·점수표 바이트, 실제 텐서 저장 바이트·CPU 시간, 작성 가정 단가 비용, 미측정 peak 메모리·실제 비용을 별도 판정
Q1. 언어모델은 문장의 뜻을 사람처럼 이해하는 것인가?

이 과목에서는 그 질문에 답하지 않고 작동 방식만 본다. 작동 방식은 “앞 토큰을 보고 다음 토큰의 확률을 계산한다”이다. 뜻을 이해한 것처럼 보이는 행동이 이 계산의 반복에서 나온다는 것까지가 1주차의 범위다.

Q2. 제곱 비용이면 Transformer는 긴 글을 아예 못 다루는가?

다룰 수는 있다. 다만 길이에 비해 비용이 빠르게 늘어난다는 뜻이다. 그래서 계산을 더 영리하게 하거나(2주차 FlashAttention), 구조를 바꾸거나(상태공간모델), 필요한 부분만 골라 넣는(이후 RAG) 방법이 함께 발전했다.

Q3. 상태공간모델이 선형이라니, 어텐션은 이제 필요 없는 것인가?

아니다. 요약본은 압축이라 세부를 정확히 되찾는 일에 약하다. 그래서 둘을 섞는 혼합형이 나온다. 어느 쪽이 이겼나가 아니라, 어느 비용 구조가 내 문제에 맞나를 묻는다.

Q4. 같은 질문에 답이 달라지면 모델이 고장 난 것인가?

고장이 아니다. 확률표에서 뽑기 때문에 생기는 정상 동작이다. 가장 높은 확률만 고르도록 설정하면 답이 고정된다. 서비스를 만들 때는 “매번 같은 답이 필요한가, 다양한 답이 좋은가”를 먼저 정한다.

  1. 토큰이 300개인 문장의 어텐션 점수표는 몇 칸인가?
  2. 토큰 수가 1,024에서 4,096으로 늘면 점수표 한 장의 메모리는 몇 배가 되는가?
  3. 점수 [2, 1, 0]을 softmax에 넣은 결과에서 가장 큰 값은 약 얼마인가?
  4. 요약본 규칙 h = 0.5h + x에서 입력이 3, 1 순서로 들어오면 (처음 h = 0) 마지막 h는 얼마인가?
  5. “3쪽에 적힌 예약 번호를 그대로 알려 줘”라는 과제에는 어텐션과 상태공간모델 중 무엇이 더 유리하다고 볼 수 있고, 그 이유는 무엇인가?
정답 보기
  1. 300 x 300 = 90,000칸
  2. 토큰이 4배이므로 메모리는 4 x 4 = 16배 (4.00MiB → 64.00MiB)
  3. 약 0.67
  4. 0.5 x 0 + 3 = 3, 이어서 0.5 x 3 + 1 = 2.5
  5. 어텐션. 원문 토큰을 직접 다시 쳐다볼 수 있어서 세부를 정확히 옮기기 쉽다. 요약본은 압축이라 번호 같은 세부가 흐려질 수 있다
용어한 줄 뜻
언어모델앞의 글을 보고 다음 토큰의 확률을 계산하는 모델
토큰모델이 읽는 글자 조각. 길이와 비용의 단위
샘플링확률표에서 다음 토큰을 뽑는 일. 답이 매번 달라지는 이유
어텐션각 토큰이 다른 토큰을 얼마나 참고할지 정해 정보를 섞는 장치
Query / Key / Value질문 쪽지 / 책등 제목 / 책 내용에 해당하는 세 역할
softmax점수들을 합이 1인 비율로 바꾸는 계산
O(n^2) / O(n)토큰 수의 제곱으로 / 비례해서 늘어나는 비용
KV 캐시생성 중 앞 토큰의 Key·Value를 적어 두는 메모장
상태공간모델 (SSM)요약본(상태) 하나를 갱신하며 읽는 구조
선택 (selection)입력에 따라 무엇을 요약본에 남길지 정하는 Mamba의 아이디어
혼합형어텐션 층과 상태공간모델 층을 섞은 구조

Open In Colab

  • 제주 공개 문서 고정 판의 문자 입력으로 제공된 PyTorch 어텐션을 CPU에서 실행
  • 변경 지점: 시퀀스 길이 한 값. 기본 상태로도 끝까지 실행 가능한 골격
  • 길이별 점수표 이론 바이트·실제 텐서 저장 바이트·QK와 AV의 MAC·CPU 시간 비교
  • 가정 단가 0.02원/CPU초의 비용 시나리오 계산. 실제 가격·청구액과 분리
  • 점수표 한 장의 메모리와 전체 peak 메모리 구분. GPU 지연·실제 서비스 비용 미측정
  • 노트북 말미의 비교·해석 표와 assignments/week-01/<학번>/ 경로로 제출 절차 연습. 실제 제출 방식·기한은 수업 공지 확인