LLM 학습과 추론 원리 — 프롬프트·RAG·파인튜닝을 언제 쓰나
이 노드가 답하려는 질문 하나. 어떤 문제를 만났을 때, 그걸 프롬프트로 풀지 · RAG로 풀지 · 파인튜닝까지 갈지 — 그 판단 기준은 무엇인가.
원 강의가 세운 목표가 정확히 이것이다. 결론(3장)만 봐도 되지만, 왜 그 기준이 그렇게 나오는지는 1·2장을 거쳐야 납득이 된다.
출처는 비개발자 15명을 앉혀놓고 칠판에 판서하며 진행한 대면 강의다. 수식 없이 비유로 끌고 가고, 질의응답이 전체의 3분의 1쯤 된다. 관련 용어 정리는 모델구조·학습방법에 이미 있고, 이 노드는 그 조각들이 어떤 순서로 이어지는지를 채운다.
0. 왜 원리를 알아야 하나
강사가 기술 설명보다 먼저 시간을 쓴 대목이고, 사실상 이 강의의 본론이다.
- “학습시키죠”라는 말이 회의에서 오갈 때, 그게 무엇을 가리키는 말인지 분별이 서는 것. 프리트레인인지 파인튜닝인지 RAG인지, 말하는 쪽도 모르는 채 오가는 경우가 많다.
- 하네스·루프 엔지니어링·그래프 엔지니어링 — 새 용어가 나올 때마다 놀라서 쫓아가는 상태에서 벗어나는 것. **“이거 여기서 안 벗어나요”**가 강사의 표현이다. 새 기법은 대부분 토큰 시퀀스에 무엇을 어떻게 넣느냐의 변주다.
- 상대가 틀린 얘기를 할 때 굳이 교정하지 않되, 속으로 중심을 잡는 체력.
1. 모델은 어떻게 만들어지는가
코퍼스 → 토큰
코퍼스는 인터넷 공개 텍스트를 긁어모은 글뭉치다. 규모는 15조 바이트 급으로 언급된다. 블로그·홈페이지·SNS·깃허브 코드까지 전부 “쓰여 있는 문자”라는 점에서 같은 재료다.
여기서 토큰이 나오는 과정:
- 모든 글자는 UTF-8로 인코딩된다. 한글 한 글자는 8비트 세 뭉치.
- 그러면 어떤 글이든 **숫자의 나열(시퀀스)**로 바꿀 수 있다.
- 그 나열에서 반복되는 조합을 압축한다. JPG가 반복 패턴을 묶어 용량을 줄이는 것과 같은 발상이다.
- 압축 결과로 만들어진 심볼 목록이 단어집(vocabulary), 그 원소 하나하나가 토큰이다.
🔴 토큰은 단어 하나가 아니다. 압축 알고리즘의 산물이라, 모델마다 단어집이 다르고 그래서 같은 문장도 모델마다 토큰 수가 다르게 세어진다. 틱토크나이저 같은 도구에서 토큰 경계가 이상하게 끊기는 이유가 이것이다.
단어집 크기는 보통 15만 개 안팎. 단어집이 커진다고 성능이 좋아지지는 않는다 — 압축 심볼 개수일 뿐이라는 것이 질의응답에서 확인된다.
학습 = 가리고 맞히기의 무한 반복
- 문장 끝 토큰을 하나 가린다.
- 신경망에 “여기 올 토큰”을 단어집 전체에 대해 확률 순위로 내놓게 한다.
- 학습 단계에서는 정답을 알고 있다. 틀렸다고 알려준다.
- “무엇을 잘못했는지” 뒤로 되짚어 설정값을 조정한다 — 역전파.
- 이걸 무수히 반복한다.
이 설정값 뭉치를 강사는 DJ 턴테이블에 비유한다. 노브를 돌려 결과를 조절하는 판. 이 판이 파라미터고, 각 노브의 값이 가중치다. 70B 모델이면 노브가 700억 개다.
🔴 세탁기 비유 (혼동 최다 지점). 토큰 = 세탁물(오늘 넣을 빨래), 파라미터 = 세탁 코스(설정 버튼). 둘은 서로 상관없다. 토큰이 많다고 파라미터가 세밀해지는 게 아니다.
학습이 끝나는 시점은 “정답이 나올 때”가 아니다. 정답은 평생 안 나온다. 틀린 정도(로스)를 최소화하다가 더 이상 줄지 않는 구간에서 멈춘다. AI 학습은 로스를 줄이는 게임이지 정답을 맞히는 게임이 아니다.
프리트레인 → 베이스 모델 → 포스트트레인
여기까지가 프리트레인이고 결과물은 베이스 모델이다. 그런데 이건 아직 우리가 쓰는 모델이 아니다.
베이스 모델은 다음 토큰은 잘 맞히지만 TPO(Time·Place·Occasion)가 없다. 눈치가 없다는 뜻이다. 코딩 요청에는 코딩답게, 보고서 요청에는 보고서답게 형식을 갖춰 답해야 사람이 쓸 수 있는데, 그 사회화가 안 된 상태다.
그래서 포스트트레인을 붙인다. 파인튜닝(질의응답 세트로 응답 형식을 학습), 강화학습(리워드를 설계해 세대를 거치며 학습) 등이 여기 들어간다.
여기가 레시피의 영역이다. 무엇을 어떤 순서로 얼마나 섞었는지가 곧 그 모델의 브랜드가 된다. 벤치마크 성적이 모델마다 들쭉날쭉한 이유, 프리트레인을 직접 돌릴 수 있는 곳은 몇 안 되는데 세상에 모델은 많은 이유가 여기 있다.
응답을 멈추는 것도 학습된 특수 토큰(stop token)이다. 알아서 판단해 끊는 게 아니라 “여기서 멈추는 게 맞다”를 포스트트레인에서 배운다.
2. 모델은 어떻게 추론하는가
입력이 토큰 시퀀스로 바뀌고 → 임베딩되고 → N개 레이어를 통과하면 다음 토큰 하나가 나온다. 레이어 하나 안에서 벌어지는 일:
① 어텐션
각 토큰이 앞의 토큰들과 얼마나 관계있는지를 측정해 들고 있는다. 강의 예문 — 「로이는 우리 집에 사는 고양이이다」에서 ‘로이’와 ‘고양이’의 관계값이 높고, ‘우리 집’과의 관계값은 그보다 낮다.
이게 왜 사건이었나. 어텐션 이전 자연어 처리는 시간순으로 차곡차곡 다음을 예측했고, 뒤로 갈수록 앞의 내용을 잊는 것이 결정적 한계였다. 「우리 점심 메뉴는 치킨이다」 열 문장 뒤에 나온 “그건”이 치킨을 가리킨다는 걸 못 잡았다. 구글의 **「Attention is All You Need」**가 이 구도를 깼다.
이 어텐션 계산 단위를 어텐션 헤드라 하고, 레이어 안에서 여러 번 반복된다. 레이어도 N개이므로 반복의 반복이다.
② MLP 후가공 → ③ 로짓 → ④ 소프트맥스 → ⑤ 샘플링
- 어텐션 값을 특징이 도드라지게 후가공하는 것이 MLP.
- 다음에 올 토큰 후보들이 점수로 줄을 서는데, 이게 로짓이다. 확률이 아니라 점수라서 음수도 나온다.
- 이걸 다 더해 1이 되도록 정규화하면 백분율이 된다 — 소프트맥스.
- 그중 어디까지를 후보로 삼을지 자르는 단계가 샘플링이다.
🔴 temperature / top-k / top-p가 사는 자리가 여기다. 온도가 높으면(따뜻하면) 아래쪽 후보까지 허용해 창의적이 되고, 낮으면 상위만 취해 보수적이 된다. top-k·top-p는 “위에서 몇 개에서 자를 것인가”. 그리고 최종 선택은 남은 후보들 사이의 동전 던지기다. 그래서 같은 프롬프트도 실행할 때마다 답이 달라진다.
⑥ 히든 스테이트를 다음 레이어로
로짓을 산출할 때의 상태값이 히든 스테이트다. 이걸 다음 레이어에 넘겨 같은 과정을 반복하면서 후보군이 점점 정교해지고, 마지막 레이어에서 토큰 하나가 확정된다.
질의응답에서 정정된 지점 — 이 반복은 학습의 역전파를 거꾸로 돌린 것이 아니다. 역전파는 파라미터를 고치려고 뒤로 되짚는 행위이고, 레이어 반복은 추론이라는 같은 행위를 여러 번 하는 것이다. 추론 중에 파라미터는 절대 바뀌지 않는다.
속도의 정체 — KV 캐시
채팅에서 처음에 “생각 중입니다”가 뜨는 구간이 프리필(입력 전체의 어텐션 계산)이고, 그 뒤 답이 좔좔 나오는 건 KV 캐시 덕이다. 앞까지 계산한 키·밸류를 들고 있어 새 토큰마다 전체를 다시 계산하지 않는다. 캐시는 stop token이 나올 때까지 유지된다.
🔴 컨텍스트 윈도우는 클수록 좋은 게 아니다. 길어질수록 어텐션 연산이 늘고 집중력이 떨어진다. 너무 많은 것이 중요해지면 정작 핵심을 빠뜨린다. “크면서도 좋으려면 큰 노력이 따로 든다”는 것이 강사의 정리다.
3. 결론 — 무엇을 쓸 것인가
강사의 표현으로 “생각보다 되게 명료하다.”
| 선택 | 언제 쓰나 | 원리상 무슨 일이 벌어지나 |
|---|---|---|
| 프롬프트·지침 | 나머지 거의 전부 | 토큰 시퀀스에 맥락을 직접 넣는 것. 에이전트·스킬·그래프·루프 설계도 원리는 같다 |
| RAG | 근거 기반 답변이 필요하고, 근거에 최신성·업데이트가 끼는 경우 (규정·문서·매뉴얼) | 필요해 보이는 것만 찾아 어텐션의 범위 안에 넣어주는 것. 다 넣으면 윈도우를 넘거나 어텐션이 흐려진다 |
| 파인튜닝 | ① 반복적인 형식·행동 ② 특화된 태스크 ③ 비용 최적화 — 셋이 겹칠 때 | 매번 붙이던 긴 시스템 프롬프트를 모델에 내재화. 입력 토큰 시퀀스를 10분의 1로 줄인다 |
파인튜닝의 실제 판단 — 규모의 문제다
강의의 예시가 구체적이다. JSON 형식을 순서까지 정확히 맞춰 응답하게 하는 일은 프롬프트로 된다. 그런데 제조·제약처럼 데이터가 대량으로 흐르는 곳에서 이 호출을 하루 100만 번 해야 한다면, 호출당 0.1원이어도 월 단위로 수천만 원이 된다. 룰베이스로 대체할 수 없는 판단이라 LLM을 안 쓸 수도 없다.
이때 파인튜닝으로 응답 형식을 모델에 새기면 앞에 붙던 시스템 프롬프트를 통째로 걷어낼 수 있다. 비용 구조가 뒤집히는 지점이 곧 파인튜닝의 자리다.
🔴 파인튜닝의 자리는 점점 좁아지고 있다. 베이스 모델 성능과 프롬프트 방법론이 올라오면서 프롬프트로 되는 일이 계속 늘었다. 과거에는 더 자주 선택됐지만 지금은 포지션이 특수해졌다는 것이 강사의 진단이다. “안 쓰니까 모르는 것보다는 알고 있는 게 낫다”는 정도의 온도로 설명한다.
RAG가 파인튜닝이 될 수 없는 이유
근거 문서에는 최신성과 업데이트가 낀다. 규정이 바뀔 때마다 파인튜닝을 다시 돌리는 것은 비용상 말이 안 된다. 그래서 근거 기반 답변은 무조건 RAG 쪽이다.
실무에서는 프롬프트 + RAG 조합이 대부분이고, 파인튜닝은 최적화 단계에서만 등장한다. 강사가 덧붙인 말 — 기술보다 문제를 정의하고 파악하는 일이 훨씬 중요하고, 그 과정에서는 거의 프롬프트·RAG 선에서 해결된다.
남는 질문 (강사가 모른다고 남긴 것)
정직하게 남겨둔 대목들이라 그대로 옮긴다.
- 추론 강도(thinking / ultrathink)가 무엇을 늘리는가 — 강사는 오케스트레이션 층위의 자기 재검증일 것으로 추측했고, 수강생이 “레이어 수에 비례한다더라”고 보태자 확인 없이 받았다. 미검증.
- 포스트트레인 단계에서 “라벨링”이라는 말을 쓰는 범위. 딥러닝 비전 쪽에서는 확실히 쓰지만 LLM 쪽 관행은 확답을 피했다.
- 한 프롬프트에 여러 답안을 내주는 서비스가 독립 시행인지 설정값을 달리한 것인지 — “둘 다 가능한 시나리오”.
더 파고들 곳
- bbycroft.net — 트랜스포머 내부 연산 전 과정을 3D로 시각화. 재생 버튼으로 단계별 연출까지 된다. 강사가 “제가 무엇을 축소해서 설명했는지 다 알 수 있다”며 추천.
- LLM Explainer — 강의 판서의 바탕이 된 시각화.
- 이 노드가 일부러 건너뛴 것: 어텐션 내부의 Q·K·V와 그 사이 가중치 곱셈. 강사도 “이걸 먼저 설명해서 내가 헷갈렸다”며 뺐다. 어텐션이 관계를 계속 파악한다는 것만 잡고 있어도 실무 판단에는 지장이 없다.
우리 맥락에 대보면
- 품에·GraphRAG: 법령·규정처럼 개정이 계속되는 근거 자료는 정의상 RAG의 영역이다. “파인튜닝하면 더 잘하지 않나”라는 요청이 들어올 때 되돌려줄 근거가 3장 표에 있다.
- EXAONE 파인튜닝: 판단 기준은 성능이 아니라 반복 규모와 비용 구조다. 같은 형식의 호출이 대량으로 반복되는 구간이 실제로 있는지가 먼저다.
- 컨텍스트 윈도우: 길게 밀어넣는 것이 항상 이득이 아니라는 근거 — 어텐션 연산량과 집중력 저하.
- 관련 노드: 모델구조 · 학습방법 · 온톨로지_입문 · AI에게 통제권을 넘기지 않는 법