과정 안내
과정 로드맵
9개 장을 이틀로 나눴습니다. 이 쪽에서는 하루마다 무엇을 배우고 무엇을 만드는지, 장끼리 어떻게 이어지는지를 한눈에 봅니다. 장의 자세한 내용은 목차에서 그 장을 눌러 봅니다.
과정 한눈에
외국어를 잘하는 수습 직원 한 명을 우리 가게 상담원으로 키우는 일을 떠올려 봅니다.
- 먼저 직원의 머릿속이 숫자 표(벡터와 행렬)로 움직인다는 것을 알고, 예전 직원(RNN)이 왜 긴 문장에서 앞 내용을 잊었는지 봅니다(1장).
- 문장을 레고 블록(토큰)으로 쪼개 번호를 붙이고, 번호를 성격표(임베딩)와 순서표(위치 정보)로 바꿉니다(2장).
- 낱말마다 다른 낱말을 얼마나 참고할지 정하는 Attention 과, 그것을 쌓은 Encoder 를 계산으로 따라갑니다(3장).
- 뒷장을 가리고 한 낱말씩 써 나가는 Decoder 를 배우고, 작은 영한 번역기를 처음부터 학습해 봅니다(4장).
- Decoder 만 아주 크게 쌓은 것이 GPT 와 Qwen 같은 LLM 이고, 사전학습 → SFT → 선호도 정렬 세 단계로 만들어진다는 것을 봅니다(5장).
- 둘째 날, 수습 직원(Qwen2.5-0.5B-Instruct)을 GPU 에 올려 말을 걸고, 말투를 고르는 다이얼(temperature, top-p)을 돌려 봅니다(6장).
- 상담 연습용 모범 답안집(SFT 데이터)을 만들고 대본 양식(Chat Template)에 맞춥니다(7장).
- 직원 전체를 다시 가르치는 대신 얇은 투명 필름(LoRA)만 덧붙여 말투를 가르칩니다(8장).
- 연수 전후를 시험(손실)과 실제 대화로 비교하고, 필름을 끼우고 빼고 붙이는 법, 사진을 작게 줄이듯 모델을 4비트로 줄이는 QLoRA 를 봅니다(9장).
왼쪽에서 오른쪽으로 1일차, 2일차입니다. 상자마다 맨 위 줄에 묶음과 장, 가운데에 그 묶음의 이름, 맨 아래에 한마디 요약을 적었습니다.
| 묶음 | 장 | 한 줄 요약 |
|---|---|---|
| 1일차 | 1장 준비 수학과 Transformer 개요, 2장 Transformer 입력 표현, 3장 Attention과 Encoder, 4장 Transformer Decoder와 작은 번역기, 5장 Decoder-only LLM과 학습 단계 | 글이 숫자가 되고, Attention 으로 문맥을 읽고, 한 토큰씩 글을 만드는 Transformer 의 구조를 익힌다 |
| 2일차 | 6장 Qwen 모델 준비와 텍스트 생성, 7장 SFT 데이터 구성과 Chat Template, 8장 PEFT와 LoRA 학습, 9장 모델 평가와 활용, QLoRA | 공개 LLM 을 SFT 데이터와 LoRA·QLoRA 로 적은 자원만 써서 조정하고 평가한다 |
장마다 강사 노트북의 원본 코드를 차례대로 묶은 실습과 프로젝트 1개가 있습니다. 실습 코드에는 줄마다 주석을 달았습니다. 3장은 노트북에 코드가 없어, 노트북의 식을 NumPy 로 따라 계산하는 실습을 새로 넣었습니다.
1일차. Transformer 구조에서 생성형 LLM까지
1장에서는 준비 수학과 Transformer 가 나온 까닭을 봅니다.
- 벡터, 행렬, 행렬곱, 내적, Softmax 를 NumPy 로 계산해 보고, 신경망 안에서 shape 가 바뀌는 모습을 따라갑니다.
- RNN 과 Seq2Seq 가 문장을 한 칸씩 읽어 생기는 한계, 그것을 푼 Attention, 그리고 "Attention Is All You Need"(2017)의 Transformer 전체 구조를 봅니다.
2장은 입력 표현입니다.
- BERT 와 Qwen 의 토크나이저로 영어와 한국어를 토큰으로 쪼개고, 같은 뜻이라도 토큰 수가 다르다는 것을 봅니다.
- 토큰 번호를 임베딩 벡터로 바꾸고, 사인·코사인 위치 인코딩으로 순서 정보를 더합니다.
3장은 Attention 과 Encoder 입니다.
- Query, Key, Value 와
softmax(QKᵀ/√d_k)V를 작은 숫자로 직접 계산합니다. - 여러 관점으로 나눠 보는 Multi-Head Attention, Add & Norm, FFN 을 쌓은 Encoder 블록을 봅니다.
4장은 Decoder 입니다.
- Teacher Forcing, 뒷장을 가리는 Masked Self-Attention, 원문을 참고하는 Cross-Attention 을 봅니다.
- 영어·한국어 문장쌍으로 작은 Encoder-Decoder 번역기를 처음부터 학습하고 번역해 봅니다.
5장은 Decoder-only LLM 입니다.
- GPT 처럼 Decoder 만 쌓은 모델이 다음 토큰 예측으로 사전학습되는 과정, 크기를 키우자 생긴 일(Scaling Law)을 봅니다.
- Qwen2.5-0.5B-Instruct 의 구조를 출력해 읽고, LLM 을 업무에 맞추는 Prompt, RAG, Fine-tuning 을 견줍니다.
2일차. SFT 데이터 구성과 LoRA 파인튜닝
6장에서는 Qwen 을 GPU 에 올려 글을 만들어 봅니다.
- 모델 크기와 GPU 메모리의 관계(파라미터 수 × 바이트 수)를 계산합니다.
- 한 토큰씩 이어 쓰는 생성 과정과 temperature, top-k, top-p 디코딩, SFT 와 선호도 정렬의 차이를 봅니다.
7장은 SFT 데이터입니다.
- 질문과 모범 답변 CSV 를 점검하고, 대화 형식(prompt, completion)으로 바꿔 학습·검증·평가 데이터로 나눕니다.
- Chat Template 이 messages 를 모델이 읽는 문자열로 바꾸는 모습, input_ids·attention_mask·labels 의 뜻을 봅니다.
8장은 PEFT 와 LoRA 입니다.
- 모델 전체를 학습하는 부담과, 대부분을 얼리고 일부만 학습하는 PEFT, 저랭크 행렬 A·B 로 변화량을 배우는 LoRA 를 봅니다.
SFTTrainer로 말투 LoRA 를 학습하고, 손실 곡선과 학습 전후 답변을 비교한 뒤 어댑터를 저장합니다.
9장은 평가와 활용입니다.
- 평가 데이터의 손실로 학습 효과를 재고, 일반 질문으로 부작용을 점검합니다.
- 어댑터를 불러와 끄고 켜고, 기반 모델에 병합해 저장합니다. 4비트로 줄인 기반 모델에 LoRA 를 붙이는 QLoRA 도 해 봅니다.
- 마지막에 종합평가(고객 문의 응답 형식 LoRA 파인튜닝)를 안내합니다.