Soul Player C64 – 1MHz Commodore 64에서 돌아가는 실제 transformer
·2026.04.21 04:51
Commodore 64에서 2층 transformer를 6502 어셈블리로 구현했다.
Soul Player C64는 수정하지 않은 Commodore 64에서 동작하는 2층 decoder-only transformer다.
- 약 25,000개 int8 파라미터를 사용하며, 4개 attention heads × 8차원, 32차원 embedding, 64 hidden-unit FFN 구조로 구성된다.
- real multi-head causal self-attention, real softmax, real RMSNorm을 6502/6510 hand-written assembly로 구현했다.
- 성능은 토큰당 약 60초 수준이며, 전체 모델은 floppy disk에 들어갈 정도로 작다.
- 핵심 구현 포인트는 integer attention score normalization 수정이다. score를 14비트만 시프트하도록 조정해 128-entry exp lookup table이 의미 있는 attention weight를 만들 수 있게 했다.
- 모델은 QAT(quantization-aware training) 로 학습하며, 학습 중 실제 int8 forward pass 결과를 함께 평가한다.
- 학습 파이프라인은 BPE tokenizer(128 tokens) 를 만들고, 체크포인트를 저장한 뒤, 이를 .prg 와 .d64 디스크 이미지로 빌드한다.
- 테스트는 float reference → integer reference → memory-faithful shadow → 6502/6510 assembly → build round-trip까지 전체 경로를 검증한다.
실행 방법도 함께 제공된다. 에뮬레이터(VICE)에서 LOAD"SOULPLAYER",8,1 후 RUN으로 시작할 수 있고, 로컬에서는 python soulchat.py로 같은 정수 연산을 더 빠르게 돌릴 수 있다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.