트랜스포머·PEFT 2일 과정용어집← 이전목차다음 →MetaContents

용어집

용어집

장마다 나온 용어를 한곳에 모았습니다. 위의 찾기 칸에 낱말을 넣으면 그 줄만 남습니다.

1장 · 준비 수학과 Transformer 개요

용어설명
벡터(vector)숫자를 한 줄로 늘어놓은 것입니다. 성적표에서 학생 한 명의 한 행과 같습니다. NumPy 에서는 shape 가 (6,) 처럼 숫자 하나로 나옵니다.
차원(dimension)벡터에 든 숫자의 개수입니다. Transformer 에서는 낱말 하나를 나타내는 숫자 개수를 d_model 이라고 부릅니다.
행렬(matrix)숫자를 행(row)과 열(column)로 놓은 표입니다. 벡터를 여러 줄 쌓으면 행렬이 됩니다. 엑셀 표 한 장이나 숫자만 든 DataFrame 과 같습니다.
shape배열의 모양입니다. 행렬은 (행 수, 열 수) 로 적습니다. 문장 하나는 (낱말 수, 차원) 행렬입니다.
행렬곱(matrix multiplication)앞 행렬의 행과 뒤 행렬의 열을 짝지어 곱하고 더하는 계산입니다. 점수표에 가중치표를 곱해 총점을 내는 일과 같습니다. 파이썬에서는 np.matmul(A, B) 나 A @ B 로 씁니다.
내적(dot product)길이가 같은 두 벡터에서 같은 자리 숫자끼리 곱해 모두 더한 값입니다. 두 사람 취향이 얼마나 같은 쪽인지 재는 점수입니다.
가중치(weight)신경망이 학습으로 정하는 숫자들입니다. 총점을 낼 때 과목마다 곱하는 비중과 같습니다.
신경망(neural network)입력에 가중치를 곱하고 더하는 층을 여러 번 쌓아 답을 내는 계산 모형입니다. 이 과정의 Transformer 도 신경망입니다.
점수(logit)신경망이 마지막에 내놓는 날것의 점수입니다. 음수일 수도 있고 합이 1이 아니라서 아직 확률이 아닙니다.
Softmax점수를 합이 1인 비율(확률)로 바꾸는 계산입니다. 득표수를 투표 비율(합 100%)로 바꾸는 일과 같습니다.
은닉 표현(hidden representation)신경망의 중간 층이 만든 숫자 묶음입니다. 사람이 직접 보지 않는 중간 계산 결과라서 "숨은(hidden)"이라고 부릅니다.
순서 데이터(sequence data)차례가 뜻을 정하는 데이터입니다. 문장, 센서 값, 주가처럼 앞뒤를 바꾸면 뜻이 달라집니다.
토큰(token)모델이 문장을 자른 한 조각입니다. 이 장에서는 낱말 하나라고 보면 됩니다. 2장에서 자세히 봅니다.
RNN(Recurrent Neural Network)문장을 앞에서부터 한 칸씩 읽으며 기억을 고쳐 쓰는 신경망입니다. recurrent 는 "되풀이되는"이라는 뜻입니다.
은닉 상태(hidden state)RNN 이 칸마다 들고 다니는 기억 벡터입니다. 책을 읽으며 메모 한 장에 덮어쓰는 요약과 같습니다. 기호로는 h 로 적습니다.
기울기 소실(vanishing gradient)학습 신호가 여러 칸을 거꾸로 거치며 점점 작아져, 앞쪽 칸이 거의 배우지 못하는 일입니다.
장거리 의존성(long-range dependency)멀리 떨어진 낱말끼리의 관계입니다. "그 회의에서 ... 말한 사람은 그였다"의 "그"가 누구인지 같은 것입니다.
Seq2Seq(Sequence to Sequence)문장(순서 데이터)을 받아 다른 문장을 내는 모델입니다. 읽는 RNN(Encoder)과 쓰는 RNN(Decoder)을 따로 둡니다.
Encoder입력 문장을 읽어 뜻을 숫자로 담는 부분입니다. encode 는 "부호로 바꾸다"라는 뜻입니다.
DecoderEncoder 가 넘긴 숫자를 보고 출력 문장을 한 낱말씩 쓰는 부분입니다. decode 는 "부호를 풀다"라는 뜻입니다.
context vectorEncoder 가 Decoder 에게 넘기는 요약 벡터입니다. 긴 회의를 쪽지 한 장에 요약해 넘기는 것과 같습니다.
AttentionDecoder 가 낱말을 하나 쓸 때마다 입력의 어느 자리를 얼마나 볼지 정해 다시 들춰 보는 방법입니다. attention 은 "주의, 집중"이라는 뜻입니다.
병렬 처리(parallel processing)여러 계산을 한꺼번에 하는 것입니다. GPU 는 병렬 처리에 강한 계산 장치입니다.
Transformer2017년 논문 "Attention Is All You Need"에서 나온 구조입니다. RNN 없이 Attention 만으로 모든 낱말 쌍의 관계를 한 번에 계산합니다.
BLEU기계 번역이 사람 번역과 얼마나 겹치는지 재는 점수입니다. 높을수록 번역이 낫다고 봅니다.

2장 · Transformer 입력 표현

용어설명
토큰(token)모델이 읽는 텍스트의 기본 조각입니다. 단어 하나일 수도, 단어의 일부나 글자 하나의 일부(바이트)일 수도 있습니다. 문장을 쪼갠 레고 블록입니다.
토큰화(tokenization)문장을 토큰으로 나누는 일입니다.
토크나이저(tokenizer)토큰화를 하고, 토큰을 번호로 바꾸고, 번호를 다시 글자로 되돌리는 도구입니다. 모델마다 짝이 정해져 있습니다.
사전(vocabulary, vocab)토크나이저가 아는 토큰을 모두 모아 번호를 매긴 목록입니다. Qwen 은 151,665개, BERT 는 30,522개입니다.
토큰 ID(token ID)사전에서 토큰에 매긴 정수 번호입니다. 레고 블록마다 붙은 상품 번호입니다.
input_ids토크나이저가 돌려주는 토큰 ID 리스트의 이름입니다. 모델에 들어가는 "상품 번호 열"입니다.
서브워드(subword)단어보다 작은 조각입니다. 자주 쓰는 단어는 통째로, 드문 단어는 조각으로 나눕니다.
OOV(Out-Of-Vocabulary)사전에 없는 낱말입니다. 단어 단위로 자르면 처음 보는 낱말을 읽지 못합니다.
BPE(Byte Pair Encoding)자주 붙어 나오는 두 조각을 하나로 합치는 일을 되풀이해 사전을 만드는 방법입니다. GPT, Llama 3, Qwen 이 씁니다.
Byte-level BPE글자 대신 바이트(byte)부터 합치는 BPE 입니다. 어떤 언어든 바이트로는 쪼갤 수 있으므로 사전에 없는 글자가 생기지 않습니다.
WordPiece합쳤을 때 말뭉치의 가능도가 가장 커지는 쌍을 합치는 방법입니다. BERT 가 쓰며, 앞 조각에 이어 붙는 조각에 ## 을 붙입니다.
SentencePiece띄어쓰기까지 하나의 문자로 보고 원문에서 바로 사전을 만드는 도구입니다. T5, Llama 2 가 씁니다.
특수 토큰(special token)문장의 시작과 끝 같은 표시용 토큰입니다. BERT 의 [CLS](101), [SEP](102)가 그 예입니다.
UTF-8글자를 바이트로 저장하는 방식입니다. 영어 글자는 1바이트, 한글 한 글자는 3바이트입니다.
디코딩(decoding)토큰 ID 를 다시 사람이 읽는 글자로 되돌리는 일입니다. decode 라는 이름으로 부릅니다.
컨텍스트 길이(context length)모델이 한 번에 볼 수 있는 최대 토큰 수입니다. Qwen2.5-0.5B-Instruct 는 32,768(32K)입니다.
임베딩(embedding)토큰 ID 를 뜻을 담을 수 있는 실수 벡터로 바꾸는 일, 또는 그 벡터입니다. 상품 번호를 성격표로 바꾸는 일입니다.
임베딩 층(embedding layer)(사전 크기, d_model) 모양의 큰 표입니다. 토큰 ID 번째 행을 꺼내 줍니다.
d_model토큰 하나를 나타내는 벡터의 길이(숫자 개수)입니다. 원 논문은 512, Qwen2.5-0.5B 는 896, BERT-base 는 768입니다.
조회(lookup)계산하지 않고 번호로 표의 행을 바로 꺼내는 일입니다. pandas 의 df.iloc[번호] 와 같습니다.
위치 정보(positional information)토큰이 문장에서 몇 번째에 있는지 알려 주는 값입니다.
위치 인코딩(positional encoding)위치 정보를 벡터로 만들어 임베딩에 더하는 방법입니다. 블록에 붙이는 번호표입니다.

3장 · Attention과 Encoder

용어설명
Attention(어텐션)여러 정보 가운데 지금 필요한 것에 더 많은 비중을 두어 섞는 계산입니다. attention 은 "주의, 주목"이라는 뜻입니다.
Self-Attention(셀프 어텐션)한 문장 안의 낱말들이 서로를 참고하는 Attention 입니다. 회의에서 같은 회의실 사람들의 발언을 참고하는 것과 같습니다.
Encoder(인코더)입력 문장을 읽어 문맥이 담긴 벡터들로 바꾸는 부분입니다. encode 는 "부호로 바꾸다"라는 뜻입니다.
문맥 임베딩(contextual embedding)문장에 따라 달라지는 낱말 벡터입니다. "배를 타다"의 배와 "배가 고프다"의 배가 서로 다른 벡터가 됩니다.
Query(쿼리, Q)이 낱말이 문장에서 무엇을 찾고 있는지 나타내는 벡터입니다. 도서관 검색창에 넣는 검색어입니다.
Key(키, K)이 낱말이 어떤 정보를 가졌는지 알리는 이름표 벡터입니다. 책등에 붙은 제목표입니다.
Value(밸류, V)이 낱말이 다른 낱말에게 실제로 넘겨 줄 내용 벡터입니다. 책의 본문입니다.
가중치 행렬(weight matrix)입력에 곱해 모양과 값을 바꾸는 숫자 표입니다. W_Q, W_K, W_V 가 학습으로 정해지는 대상입니다.
내적(dot product)두 벡터의 같은 자리끼리 곱해 모두 더한 값입니다. 1×4 + 2×5 + 3×6 = 32 처럼 계산하고, 두 벡터가 같은 쪽을 볼수록 커집니다.
점수(score)Query 와 Key 의 내적입니다. 두 낱말이 얼마나 관련 있는지 매긴 값입니다.
Softmax(소프트맥스)점수들을 합이 1 인 비율로 바꾸는 함수입니다. 점수를 투표 비율(합 100%)로 바꾸는 일입니다.
Attention 가중치(attention weight)softmax 를 거친 참고 비율입니다. 행마다 합이 1 인 표가 됩니다.
Scaled Dot-Product Attention내적 점수를 √d_k 로 나눈(scaled) 뒤 softmax 를 쓰는 Attention 입니다. 식은 softmax(QKᵀ / √d_k) V 입니다.
d_model낱말 하나를 나타내는 벡터의 길이입니다. 원 논문 base 모델은 512 입니다.
d_kQuery 와 Key 벡터 하나의 길이입니다. 원 논문은 64 이므로 √d_k = 8 로 나눕니다.
shape(모양)숫자 배열의 크기입니다. (10, 512) 는 낱말 10개를 각각 숫자 512개로 나타낸다는 뜻입니다.
전치(transpose, ᵀ)행렬의 행과 열을 맞바꾸는 일입니다. (10, 64) 의 K 를 전치하면 (64, 10) 이 됩니다.
그래디언트(gradient)학습할 때 가중치를 어느 쪽으로 얼마나 고칠지 알려 주는 값입니다. 0 에 가까우면 학습이 멈춘 듯 느려집니다.
Multi-Head Attention(멀티 헤드 어텐션)벡터를 여러 조각(head)으로 나눠 Attention 을 따로 계산한 뒤 합치는 방법입니다. 여러 전문가가 각자 관점으로 보고 의견을 합치는 일입니다.
head(헤드)Multi-Head Attention 에서 한 관점을 맡은 Attention 하나입니다.
Concat(이어 붙이기)concatenate 의 줄임말입니다. 여러 head 의 결과를 옆으로 나란히 붙입니다.
잔차 연결(residual connection, Add)층의 입력을 층의 출력에 더하는 일입니다. 원본을 옆에 붙여 두어 정보가 사라지지 않게 합니다.
층 정규화(Layer Normalization, Norm)벡터 하나의 숫자들을 평균 0, 표준편차 1 근처로 맞추는 일입니다. 눈금 맞추기입니다.
FFN(Feed Forward Network, 피드 포워드 신경망)낱말 벡터마다 따로 통과시키는 작은 신경망입니다. 낱말마다 따로 받는 개인 과외입니다.

4장 · Transformer Decoder와 작은 번역기

용어설명
Decoder(디코더)출력 문장을 한 토큰씩 만드는 Transformer 의 오른쪽 부분입니다. decode 는 "암호를 풀어 글로 옮기다"라는 뜻입니다.
Encoder(인코더)입력 문장을 읽어 토큰마다 문맥이 담긴 벡터를 만드는 왼쪽 부분입니다. 3장에서 보았습니다.
시작 토큰(start token, <sos>)Decoder 에게 "이제 쓰기 시작해"라고 알리는 맨 앞 토큰입니다. 이 장의 토크나이저에서는 [CLS](ID 2)가 이 일을 합니다.
종료 토큰(end token, <eos>)문장이 끝났다는 표시입니다. 이 장의 토크나이저에서는 [SEP](ID 3)입니다.
패딩 토큰(pad token)길이가 다른 문장을 한 묶음으로 만들 때 빈자리를 채우는 토큰입니다. 이 장에서는 [PAD](ID 0)입니다.
Teacher Forcing(교사 강요)학습할 때 모델이 앞에서 무엇을 예측했든, 정답 토큰을 다음 입력으로 넣어 주는 방법입니다. 받아쓰기 연습에서 앞 낱말의 정답을 보여 주는 것과 같습니다.
shifted right(오른쪽으로 한 칸 밀기)정답 문장 맨 앞에 시작 토큰을 넣고 맨 끝 하나를 빼서 Decoder 입력을 만드는 일입니다.
Masked Self-Attention각 위치가 자기와 앞쪽 토큰만 보도록 뒤쪽을 가린 Self-Attention 입니다. 시험 중 뒷장을 가리고 푸는 것과 같습니다.
Causal Mask(인과 마스크)Attention 점수 표의 위쪽 삼각형(미래 자리)을 -inf 로 채우는 가림판입니다. causal 은 "원인이 결과보다 앞선다"는 뜻입니다.
-inf(음의 무한대)어떤 수보다도 작은 값입니다. e 의 -inf 제곱은 0 이라서 Softmax 를 거치면 가중치가 0 이 됩니다.
자기회귀(auto-regressive)자기가 방금 만든 출력을 다음 입력으로 다시 넣으며 이어 가는 방식입니다. GPT 같은 생성형 LLM 의 기본 원리입니다.
Cross-Attention(교차 어텐션)Query 는 Decoder 에서, Key 와 Value 는 Encoder 출력에서 가져오는 Attention 입니다. 번역문을 쓰며 원문을 흘끗 보는 일입니다.
Decoder 블록(Decoder block)Masked Self-Attention, Cross-Attention, Feed Forward 세 층과 각 층 뒤의 Add & Norm 으로 된 묶음입니다. 이 묶음을 N번 쌓습니다.
Linear(선형층)벡터에 가중치 행렬을 곱해 다른 크기의 벡터로 바꾸는 층입니다. 여기서는 256칸 벡터를 사전 크기(61,790칸)의 점수로 바꿉니다.
로짓(logit)Softmax 를 거치기 전의 점수입니다. 음수도, 1 보다 큰 수도 될 수 있습니다.
어휘 크기(vocabulary size)토크나이저 사전에 든 토큰의 개수입니다. tunib/electra-ko-en-small 은 61,790개입니다.
학습(Training)과 추론(Inference)학습은 정답을 보며 가중치를 고치는 단계, 추론은 다 배운 모델로 새 입력에 답을 만드는 단계입니다.
generate한 토큰씩 고르고 입력 뒤에 붙이기를 반복해 문장을 만드는 함수입니다. 이어 쓰기 담당입니다.
epoch(에폭)학습 데이터 전체를 한 바퀴 도는 것입니다. 문제집 한 바퀴와 같습니다.
손실(loss)정답과의 거리, 곧 벌점입니다. 이 장에서는 정답 토큰에 준 확률이 낮을수록 커지는 교차 엔트로피(cross entropy)를 씁니다.
검증 데이터(validation)학습 중에 실력을 확인하는 모의고사입니다. 가중치를 고치는 데는 쓰지 않습니다.
Seq2SeqTrainersequence-to-sequence trainer, 곧 "문장을 받아 문장을 내는 모델"의 학습 반복을 대신 돌려 주는 도구입니다.

5장 · Decoder-only LLM과 학습 단계

용어설명
LLM(Large Language Model)파라미터가 수억~수천억 개인 큰 언어 모델입니다. 글을 읽고 이어지는 글을 씁니다.
Decoder-onlyTransformer 에서 Decoder 블록만 쌓은 구조입니다. Encoder 도, Cross-Attention 도 없습니다. GPT, Qwen, Llama 가 이 구조입니다.
다음 토큰 예측(Next Token Prediction)앞 토큰들을 보고 바로 다음 토큰을 맞히는 과제입니다. GPT 가 배우는 단 하나의 과제입니다.
자기지도학습(Self-supervised Learning)사람이 정답을 달지 않고, 데이터 자체에서 정답을 만들어 배우는 방식입니다. 문장의 다음 토큰이 곧 정답입니다.
사전학습(Pre-training)웹, 책, 코드 같은 아주 많은 텍스트로 다음 토큰 예측을 시키는 첫 단계입니다. 도서관 책을 다 읽은 수습생이 됩니다.
Base 모델사전학습만 마친 모델입니다. 아는 것은 많지만 대화 형식에는 서툽니다.
Instruct 모델Base 모델에 SFT 를 더해 지시를 따르도록 다듬은 모델입니다. 이름 끝의 Instruct 가 이 뜻입니다.
파라미터(Parameter)모델이 학습으로 정하는 숫자, 곧 가중치입니다. Qwen2.5-0.5B 는 약 4.9억 개입니다. B 는 billion(10억)입니다.
Scaling Law모델 크기, 데이터 양, 계산량을 늘리면 손실이 예측 가능한 비율로 꾸준히 줄어든다는 관찰입니다.
In-context Learning학습 없이 프롬프트 안의 예시 몇 개만 보고 새 작업을 해내는 능력입니다. 예시를 몇 개 주는 것을 few-shot 이라고 합니다.
Chinchilla 법칙같은 계산 예산이면 파라미터 1개당 약 20토큰의 데이터로 학습하는 편이 효율적이라는 관찰입니다.
RoPE(Rotary Position Embedding)위치 정보를 벡터를 돌리는 각도로 넣는 방법입니다. print(model) 에서는 rotary_emb 로 보입니다.
SwiGLUFFN 의 한 방식입니다. gate_proj 가 SiLU 를 거쳐 문지기처럼 up_proj 의 값을 얼마나 통과시킬지 정합니다.
SiLU(Sigmoid Linear Unit)x × sigmoid(x) 로 계산하는 활성화 함수입니다. 음수는 0 근처로 줄이고 양수는 거의 그대로 둡니다.
GQA(Grouped-Query Attention)Query 머리 여러 개가 Key·Value 머리 하나를 나눠 쓰는 Attention 입니다. Qwen 은 Query 14개가 Key·Value 2개를 7개씩 나눠 씁니다.
lm_head(language model head)마지막 층의 896칸 벡터를 어휘 151,936개 각각의 점수로 바꾸는 선형층입니다. 다음 토큰 점수표를 만듭니다.
SFT(Supervised Fine-Tuning)(지시, 모범 답변) 쌍으로 모범 답변을 따라 쓰게 하는 지도 미세조정입니다. 2일차에 직접 합니다.
선호도 정렬(Preference Alignment)같은 질문의 두 답 중 사람이 더 좋아한 쪽의 확률을 높이는 학습입니다. RLHF, DPO 가 대표적입니다.
Prompt Engineering모델은 그대로 두고 지시문을 잘 써서 원하는 답을 끌어내는 방법입니다.
RAG(Retrieval-Augmented Generation)질문과 관련된 문서를 검색해 프롬프트에 함께 넣어 답하게 하는 방법입니다.
Fine-tuning(미세조정)우리 데이터로 모델의 가중치를 조금 더 학습시키는 방법입니다. PEFT, LoRA 는 이것을 적은 비용으로 하는 기법입니다.
BF16(bfloat16)숫자 하나를 2바이트(16비트)로 저장하는 형식입니다. FP32(4바이트)의 절반 메모리를 씁니다.

6장 · Qwen 모델 준비와 텍스트 생성

용어설명
Qwen2.5-0.5B-Instruct알리바바가 공개한 LLM 입니다. 0.5B 는 파라미터가 약 5억(0.5 billion) 개라는 뜻이고, Instruct 는 질문에 답하도록 SFT 까지 마친 모델이라는 뜻입니다.
파라미터(parameter)모델 안에서 학습으로 정해지는 숫자 하나하나입니다. 가중치(weight)라고도 합니다. 이 모델에는 494,032,768 개가 있습니다.
GPU(Graphics Processing Unit)계산을 한꺼번에 많이 하는 연산 장치입니다. 원래 그래픽용이지만 딥러닝 계산에 씁니다. 이 교안의 실행 결과는 RTX 3080(10GB)에서 얻었습니다.
VRAM(Video RAM)GPU 에 붙은 메모리입니다. 모델의 가중치와 계산 중간값이 여기에 올라갑니다. 책상 넓이와 같습니다.
CUDANVIDIA GPU 에 일을 시키는 방법입니다. 코드에서 device = "cuda" 는 "GPU 에서 계산하라"는 뜻입니다.
from_pretrained이미 학습된(pretrained) 가중치를 모델 이름으로 내려받아 불러오는 함수입니다.
AutoTokenizer모델 이름만 주면 그 모델에 맞는 토크나이저를 골라 주는 도구입니다.
AutoModelForCausalLM다음 낱말 맞히기(causal language model)용 모델을 불러오는 도구입니다.
정밀도(precision, dtype)숫자 하나를 몇 바이트로 저장하는지입니다. FP32 는 4바이트, BF16 과 FP16 은 2바이트입니다.
BF16(bfloat16)2바이트짜리 숫자 형식입니다. FP16 보다 아주 큰 수와 아주 작은 수를 잘 담아 LLM 에 많이 씁니다. RTX 30 이후 GPU 가 지원합니다.
양자화(quantization)숫자를 더 적은 바이트로 줄여 저장하는 일입니다. 고화질 사진을 작은 용량으로 저장하는 것과 같습니다. 9장의 QLoRA 에서 씁니다.
generate다음 토큰을 하나 고르고 입력 뒤에 붙이기를 되풀이하며 글을 이어 쓰는 함수입니다.
pipeline토크나이저, 모델, 후처리를 한 줄로 묶어 주는 Hugging Face 의 간편 도구입니다.
로짓(logit)모델이 다음 토큰 후보마다 매긴 날것의 점수입니다. Softmax 를 거쳐야 합이 1 인 확률이 됩니다.
디코딩(decoding)확률 표에서 실제로 어떤 토큰을 고를지 정하는 방식입니다.
Greedy(탐욕적) 디코딩매번 확률이 가장 높은 토큰 하나만 고르는 방식입니다. do_sample=False 입니다.
샘플링(sampling)확률에 따라 제비뽑기로 고르는 방식입니다. do_sample=True 입니다. 실행할 때마다 결과가 달라집니다.
temperature로짓을 나누는 값입니다. 모험심 다이얼과 같습니다. 낮으면 1등 후보에 몰리고, 높으면 고르게 퍼집니다.
top-k확률이 높은 후보 k 개만 남기는 예선입니다.
top-p(nucleus sampling)확률이 높은 순서로 누적 확률이 p 가 될 때까지만 남기는 결선입니다.
repetition_penalty이미 나온 토큰의 점수를 깎아 같은 말을 되풀이하지 않게 하는 값입니다. 1.2 면 1.2 배만큼 불리하게 합니다.
씨앗(seed)제비뽑기의 출발점 번호입니다. torch.manual_seed(42) 처럼 같은 씨앗을 주면 같은 뽑기 결과가 나옵니다.
SFT(Supervised Fine-Tuning)(지시, 모범 답변) 쌍으로 모델을 더 가르치는 일입니다. 모범 답안으로 상담 연습을 시키는 것과 같습니다.
Chat Template<|im_start|>user 처럼 누가 말하는지 표시하는 대본 양식입니다. 7장에서 자세히 봅니다.
선호도 정렬(preference alignment)같은 질문의 두 답 가운데 사람이 더 좋아한 쪽을 높이도록 가르치는 일입니다. RLHF, DPO 가 대표 방법입니다.

7장 · SFT 데이터 구성과 Chat Template

용어설명
SFT(Supervised Fine-Tuning)질문과 모범 답변의 쌍을 보여 주며 모델을 조금 더 가르치는 일입니다. supervised 는 "정답을 보여 주며", fine-tuning 은 "미세하게 다듬기"라는 뜻입니다. 모범 답안으로 상담 연습을 시키는 것과 같습니다.
SFT 데이터(SFT data)(사용자 요청, 모범 답변) 쌍의 모음입니다. 표로 치면 질문 열과 답변 열이 있는 DataFrame 입니다.
페르소나(persona)모델이 연기하는 인물의 성격과 말투입니다. 이 장의 데이터는 "냉소적인 절대 군주" 페르소나입니다.
환각(hallucination)모델이 모르는 내용을 사실처럼 지어내는 일입니다.
RAG(Retrieval-Augmented Generation)검색한 문서를 질문과 함께 넣어 답하게 하는 방법입니다. 참고서를 쥐여 주는 것과 같습니다.
JSONL(JSON Lines)한 줄에 JSON 예시 하나씩 적는 파일 형식입니다. 표의 한 행이 파일의 한 줄입니다.
Instruction 형식instruction(지시), input(입력), output(답) 칸에 나눠 적는 형식입니다. Alpaca 데이터가 쓴 꼴이라 Alpaca 스타일이라고도 합니다.
messages 형식(conversational)role(누가)과 content(무엇을 말했나)를 담은 사전의 목록입니다. 대화형 모델의 표준 형식입니다.
role말한 사람의 역할입니다. system(규칙을 적는 자리), user(사용자), assistant(모델) 셋이 있습니다.
prompt-completion 형식질문(prompt)과 답(completion)을 따로 담는 형식입니다. completion 은 "채워 넣을 나머지"라는 뜻입니다.
Dataset, DatasetDictHugging Face datasets 라이브러리의 표 객체입니다. Dataset 은 표 하나, DatasetDict 는 train, valid, test 처럼 이름 붙인 표 여러 개를 담은 사전입니다.
학습 데이터(train)모델의 가중치를 고치는 데 쓰는 데이터입니다. 문제집입니다.
검증 데이터(valid, validation)학습 중에 과적합을 살피고 설정을 견주는 데이터입니다. 모의고사입니다.
평가 데이터(test)모든 설정을 정한 뒤 마지막에 한 번 보는 데이터입니다. 실전 시험입니다.
과적합(overfitting)학습 데이터만 외워서 새 질문에 약해지는 일입니다. 문제집 답만 외운 학생과 같습니다.
Chat Templatemessages 를 모델이 학습 때 본 문자열 모양으로 바꾸는 규칙입니다. 누가 말하는지 머리표를 붙이는 대본 양식입니다.
ChatMLQwen 이 쓰는 대본 양식의 이름입니다. <|im_start|>역할 로 시작하고 <|im_end|> 로 끝냅니다.
특수 토큰(special token)글자가 아니라 표시를 위해 정해 둔 토큰입니다. <|im_start|>(ID 151644), <|im_end|>(151645), <|endoftext|>(151643)가 있습니다.
add_generation_prompt문자열 끝에 <|im_start|>assistant 머리표를 붙일지 정하는 옵션입니다. 답을 생성시킬 때 켭니다.
input_ids템플릿을 입힌 대화 전체를 토큰 ID 로 바꾼 숫자 목록입니다. 상품 번호 열과 같습니다.
attention_mask실제 토큰은 1, 패딩은 0 으로 적은 목록입니다. "이 칸은 보지 마라"는 표시입니다.
labels각 위치에서 맞혀야 할 정답 토큰 목록입니다. -100 인 칸은 손실 계산에서 뺍니다. 채점에서 빼는 문제입니다.
패딩(padding)길이가 다른 예시를 한 묶음으로 계산하려고 짧은 쪽에 채우는 빈칸입니다.
배치(batch)GPU 가 한 번에 계산하는 예시 묶음입니다.

8장 · PEFT와 LoRA 학습

용어설명
Full Fine-tuning(전체 미세 조정)모델의 모든 파라미터를 학습하는 방법입니다. 건물 전체 리모델링과 같습니다.
파라미터(parameter)모델 안에서 학습으로 정해지는 숫자 하나하나입니다. Qwen2.5-0.5B 에는 494,032,768 개가 있습니다.
가중치(weight)파라미터를 모은 표(행렬)입니다. q_proj 의 가중치는 896×896 표입니다.
그래디언트(gradient)손실을 줄이려면 가중치를 어느 쪽으로 얼마나 바꿔야 하는지 알려 주는 값입니다. 내리막길의 기울기와 같습니다.
옵티마이저(optimizer)그래디언트를 보고 가중치를 실제로 고치는 담당입니다. 자주 쓰는 Adam(AdamW)은 가중치마다 지난 기록을 숫자 두 개로 기억합니다.
옵티마이저 상태(optimizer state)옵티마이저가 가중치마다 기억해 두는 숫자들입니다. FP32 로 두 개면 8바이트입니다.
activation(활성값)학습 중 층마다 나온 중간 계산 결과입니다. 역전파 때 다시 쓰려고 메모리에 잠시 둡니다.
역전파(backpropagation)손실에서 거꾸로 거슬러 올라가며 가중치마다 그래디언트를 구하는 계산입니다.
PEFT(Parameter-Efficient Fine-Tuning)파라미터를 효율적으로(적게) 쓰는 미세 조정 방법들의 총칭입니다. 대부분은 얼리고 일부만 학습합니다.
동결(freeze)가중치를 학습 대상에서 빼는 일입니다. 계산에는 쓰지만 값은 바뀌지 않습니다.
어댑터(adapter)PEFT 로 학습한 작은 결과물입니다. 기반 모델에 갈아 끼우는 렌즈와 같습니다.
LoRA(Low-Rank Adaptation)가중치의 변화량을 작은 행렬 두 개(A, B)의 곱으로 나타내 학습하는 방법입니다. 원본 위의 얇은 투명 필름입니다.
랭크(rank, r)A 와 B 사이의 중간 차원입니다. 필름의 두께라고 보면 됩니다. 작을수록 학습할 숫자가 적습니다.
lora_alphaLoRA 길의 결과에 곱하는 배율을 정하는 값입니다. 실제 배율은 alpha ÷ r 입니다.
lora_dropout학습 중 LoRA 길의 값 일부를 일부러 끄는 비율입니다. 답만 외우는 것을 막는 장치입니다.
target_modulesLoRA 를 붙일 층의 이름 목록입니다. Qwen 에서는 q_proj, k_proj 같은 선형층 이름을 적습니다.
병합(merge)학습한 A·B 를 원래 W 에 더해 한 장으로 합치는 일입니다. 필름을 원본에 코팅해 붙이는 것과 같습니다.
SFTConfigSFT 학습의 설정표입니다. 배치 크기, 학습률, epoch 같은 값을 담습니다.
SFTTrainersupervised fine-tuning trainer, 모범 답안 학습 담당입니다. 템플릿 적용, 토큰화, labels 마스킹, 학습 반복을 한 번에 처리합니다.
학습률(learning rate)한 번 고칠 때의 보폭입니다. LoRA 는 2e-4(0.0002) 안팎을 많이 씁니다.
그래디언트 누적(gradient accumulation)작은 배치 여러 번의 그래디언트를 모았다가 한 번에 가중치를 고치는 방법입니다. 동전을 모아 지폐로 바꾸는 것과 같습니다.
cosine 스케줄러(cosine scheduler)학습률을 처음에는 크게, 끝으로 갈수록 코사인 곡선 모양으로 천천히 줄이는 방식입니다.
epoch(에포크)학습 데이터를 한 바퀴 다 보는 단위입니다. 문제집 한 바퀴입니다.
과적합(overfitting)학습 데이터는 점점 잘 맞히는데 처음 보는 데이터는 오히려 못 맞히는 상태입니다. 문제집 답만 외운 학생입니다.

9장 · 모델 평가와 활용, QLoRA

용어설명
평가(evaluation)학습이 끝난 모델이 원하는 대로 바뀌었는지 확인하는 일입니다. 연수를 마친 운전자의 면허 시험입니다.
손실(loss)모델의 예측이 정답과 얼마나 먼지 나타내는 벌점입니다. 낮을수록 정답 토큰을 잘 맞힌 것입니다.
test 손실(test loss)학습에도, 검증에도 쓰지 않은 평가 데이터로 잰 손실입니다. 처음 보는 실전 시험의 점수입니다.
정량 평가(quantitative evaluation)손실, 정확도처럼 숫자로 재는 평가입니다.
정성 평가(qualitative evaluation)답변을 사람이 직접 읽고 판단하는 평가입니다.
규칙 기반 채점(rule-based scoring)"세 줄 형식을 지켰나", "존댓말을 썼나"처럼 코드로 검사할 수 있는 규칙으로 점수를 매기는 일입니다.
LLM-as-a-Judge더 큰 LLM 에게 답변을 읽히고 채점을 맡기는 방법입니다. 선배 상담원이 신입의 답을 채점하는 것과 같습니다.
부작용(side effect)학습 목표와 상관없는 질문에서 모델이 나빠지는 일입니다. 연수 중에 생긴 나쁜 버릇입니다.
labels -100손실 계산에서 빼라는 표시입니다. 시험지의 문제 부분을 채점에서 빼는 것과 같습니다.
가중 평균(weighted average)배치마다 토큰 수가 다를 때, 토큰 수만큼 무게를 주어 내는 평균입니다.
어댑터(adapter)LoRA 가 학습한 A, B 행렬만 담은 작은 파일 묶음입니다. 갈아 끼우는 렌즈입니다.
PeftModel.from_pretrained저장한 어댑터를 기반 모델에 붙여 불러오는 함수입니다. 렌즈를 카메라에 끼우기입니다.
disable_adapter()with 블록 안에서만 어댑터를 잠시 끄는 도구입니다. 블록을 나오면 다시 켜집니다.
병합(merge)LoRA 의 변화량을 기반 가중치에 더해 하나의 모델로 만드는 일입니다. 필름을 원본에 코팅해 붙이기입니다.
merge_and_unload()merge(합치기) + unload(LoRA 껍데기 떼어 내기)입니다. 결과는 보통의 Qwen2ForCausalLM 입니다.
양자화(quantization)실수 값을 더 적은 비트로 어림해 저장하는 기술입니다. 고화질 사진을 작은 용량으로 저장하기입니다.
정밀도(precision)숫자 하나를 몇 비트로 저장하는지입니다. FP32 는 4바이트, BF16 은 2바이트, 4비트는 0.5바이트입니다.
NF4(4-bit NormalFloat)QLoRA 가 쓰는 4비트 형식입니다. 0 근처에 몰린 가중치 분포에 맞춰 16개의 눈금을 배치합니다.
Double Quantization양자화에 쓰는 눈금 크기(스케일) 값들까지 한 번 더 양자화해 메모리를 더 줄이는 방법입니다.
역양자화(dequantization)계산할 때 4비트 값을 BF16 으로 잠깐 되돌리는 일입니다. 압축 파일을 잠깐 풀어 쓰는 것과 같습니다.
QLoRA(Quantized LoRA)4비트로 줄인 기반 모델에 LoRA 를 붙여 학습하는 방법입니다.
BitsAndBytesConfigbitsandbytes 라이브러리로 모델을 4비트로 읽을 때 쓰는 설정표입니다.
get_memory_footprint()모델 가중치가 차지하는 메모리(발자국, footprint)를 바이트로 돌려주는 함수입니다.
prepare_model_for_kbit_trainingk비트(여기서는 4비트)로 줄인 모델을 학습할 수 있게 준비하는 함수입니다.
GGUFllama.cpp, Ollama 같은 도구가 내 PC 에서 모델을 돌릴 때 쓰는 파일 형식입니다.
← 이전실습 자료