전체 글 251

mini GPT 과제 2편 - GPTDataset과 InputEmbedding 구현 리뷰

mini GPT 과제 랩 구현 시리즈 2편GPTDataset과 InputEmbedding 구현 리뷰BPE가 token ID 목록을 만들었다면, `GPTDataset`은 이 목록을 학습 가능한 input/target 쌍으로 잘라낸다. `InputEmbedding`은 그 ID를 Transformer가 계산할 수 있는 벡터로 바꾼다.이번 단계는 코드 양은 많지 않지만, 뒤의 attention과 model shape를 결정한다. 여기서 shape를 잘못 잡으면 나중에 attention에서 에러가 늦게 터진다.테스트 통과 근거tests/test_dataset.py- GPTDataset 길이 계산- __getitem__ input/target shape- DataLoader batch shape- InputEmbe..

mini GPT 과제 1편 - src/bpe.py byte-level BPE 구현 리뷰

mini GPT 과제 랩 구현 시리즈 1편이번 구현의 첫 관문은 토크나이저였다. 과제에서는 외부 tokenizer를 금지했기 때문에, 한국어 리뷰 문자열을 직접 UTF-8 byte-level BPE 방식으로 token ID 목록으로 바꿔야 했다.이 글에서는 실제 구현된 `src/bpe.py`를 기준으로 초기 사전 구성, BPE 학습, 저장/로드, encode/decode 복원을 코드 블록 단위로 본다.테스트 통과 근거노트북 실행 결과 기준 `tests/test_bpe.py`는 6개 테스트가 통과했다.tests/test_bpe.py- special token ID 고정- 초기 vocabulary 구성- save/load 복원- encode/decode 원문 복원- get_pad_id/get_bos_id/g..

카테고리 없음 2026.06.01

mini GPT 과제 0편 - 구현 결과와 전체 구조 지도

mini GPT 과제 랩 구현 시리즈 0편이번 과제는 PyTorch만 사용해 작은 GPT 계열 언어 모델을 직접 구현하는 과제였다. 완성 목표는 ChatGPT 같은 대형 모델이 아니라, LLM의 핵심 부품을 직접 만들어 보며 내부 흐름을 이해하는 것이다.이 글은 정답 코드를 한 번에 던지는 글이 아니다. 실제 구현 브랜치와 노트북 실행 결과를 기준으로, 어떤 파일이 어떤 책임을 맡았고 어떤 테스트가 그 책임을 확인했는지 먼저 지도처럼 정리한다.최종 확인 결과제출 노트북에는 Python 3.11 가상환경과 CUDA 환경에서 실행한 테스트 결과가 저장되어 있었다. 현재 글은 이 실행 결과와 실제 소스 코드를 근거로 작성한다.구분결과의미전체 테스트28 passed필수 구현 함수가 단위 테스트 기준으로 연결됨실..

카테고리 없음 2026.06.01

mini GPT 공부 7편 - GPT를 감성 분류기로 바꾸는 미세조정

밑바닥부터 만드는 mini GPT 공부 시리즈 7편사전학습된 GPT는 기본적으로 다음 토큰을 맞히는 모델이다. 하지만 과제의 마지막 단계에서는 NSMC 리뷰가 긍정인지 부정인지 맞히는 분류 모델로 바꾼다.여기서 핵심은 GPT 전체를 버리는 것이 아니다. 텍스트를 읽어 hidden state를 만드는 backbone은 그대로 쓰고, 마지막 목적에 맞는 classification head를 새로 붙인다.LM head와 classification head구분출력목적LM headvocab_size개 점수다음 토큰 예측classification head2개 점수부정/긍정 분류이번 단계의 입력과 정답{"text": "배우들의 연기가 좋고 끝까지 몰입됐다.", "label": 1}{"text": "전개가 지루하고 결..

카테고리 없음 2026.06.01

mini GPT 공부 6편 - 사전학습, loss, 생성, checkpoint

밑바닥부터 만드는 mini GPT 공부 시리즈 6편GPTModel이 logits를 만들 수 있게 되면, 이제 학습 루프가 필요하다. 사전학습의 목적은 다음 토큰 예측 loss를 줄이는 것이다.이때 loss 계산, optimizer update, 검증 loss, 텍스트 생성, checkpoint는 따로 떨어진 기능처럼 보이지만 하나의 학습 루프 안에서 연결된다.사전학습 루프batch-> model(input, targets)-> cross entropy loss-> loss.backward()-> optimizer.step()-> 주기적으로 validation loss 확인-> 주기적으로 checkpoint 저장학습과 생성은 같은 모델을 다르게 쓰는 일이다구분입력출력 사용법사전학습input IDs + ta..

카테고리 없음 2026.06.01

mini GPT 공부 5편 - GPT Block을 이루는 LayerNorm, GELU, Residual

밑바닥부터 만드는 mini GPT 공부 시리즈 5편attention만으로 GPT 모델이 완성되지는 않는다. attention 결과를 안정적으로 쌓고, 각 위치별로 비선형 변환을 수행하고, 깊은 층에서도 신호가 흐르도록 만드는 장치들이 필요하다.이 글에서는 GPT block을 이루는 핵심 부품인 LayerNorm, GELU, FeedForward, residual connection을 한 흐름으로 정리한다.GPT block의 기본 흐름x-> LayerNorm-> Causal Multi-Head Attention-> residual add-> LayerNorm-> FeedForward-> residual add이 흐름에서 가장 중요한 규칙은 shape가 계속 `(B, T, C)`로 유지된다는 점이다. 그래야..

카테고리 없음 2026.06.01

mini GPT 공부 4편 - Multi-Head Attention은 왜 head를 나누는가

밑바닥부터 만드는 mini GPT 공부 시리즈 4편self-attention 하나로도 각 토큰이 문맥을 참고할 수 있다. 그런데 GPT는 보통 attention을 하나만 쓰지 않고 여러 head로 나눈다.핵심은 여러 관점이다. 같은 문장을 보더라도 한 head는 가까운 단어 관계를, 다른 head는 문장 전체 분위기를, 또 다른 head는 특정 패턴을 더 잘 보도록 학습될 수 있다.이번 글에서 다루는 것head를 나눈다는 말의 shape 의미`d_model`과 `n_heads`, `head_dim`의 관계각 head 결과를 다시 합치는 이유Multi-Head Attention을 shape 흐름으로 읽는 법1. head는 embedding 차원을 나눈 작은 attention 공간이다입력 벡터의 마지막 차원..

카테고리 없음 2026.05.31

mini GPT 공부 3편 - Self-Attention과 Causal Mask

밑바닥부터 만드는 mini GPT 공부 시리즈 3편embedding까지 끝나면 각 토큰은 벡터가 된다. 하지만 벡터가 되었다고 해서 문맥을 이해하는 것은 아니다. 각 위치의 토큰이 앞뒤 토큰과 어떤 관계를 맺는지 계산해야 한다.self-attention은 같은 문장 안의 토큰들이 서로를 참고하는 방식이다. GPT에서는 여기에 causal mask가 붙어서 현재 토큰이 미래 토큰을 보지 못하게 만든다.이번 글에서 다루는 것attention이 “어떤 토큰을 얼마나 참고할지” 정하는 방식Query, Key, Value를 너무 어렵게 보지 않는 방법causal mask가 왜 다음 토큰 예측에서 필수인지attention score, softmax, weighted sum의 흐름1. Attention은 참고 비율을..

카테고리 없음 2026.05.31

mini GPT 공부 2편 - Dataset과 Embedding, 다음 토큰 예측 샘플 만들기

밑바닥부터 만드는 mini GPT 공부 시리즈 2편BPE가 문장을 token ID 목록으로 바꾸었다면, 다음 단계는 그 목록을 학습 샘플로 자르는 일이다. GPT는 현재까지의 토큰을 보고 다음 토큰을 맞히도록 학습한다.이 단계에서 자주 헷갈리는 지점은 두 가지다. 첫째, input과 target은 길이가 같지만 한 칸 밀려 있다. 둘째, token ID는 그 자체로 의미 벡터가 아니므로 embedding을 거쳐야 한다.이번 글에서 다루는 것GPTDataset이 input과 target을 어떻게 만드는지context_length와 stride가 샘플 수에 어떤 영향을 주는지token embedding과 position embedding을 왜 더하는지최종 입력 shape가 왜 `(batch_size, seq..

카테고리 없음 2026.05.31

mini GPT 공부 1편 - 한글 토큰화와 byte-level BPE

밑바닥부터 만드는 mini GPT 공부 시리즈 1편GPT는 문자열을 직접 읽지 않는다. 먼저 문장을 숫자 ID의 목록으로 바꾼다. 이 변환을 담당하는 부품이 토크나이저다.이번 과제에서 중요한 지점은 교재처럼 이미 만들어진 토크나이저를 쓰지 않는다는 점이다. 특히 한글 리뷰 데이터를 다루기 때문에, 공백 기준 단어 분리보다 더 낮은 단위에서 시작해야 한다.이번 글에서 다루는 것토큰화가 왜 GPT 구현의 첫 단계인지한글에서 공백 기준 토큰화가 왜 쉽게 무너지는지UTF-8 byte에서 시작하는 BPE가 어떤 문제를 해결하는지encode와 decode에서 가장 조심해야 할 복원 원칙1. 토큰화는 문장을 모델의 입력으로 바꾸는 번역기다사람은 “이 영화는 정말 좋았다”를 문장으로 읽는다. 하지만 모델은 이 문장을 ..

카테고리 없음 2026.05.31