C++17로 Transformer 구현
I built a transformer in C++17 from scratch — no PyTorch, no BLAS, no dependencies. Trains on CPU. 0.83M params, full analytical backprop, 76 min to val loss 1.64.
·2026.05.03 03:11
핵심 내용
C++17로 만든 826,985개 파라미터 Transformer가 단일 CPU 코어에서 76.2분 만에 검증 손실 1.6371을 기록했다.
자세히 보기
Quadtrix.cpp는 C++17 표준 라이브러리와 POSIX sockets만으로 만든 GPT-style decoder-only language model이다. PyTorch, LibTorch, BLAS, autodiff 라이브러리는 쓰지 않았다.
구현 범위
- tensor library, token/position embeddings, LayerNorm, Linear, Dropout
- multi-head causal self-attention, feed-forward block, character-level tokenizer
- cross-entropy, softmax, layernorm, attention, Q/K/V, ReLU, dropout, embedding scatter-add의 backward pass
- AdamW optimizer와 OpenMP 병렬화
학습 설정
- 4 layers x 4 heads x 200d decoder-only transformer
- 826,985 params
- 128-character context window
- 31.4M characters의 아동 동화 코퍼스
결과
- 단일 CPU 코어에서 76.2분 학습
- 최저 검증 손실 1.6371 nats
- OpenMP 적용으로 matmul, bmm, softmax, layernorm에서 8코어 기준 5~7배 속도 향상
LayerNorm backward에서는 mu, inverse-std, x-hat를 forward에 저장해 3-term formula를 적용했고, attention backward에서는 attention weights와 projection output에 적용된 dropout mask를 분리해 추적했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.