AI Briefing

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가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.