# Z80-μLM, 40KB 안에 담긴 ‘대화형 AI’

> Clean Markdown view of GeekNews topic #25430. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25430](https://news.hada.io/topic?id=25430)
- GeekNews Markdown: [https://news.hada.io/topic/25430.md](https://news.hada.io/topic/25430.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-12-30T09:46:34+09:00
- Updated: 2025-12-30T09:46:34+09:00
- Original source: [github.com/HarryR](https://github.com/HarryR/z80ai)
- Points: 22
- Comments: 2

## Summary

**Z80‑μLM**은 1970년대 8비트 **Z80 프로세서** 위에서 동작하는 초소형 **대화형 언어 모델**로, 약 40KB의 실행 파일 안에 추론 엔진과 가중치, UI를 모두 담았습니다. 2비트 양자화와 **16비트 정수 연산**만으로 문자 단위 텍스트 생성을 수행하며, **trigram 해시 인코딩**을 통해 오타나 단어 순서 변화에도 안정적인 응답을 제공합니다. 복잡한 문맥 이해는 어렵지만, 극도로 제한된 하드웨어에서도 AI 대화를 구현할 수 있음을 보여주는 실험적 시도입니다.

## Topic Body

- **Z80-μLM**은 1976년산 **Z80 프로세서(4MHz, 64KB RAM)** 위에서 동작하는 초소형 **대화형 인공지능 모델**  
- **양자화 인식 학습(QAT)** 을 적용해 2비트 가중치와 16비트 정수 연산만으로 **문자 단위 텍스트 생성** 수행  
- 약 **40KB 크기의 .COM 실행 파일** 안에 추론 엔진, 가중치, 채팅 UI가 모두 포함  
- **trigram 해시 인코딩**으로 입력을 128개의 버킷으로 변환해 오타나 단어 순서에 강인한 응답 생성  
- 복잡한 문맥 이해는 불가능하지만, **제한된 8비트 환경에서도 작동하는 실험적 AI 모델**로 주목받음  
  
---  
### 프로젝트 개요  
- Z80-μLM은 **레트로컴퓨팅 환경에서 구동 가능한 초소형 언어 모델**  
  - 64KB RAM을 가진 Z80 CPU에서 작동하며, **문자 단위 대화형 응답**을 생성  
  - 모델, 추론 코드, UI를 포함한 전체 크기가 약 **40KB**  
- 프로젝트의 핵심 질문은 “얼마나 작게 만들어도 개성을 유지할 수 있는가”였으며, **자가 호스팅 배포**도 가능  
- **튜링 테스트 수준에는 미치지 않지만**, 단순한 대화로 사용자에게 즐거움을 주는 형태  
  
### 두 가지 예제 포함  
- ## tinychat  
  - **일상적인 Q&A 데이터**로 학습된 간단한 챗봇  
    - 인사, 자기소개, 일반 대화에 짧고 개성 있는 답변 제공  
    - 예: “hello” → “HI”, “are you a robot” → “YES”, “do you dream” → “MAYBE”  
- ## guess  
  - **20 Questions 게임** 형태의 모델  
    - 비밀 주제를 알고 있으며, YES/NO/MAYBE로 응답  
    - 사용자가 정답을 맞히면 “WIN” 출력  
- 학습 데이터는 **Ollama 또는 Claude API**를 이용해 생성 가능하며, **클래스 분포 균형 도구** 포함  
  
### 주요 기능  
- **Trigram 해시 인코딩**: 입력 텍스트를 128개의 버킷으로 해시, 오타 허용 및 단어 순서 무관  
- **2비트 가중치 양자화**: 각 가중치가 {-2, -1, 0, +1}, 1바이트당 4개 저장  
- **16비트 정수 추론**: Z80의 16비트 산술 연산 사용  
- **~40KB .COM 파일**: CP/M의 Transient Program Area(TPA)에 적합  
- **자기회귀적 생성**: 문자 단위로 출력 생성  
- **부동소수점 연산 없음**, 고정소수점 스케일링 사용  
- **대화형 모드 지원**: `CHAT` 명령으로 실행  
  
### 상호작용 방식  
- 모델은 입력을 ‘이해’하지 않지만, **입력의 형태(shape)** 를 기반으로 반응  
  - 입력 문장은 **128개의 trigram 버킷**으로 변환되어 의미적 유사성을 유지  
  - 예: “hello there”와 “there hello”는 동일한 버킷 구조로 처리  
- 긴 문장이나 순서 의존 문장은 구분이 어려움  
- ## 짧은 응답의 의미  
  - 1~2단어의 응답으로도 **의외의 뉘앙스 표현** 가능  
    - `OK`: 중립적 수락  
    - `WHY?`: 질문 반박  
    - `R U?`: 존재 의문  
    - `MAYBE`: 불확실성  
    - `AM I?`: 반사적 질문  
  - 이러한 짧은 응답은 사용자가 **맥락을 추론하도록 유도**  
  
### 강점과 한계  
- **강점**  
  - 짧은 입력에 대한 일관된 분류형 응답  
  - **오타·재구성·단어 순서 변화**에 강함  
  - **어휘 선택을 통한 개성 표현**  
  - **제한된 8비트 하드웨어**에서도 실행 가능  
- **한계**  
  - 새로운 문장 생성 불가  
  - 다중 턴 문맥 추적 불가  
  - 문법 이해 불가  
  - 일반 지능 수준에는 미치지 않음  
  
### 아키텍처  
- **입력층**: 128개의 쿼리 버킷 + 128개의 컨텍스트 버킷  
- **은닉층**: 예시 구성 256 → 192 → 128  
- **출력층**: 문자셋의 각 문자당 1개 뉴런  
- **활성화 함수**: ReLU  
- ## 양자화 제약  
  - Z80은 8비트 CPU지만, **16비트 레지스터 쌍(HL, DE, BC)** 을 사용해 누산 및 활성화 수행  
  - 가중치는 **4개씩 1바이트에 저장(2비트 단위)**  
  - 16비트 누산기로 **256개 입력 합산 시 오버플로 방지**  
  - 2비트 가중치로 인해 표현력은 제한적이며, **QAT 없이는 불안정한 학습 결과 발생 가능**  
- ## Z80 내부 루프  
  - 추론의 핵심은 **곱-누산 루프(MAC)**  
    - 가중치를 언팩하고, -2~-1~0~+1 값에 따라 누산기(ACC)에 더하거나 빼는 방식  
    - 각 층 계산 후 **오버플로 방지를 위해 2비트 오른쪽 시프트** 수행  
  - 전체 추론 과정은 **문자 하나당 약 10만 회 연산 반복**  
  
### 라이선스  
- **MIT 또는 Apache-2.0** 중 선택 가능

## Comments



### Comment 48431

- Author: neo
- Created: 2025-12-30T09:46:34+09:00
- Points: 2

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46417815) 
- 완벽한 타이밍임. 나는 Unreal Engine 게임 안에 **VT100 터미널**(코딩 에이전트를 실행하기 위해)과 **Z80 에뮬레이터**, 그리고 CP/M 머신을 프로그래밍할 수 있는 시리얼 브리지를 넣었음  
  [스크린샷](https://i.imgur.com/6TRe1NE.png)  
  누군가가 이렇게 딱 맞는 걸 올려줄 줄은 몰랐음. 정말 기묘하지만 놀라운 우연의 일치임
  - 우리 둘이 **텔레파시**라도 통한 것 같음  
    나는 브라우저 기반 CP/M 에뮬레이터와 IDE를 만들었음: [lockboot.github.io/desktop](https://lockboot.github.io/desktop/)  
    원래 그걸 올리려 했는데, ‘멋진 데모’를 찾다가 토끼굴에 빠졌음
  - James Burke의 *Connections: Alternative History of Technology* 책이 이런 **우연한 연결**들을 잘 다루고 있음
  - 흥미롭지만, imgur를 볼 수 없어서 아쉬움
- 정말 마음에 듦. 바로 **GitHub 스타** 눌렀음  
  나는 60년대 펀치 카드 머신용으로 Fortran IV로 MLP를 짰었음 ([Xortran 프로젝트](https://github.com/dbrll/Xortran))  
  주의 메커니즘이 없고 문맥이 마지막 문장의 **trigram**으로 제한되어 있음에도 상호작용이 꽤 괜찮았음  
  이런 게 60년대 하드웨어에서도 가능했다면, 그 시절의 **SF와 과학**이 완전히 달라졌을 것임
  - 이런 프로젝트는 정말 흥미로움. **놓쳐버린 길**을 보는 느낌임  
    음모론스럽게 말하자면, AI 기업들이 RAM을 대량 매입하는 이유 중 하나가 사람들이 지금이 **홈컴퓨터 혁명기**와 비슷하다는 걸 깨닫지 못하게 하려는 것 같음  
    나는 1TB RAM 머신을 쓰는데, 커스텀 에이전트로 상용 모델보다 성능이 좋음. 개인적이고 안전하며, **수익화**되지 않음
- 나도 자주 생각함. **‘최소 기능 LLM’** 이란 게 뭘까? 간단한 대화가 가능한 수준의 모델 말임  
  그리고 그다음 질문은, 외부 데이터를 조회하며 학습할 수 있는 작은 모델을 만들 수 있을까 하는 것임  
  만약 실시간으로 배우는 초소형 모델을 만들 수 있다면, 완전히 **로컬화된 개인 비서**를 갖게 되는 셈임
  - 이건 Karpathy가 말한 **‘cognitive core’** 개념과 거의 같음  
    백과사전식 지식은 거의 없지만, 기본적인 추론과 도구 사용 능력을 가진 아주 작은 모델임  
    [참고 트윗](https://x.com/karpathy/status/1938626382248149433)
  - 만약 90년대에 이런 기술이 있었다면, **기초적인 LLM**은 이미 존재했을지도 모름  
    그랬다면 지금 세상은 완전히 달랐을 것 같음
  - RWKV를 보면 흥미로움: [rwkv.com](https://www.rwkv.com/)  
    ‘RNN이 LLM에 적합했다면 어땠을까’라는 **실험적 케이스 스터디**임  
    CPU에서 미친 듯이 빠름
  - Minecraft 안에서 누군가 만든 LLM이 있는데, 500만 개의 8비트 가중치로 간단한 대화를 처리함  
    다만 큰 **컨텍스트 윈도우**를 잘 활용하긴 어려울 듯함
- AI 기업들이 **Z80 칩**을 전부 사들여 가격을 올릴 것 같다는 농담임
  - 이미 늦었음. 작년에 재고가 다 떨어졌음
- 만약 어떤 모델에 **비밀(passphrase)** 을 학습시켜서, 사용자가 질문을 통해 그걸 추측해야 한다면  
  모델의 가중치에 접근하면 그 비밀을 역으로 추론할 수 있을까, 아니면 질문을 통해서만 접근 가능할까 궁금함
  - 그 질문을 보니 이 논문이 떠오름: [Planting Undetectable Backdoors in Machine Learning Models](https://arxiv.org/abs/2204.06974)  
    표면적으로는 정상 작동하지만, 내부에 **탐지 불가능한 백도어**를 심는 방법을 다룸
  - 모델이 작을수록 그런 비밀은 **가중치 분석으로 쉽게 추출**될 수 있음  
    일반적으로는 ‘**해석 가능성(interpretability)** ’ 문제에 속함
- 적절한 코드와 훈련 인프라만 있었다면, **ELIZA**도 훨씬 강력했을 것 같음
  - 원래 ELIZA는 1960년대 IBM 7094 메인프레임에서 돌아갔음  
    32K×36비트 워드 구조였고, 바이트 연산은 지원하지 않았음  
    40KB짜리 Z80 실행 파일을 그대로 옮기면 꽤 빡빡했을 것임  
    하지만 대부분이 2비트 가중치라면 가능했을 수도 있음  
    이후 하드웨어, 특히 1976년의 **Z80**에서는 훨씬 여유로웠을 것임
- 나도 직접 **Z80 컴퓨터**를 설계하고 제작했음. 현재는 32KB ROM과 32KB RAM을 탑재함  
  다음 버전에서는 확장할 예정이라 꼭 시도해볼 생각임
  - 요즘 **RAM 가격**이 너무 비쌈
- 입력 전체를 한 번에 임베딩으로 처리한다면, 이건 Transformer도 RNN도 아닌 **MLP 구조**인 것 같음
- 예전 **자유 입력 RPG**에 이런 퍼지 매처가 있었으면 좋았을 것임  
  당시엔 정확한 키워드 매칭만 돼서 어색했음  
  아마 그런 방식의 마지막 게임은 2001년의 *Wizardry 8*이었을 것임
- 멋진 작업임. 혹시 **AGI**까지의 예상 일정이 어떻게 됨?
  - 아마 **4월 초**쯤일 듯함
  - 멀지 않은 **코너 바로 뒤**에 있을 것 같음

### Comment 48437

- Author: crawler
- Created: 2025-12-30T10:35:44+09:00
- Points: 1

최신 기술을 과거의 하드웨어에서 돌린다는 게 정말 너무 신기한 거 같습니다.  
  
미래에 AGI가 나왔을 때 지금 지구에 있는 컴퓨팅 파워를 모두 모은다면 돌릴 수 있을까요?
