MacMind – 1989년 Macintosh의 HyperCard로 구현한 Transformer 신경망
Show HN: MacMind – A transformer neural network in HyperCard on a 1989 Macintosh
TL;DR Highlight
1987년 스크립팅 언어 HyperTalk으로 1,216개 파라미터짜리 단일 레이어 Transformer를 구현하고 실제 Macintosh SE/30에서 학습시킨 교육용 프로젝트다. 현대 LLM의 핵심 수학이 30년 전 하드웨어에서도 동일하게 동작함을 보여준다.
Who Should Read
Transformer와 backpropagation의 내부 동작 원리를 시각적으로, 코드 레벨에서 깊이 이해하고 싶은 개발자나 AI를 처음 공부하는 사람. 특히 블랙박스 없이 모든 수식을 직접 뜯어보고 싶은 사람에게 적합하다.
Core Mechanics
- 이 프로젝트는 HyperTalk(1987년에 만들어진 HyperCard용 스크립팅 언어)로 완전한 Transformer 신경망을 구현했다. 행렬 연산을 위해 설계된 언어가 아닌데도 컴파일된 코드나 외부 라이브러리 없이 순수 스크립트만으로 동작한다.
- 모델 크기는 1,216개 파라미터의 단일 레이어, 단일 헤드 Transformer다. GPT-4의 약 1조 개 파라미터와 비교하면 극도로 작지만, forward pass → loss 계산 → backward pass → 가중치 업데이트로 이어지는 학습 루프의 수학은 완전히 동일하다.
- 학습 태스크는 비트 역순 치환(bit-reversal permutation)이다. 이는 고속 푸리에 변환(FFT)의 첫 번째 단계로, 각 위치 인덱스의 이진 표현을 뒤집어 순서를 재배열하는 연산이다. 예를 들어 8개 원소 시퀀스에서 위치 1(001)은 위치 4(100)로 이동한다.
- 구현 내용에는 token embedding(토큰을 벡터로 변환), positional encoding(위치 정보 추가), scaled dot-product self-attention(쿼리-키-밸류 기반 어텐션), cross-entropy loss, 완전한 backpropagation, stochastic gradient descent(확률적 경사하강법)이 모두 포함되어 있다.
- HyperCard의 스크립트 에디터에서 Option-클릭하면 버튼 뒤의 실제 수식 코드를 바로 볼 수 있다. 학습률 변경, 학습 태스크 교체, 모델 크기 조정을 모두 GUI 안에서 직접 할 수 있어 학습 도구로서의 목적이 명확하다.
- 제작 목적은 'AI는 마법이 아니라 수학'임을 증명하는 것이다. backpropagation과 attention이 TPU 클러스터에서 돌아가든 1987년산 68000 프로세서에서 돌아가든 수학은 같다는 메시지를 담고 있다.
- 실제로 1989년 Macintosh SE/30에서 학습을 완료했으며, Python으로 작성된 validate.py 검증 스크립트도 함께 제공된다.
Evidence
- 오래된 하드웨어에서 현대 AI 아이디어를 구동하는 것(이 프로젝트나 Windows 3.1에서 LLM 추론 실행 등)이 갖는 의미에 대해, '발전이 단순히 더 큰 GPU와 더 많은 컴퓨팅 때문만은 아니라 더 영리한 수학과 알고리즘 덕분임을 상기시켜 준다'는 반응이 있었다. '하드웨어를 던져버리는' 현재 트렌드보다 초기 컴퓨팅의 정신에 더 가깝다는 평가다.
- 1988년에 backpropagation을 처음 공부하면서 동시에 HyperCard 프로그래밍에 빠졌다는 사람이 '이 프로젝트가 그 시절 우아한 도구를 떠올리게 한다'고 회고하며 반가움을 표했다.
- HyperCard Simulator(hcsimulator.com)에서 실행 가능하다는 정보가 공유됐다. XCMD(외부 컴파일 명령)가 없으면 시뮬레이터에서도 충분히 동작한다며 직접 임포트한 링크(https://hcsimulator.com/imports/MacMind---Trained-69E0132C)까지 제공했다.
- GitHub 리포지토리에 Python 검증 스크립트만 있고 실제 HyperCard 스택(.img 파일)의 소스코드가 어디 있는지 묻는 댓글이 있었다. 실제 HyperTalk 코드를 직접 보고 싶어하는 개발자들의 관심을 반영한다.
- '현대적 개념들이 현대적인 이유는 단지 그 시절에 아무도 생각하지 않았기 때문'이라며, 이 프로젝트가 고대 그리스에 세균 이론을 전달하는 것 같은 느낌이라는 철학적 댓글도 있었다. 기술의 발전이 근본 개념의 발명보다 구현 수단의 발전임을 상기시키는 맥락이다.
How to Apply
- Transformer의 attention, backpropagation 수식을 이론이 아닌 실제 동작하는 코드로 공부하고 싶다면, HyperCard Simulator(hcsimulator.com)에서 MacMind를 직접 열고 각 버튼을 Option-클릭해 수식 구현 코드를 단계별로 읽으면 된다. 외부 라이브러리 없이 순수 수식으로만 구현되어 있어 개념을 명확히 파악할 수 있다.
- 주니어 개발자나 비ML 백엔드 개발자에게 Transformer 학습 과정을 설명해야 할 때, MacMind의 학습 태스크(비트 역순 치환)와 1,216 파라미터 모델을 예시로 들면 'forward pass → loss → backward pass → weight update' 루프를 직관적으로 설명할 수 있다.
- 학습률, 모델 크기 등 하이퍼파라미터가 학습에 미치는 영향을 빠르게 실험해보고 싶다면, HyperCard 스크립트 에디터에서 값을 수정하고 재실행해볼 수 있다. 실험 환경이 완전히 투명하게 공개되어 있어 각 변경이 결과에 미치는 영향을 추적하기 쉽다.
Terminology
HyperTalk1987년 Apple이 HyperCard용으로 만든 영어 문장 형태의 스크립팅 언어. 데이터베이스나 인터랙티브 카드 스택을 만들기 위해 설계됐으며, 행렬 연산과는 거리가 멀다.
bit-reversal permutation배열의 각 인덱스를 이진수로 표현한 뒤 비트 순서를 뒤집어서 새 위치를 결정하는 재배열 방법. FFT(고속 푸리에 변환)의 첫 단계로 사용된다.
self-attention입력 시퀀스의 각 토큰이 다른 모든 토큰과의 관련성 점수를 계산해 문맥을 파악하는 Transformer의 핵심 메커니즘. '이 단어를 이해하려면 문장의 어느 부분을 참고해야 하는가'를 학습한다.
backpropagation신경망이 틀린 예측을 했을 때 각 파라미터가 얼마나 잘못됐는지 역방향으로 계산해 가중치를 수정하는 학습 알고리즘. 1980년대부터 존재했던 개념이다.
positional encodingTransformer에 입력할 때 각 토큰의 위치 정보를 벡터에 추가하는 방법. 순서를 모르는 attention 메커니즘에게 '이 토큰이 몇 번째 위치인지'를 알려준다.
stochastic gradient descent전체 데이터셋 대신 무작위로 선택한 일부 샘플로 기울기를 계산해 파라미터를 업데이트하는 최적화 방법. 계산 비용을 줄이면서도 학습이 가능하다.