Skip to content

seonwooj0810/llm-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

llm-study

Java로 직접 구현해보는 미니 LLM 학습 프로젝트. 외부 ML 라이브러리 없이 Transformer 의 5단계 흐름(토크나이저 → 임베딩 → 어텐션/FFN → LM Head → 샘플링)을 한 단계씩 짜보며 GPT 계열이 내부에서 무엇을 하는지 직접 눈으로 확인하는 것이 목적이다.

학습 자체보다 "각 단계에서 텐서가 어떤 모양으로 흘러가는가" 를 이해하는 데 초점이 맞춰져 있다.

실행

IntelliJ 에서 Main.java 를 실행하거나, CLI 에서:

javac -d out/llm src/main/java/llm/*.java
java -cp out/llm llm.Main

작은 코퍼스로 토크나이저를 만들고, 모델을 한 번 forward 시켜 각 단계의 텐서 모양을 출력한다. 마지막에는 한 문장 overfit 학습 데모(numerical gradient SGD)까지 돌린다.

구성

파일 역할 5단계 매핑
Tokenizer.java 단어 단위 토크나이저 (encode / decode) Phase 1
Embedding.java 토큰 ID → 벡터 lookup Phase 2
PositionalEncoding.java sin/cos 위치 신호 주입 Phase 2
MultiHeadAttention.java Q·K·V → softmax → 가중합 Phase 3
FeedForward.java 토큰별 비선형 변환 (2-layer MLP) Phase 3
OutputHead.java hidden vector → vocab logits → softmax Phase 4
Sampler.java 확률 분포에서 토큰 1개 선택 (argmax) Phase 5
MiniLLM.java 위 컴포넌트들을 연결한 모델 본체 전체
Trainer.java numerical gradient 기반 SGD 학습 루프 (training)
Matrix.java 행렬 연산 유틸
Main.java 실행 진입점 + 단계별 콘솔 출력

하이퍼파라미터는 장난감 크기 (dModel=8, nHeads=2, blocks=1). 흐름은 GPT-3 와 동일하지만 가중치는 학습되지 않은 랜덤이므로 생성 결과 자체는 의미 없는 단어 나열이 된다.

더 읽기

  • LLM_5단계_정리.md — 이 코드를 Transformer 표준 5단계 관점으로 다시 묶고, 각 단계에서 무슨 일이 일어나는지 정리한 학습 노트.

About

Java로 미니 LLM을 밑바닥부터 구현해보는 학습 프로젝트 (토크나이저·어텐션·학습 루프)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages