NES 에뮬레이터를 LLM 가중치 1GB에 컴파일
원제 Show HN: A working Nintendo in ~1GB of Qwen weights
140 포인트댓글 97
Key Point
LLM 가중치에 CPU를 직접 컴파일한 기술적 성취로, 신경망이 기존 프로그램을 학습 없이 물리적으로 실행할 수 있음을 보여주는 참신한 사례다.
핵심 요약
- Nintendo Entertainment System(NES)의 6502 CPU와 2KB 작업 메모리, 게임 롬을 Qwen3.5 모델의 가중치 안에 컴파일했다.
- 학습 없이 컴파일러가 모든 가중치를 생성했으며, 게임 실행 시 모델이 CPU 실행 로그를 토큰 단위로 예측한다.
- 호스트 프로그램이 화면 렌더링, 컨트롤러 입력, vblank 인터럽트를 담당한다.
- Qwenputer의 컴파일러를 재사용했으며, 모델의 DeltaNet 상태가 기계의 메모리 역할을 한다.
- 6502의 151개 공식 명령어, 모든 어드레싱 모드, 32KB PRG-ROM을 지원한다.
- NROM 보드(iNES 매퍼 0)만 지원하며, 뱅크 스위칭이 필요한 더 큰 게임은 실행 불가하다.
- NES 테스트 로그 3,348개 명령어와 게임 코드 570만 명령어에 대해 참고 CPU와 정확히 일치하는지 검증했다.
- 466.6M 파라미터(bf16 기준 933MB)이며, 가중치 압축 시 3.3MB이다.
- 초당 약 1,650개 토큰 처리하며 실제 NES 대비 150~290배 느리다.
- 게임 실행 중 vblank 대기 루프를 감지하면 토큰 처리를 2.6~4.2배 줄일 수 있다.
- 비공식 명령어, 뱅크 스위칭, APU 프레임 IRQ를 지원하지 않으며, PPU와 APU는 가중치에 포함되지 않는다.
- MIT 라이선스이며 GitHub에서 테스트 롬 3개와 함께 공개되었다.