nesformer: Qwen 3.5 가중치 내에서 닌텐도 엔터테인먼트 시스템(NES) 실행하기

LLM 가중치를 통한 NES 에뮬레이션

esformer는 완전한 닌텐도 엔터테인먼트 시스템(NES) 6502 CPU, 2KB 작업 RAM 및 카트리지 ROM을 표준 Qwen3_5ForCausalLM 모델의 가중치로 컴파일하는 기술적 구현체입니다. 이 프로젝트는 모델을 학습시키는 대신, 컴파일러를 사용하여 기계의 상태를 나타내는 특정 가중치 값을 계산합니다. 게임이 실행되면 모델은 CPU의 실행 추적을 토큰 단위로 예측하고, 호스트 프로그램은 디스플레이, 컨트롤러, vblank 인터럽트와 같은 주변 장치를 관리합니다.

이 프로젝트는 이전에 CHIP-8 및 RISC-V 코어로 이 기술을 시연했던 Qwenputer 아키텍처를 기반으로 합니다. 핵심 혁신은 모델의 Gated DeltaNet 상태를 기계의 메모리로 사용하는 것으로, 상태 행렬의 특정 행이 레지스터, RAM 및 ROM을 위한 메모리 셀 역할을 합니다.

기술 아키텍처

esformer 체크포인트는 로드하기 위해 별도의 커스텀 모델 코드가 필요 없는 표준 Hugging Face 폴더입니다. 이 시스템은 다음과 같은 구조적 분할에 의존합니다:

  • 모델 내부 (가중치 + DeltaNet 상태): 151개의 공식 오피코드, 주소 지정 모드, 플래그, 스택 및 2KB 작업 RAM을 포함한 6502 코어. 카트리지 PRG-ROM은 명령어 가져오기용과 데이터 읽기용으로 각각 한 번씩, 총 두 번 저장됩니다.
  • 호스트 내부 (host.py): PPU(스캔라인 렌더러), 컨트롤러 입력 처리, APU 레지스터 쓰기 및 NMI 타이밍. 호스트는 I/O 브리지 역할을 하며 NMI 및 데이터 읽기 토큰을 모델의 스트림에 주입합니다.

각 Gated DeltaNet 헤드는 128 × 128 상태 행렬을 유지합니다. 게이트를 열어두고 원-핫 키를 사용함으로써, 시스템은 특정 행을 덮어쓰거나 다시 읽을 수 있으며, 트랜스포머의 순환 상태 내에 효과적으로 지속적인 메모리 공간을 생성합니다.

성능 및 한계

esformer는 기능적이지만 실제 하드웨어보다 훨씬 느리며, 실제 NES보다 약 150~290배 느리게 실행됩니다. 실시간 성능을 위해서는 초당 약 700,000개의 토큰이 필요하지만, 현재 구현은 Numba로 컴파일된 엔진을 사용하여 단일 CPU 코어에서 초당 약 1,650개의 토큰을 달성합니다.

주요 한계는 다음과 같습니다:

  • NROM만 지원: 현재 iNES 매퍼 0(32KB PRG-ROM)으로 제한됩니다. 뱅크 스위칭 매퍼는 아직 지원되지 않습니다.
  • 명령어 세트: 공식 6502 오피코드만 구현되어 있으며, 비공식 오피코드는 HALT를 트리거합니다.
  • 하드웨어 충실도: PPU와 APU가 가중치 내에서 시뮬레이션되지 않으므로 오디오가 없으며, 스캔라인 중간의 PPU 효과가 캡처되지 않습니다.

커뮤니티 통찰 및 토론

이 프로젝트는 컴퓨팅 기질로서 LLM의 효율성에 관한 논쟁을 불러일으켰습니다. 댓글 작성자들은 결정론적 어셈블리 코드의 효율성과 트랜스포머 기반 에뮬레이션의 컴퓨팅 집약적 특성 사이의 극명한 대조를 지적했습니다.

"저는 이런 해킹을 좋아합니다. 비록 효율성 관점에서는 제 어셈블리 코드 골프 뇌에 끔찍한 일이지만요. 그리고 이는 결정론적 프로그램이 AI에 비해 얼마나 더 효율적인지 다시 한번 깨닫게 해줍니다." — jacquesm

다른 이들은 LLM 기능에 대한 더 넓은 의미를 지적하며, 이는 LLM이 외부 도구 호출 루프에 의존하는 대신 내부적으로 VM이나 도구를 호스팅할 수 있는 범용 컴퓨팅 매체로 기능할 수 있음을 증명한다고 제안했습니다.

"원칙적으로 LLM 가중치 내부에 작은 VM을 컴파일할 수 있습니다... LLM이 현재의 '외부' 도구 호출로 느린 자기회귀 토큰 방출을 수행하는 대신, 웹 검색을 제외한 모든 것을 행렬 곱셈 연산만으로 LLM 내부에서 문자 그대로 실행할 수 있습니다." — armcat

성능 오버헤드에도 불구하고, 이 프로젝트는 Gated DeltaNet 아키텍처에 대한 엄격한 스트레스 테스트 역할을 하며 결정론적이고 상태를 유지하는 실행 환경으로서 LLM을 사용할 잠재력을 강조합니다.

Sources

관련