20분. 일반적인 노트북 환경에서 4M 파라미터 규모의 소형 언어 모델을 처음부터 끝까지 학습시키는 데 걸리는 시간이다. 이는 거대 언어 모델이 블랙박스처럼 느껴지는 사용자들에게 모델의 내부 구조를 직접 해부할 기회를 제공한다. 복잡한 클라우드 인프라 없이 개인용 컴퓨터만으로도 인공지능의 학습 과정을 온전히 재현할 수 있다는 의미다. 그런데 이 실습은 단순히 모델을 돌려보는 것에 그치지 않고, 모델을 구성하는 핵심 부품을 직접 설계하는 과정을 포함한다.

10M 파라미터로 압축한 학습 파이프라인

이번 워크숍은 GPT(생성형 사전학습 트랜스포머) 모델의 학습 파이프라인을 밑바닥부터 구축하는 실습형 프로젝트다. 목표는 셰익스피어 스타일의 텍스트를 생성하는 모델을 만드는 것이며, 학습 효율을 극대화하기 위해 모델 규모를 10M 파라미터 수준으로 최적화했다. 기존의 nanoGPT(GPT-2 124M 파라미터 재현 프로젝트)가 대규모 학습을 지향한다면, 이번 프로젝트는 학습의 핵심 원리만을 남겨 1시간 이내에 모든 과정을 마칠 수 있도록 설계되었다. 사용자는 Tokenizer(텍스트를 숫자로 변환하는 도구), Transformer(문맥을 파악하는 신경망 구조), 학습 루프, 텍스트 생성기 등 총 3개의 핵심 파일인 model.py, train.py, generate.py를 직접 작성하게 된다.

하드웨어 가속과 실행 환경

학습은 사용자의 로컬 환경에 맞춰 자동으로 최적화된다. Apple Silicon GPU의 MPS(애플 기기용 가속 라이브러리), NVIDIA GPU의 CUDA(엔비디아 그래픽카드 가속 도구), 혹은 일반 CPU 환경을 자동으로 감지하여 실행한다. 환경 설정은 uv(파이썬 패키지 관리 도구)를 사용하여 다음과 같이 간단히 진행할 수 있다.

bash
uv sync

로컬 환경이 준비되지 않은 경우 Google Colab(구글의 클라우드 기반 파이썬 실행 환경)에 파일을 업로드한 뒤 !python train.py 명령어를 입력하여 즉시 학습을 시작할 수 있다. M3 Pro 칩셋 기준, Tiny 모델(0.5M 파라미터)은 약 5분, Small 모델(4M 파라미터)은 약 20분, Medium 모델(10M 파라미터)은 약 45분의 학습 시간이 소요된다.

기존 대규모 모델과의 구조적 차이

기존의 대규모 언어 모델들이 사용하는 BPE(바이트 페어 인코딩, 텍스트를 효율적으로 쪼개는 방식) 토큰화 대신, 이번 실습은 문자 단위 토크나이저를 채택했다. 이는 어휘 사전 크기를 65개로 고정하여, 1MB 수준의 소규모 데이터셋에서도 모델이 패턴을 효과적으로 학습할 수 있게 한다. BPE는 어휘 사전이 너무 크면 작은 데이터셋에서 토큰 간의 관계를 학습하기 어렵기 때문이다. 모델은 입력 텍스트를 토큰 ID로 변환한 뒤, 토큰 임베딩과 위치 임베딩을 거쳐 여러 Transformer 블록을 통과한다. 이후 다음 토큰의 확률을 계산하는 logits(모델이 출력하는 원시 점수)를 산출하며, 이 과정에서 LayerNorm(학습 안정화 기술), MLP(다층 퍼셉트론), AdamW(최적화 알고리즘), 그래디언트 클리핑(기울기 폭주 방지 기술) 등이 순차적으로 적용된다.

학습 결과와 활용

개발자가 직접 구현한 모델은 temperature(생성 시 무작위성 조절 값)와 top-k(확률 높은 상위 후보만 선택하는 방식) 샘플링을 통해 텍스트를 생성한다. 이번 실습의 상세한 기술적 배경은 nanoGPTAttention Is All You Need 논문, 그리고 TinyStories 연구를 통해 확인할 수 있다. 모델의 구조를 직접 코드로 구현해보는 경험은 추상적인 벤치마크 수치 너머의 실질적인 이해를 가능하게 한다.

모델의 성능은 학습 데이터의 질과 파라미터의 정교한 조화에서 결정된다.