Hacker News

A tiny world model running games on a Raspberry Pi Pico 2 W

게임마다 다른 월드 모델, Pico 2 W에서 게임 화면을 만들고 직접 학습

tinyworldformer는 월드 모델이 게임의 다음 화면과 보상을 예측하고 별도 에이전트가 행동을 고르는 데모입니다. 게임별 모델을 Pico 2 W용으로 구현했으며, 홀드아웃 화면 정확도는 게임마다 달랐고 보드의 실제 프레임 속도는 측정하지 않았습니다.

본문

tinyworldformer 저장소는 라즈베리 파이 Pico 2 W에서 게임 화면을 생성하고 그 안에서 에이전트가 플레이하는 데모를 공개했습니다. 월드 모델은 현재 화면과 행동을 받아 다음 화면과 보상을 예측하고, 별도 액터 네트워크는 생성된 화면을 보고 행동을 고릅니다. Breakout, Doom-lite, Flappy Bird, Pong, Pac-Man lite에 각각 다른 모델을 준비했습니다.

월드 모델은 하나의 트랜스포머 블록을 같은 가중치로 1~4회 반복하는 구조입니다. 가중치는 int8로 양자화했고 Pico 2 W의 RP2350에서 모델과 액터가 한 코어로 실행됩니다. 게임 상태는 격자 화면에 담습니다. 배경 셀은 위치마다 가장 가능성 높은 값을 고르고, 공이나 캐릭터처럼 하나만 있어야 하는 요소는 화면 전체에서 위치를 하나 선택해 중복 생성을 막습니다. 무작위 이벤트 뒤에는 후보 위치 중 하나를 뽑아 새 서브나 적의 재등장을 표현합니다.

저장소가 2회 반복 설정으로 보고한 홀드아웃 프레임 정확도는 Breakout 99.99%, Doom-lite 83.6%, Flappy Bird 100%, Pong 99.45%, Pac-Man lite 86.4%입니다. 정확도는 예측 화면의 모든 셀이 실제 게임 화면과 일치한 전이의 비율이며, 무작위 이벤트 직후 전이는 계산에서 제외했습니다. 에이전트가 모델 안에서 5,000스텝 플레이한 별도 점검에서는 Pac-Man의 잘못된 게임 상태 742건과 잘못된 보상 38건이 나왔습니다. 기록된 전이의 정확도와 모델 안에서 이어지는 플레이의 오류는 서로 다른 지표입니다.

반복 횟수에 따른 변화도 게임마다 달랐습니다. Doom-lite의 홀드아웃 정확도는 1회 반복 때 59.8%에서 2회 83.6%로 올랐고, 3회에는 85.9%를 기록한 뒤 4회에는 84.7%였습니다. Breakout과 Flappy Bird는 1회 반복부터 정확도가 높았습니다. 저장소는 Pico에서 플레이할 때 게임별 프레임 간격을 66~150밀리초로 늦춘다고 설명하지만, 작성자는 Pico 자체의 프레임 속도를 측정하지 않았다고 밝혔습니다. 1~5밀리초/프레임은 브라우저용 WebAssembly 빌드에서 보고한 수치입니다.

보드에서는 새 에이전트를 실행해 한 번의 전이마다 학습시키거나 미리 학습한 액터로 전환할 수 있고, 버튼 입력으로 직접 플레이할 수도 있습니다. 브라우저에서도 같은 int8 엔진을 WebAssembly로 실행합니다.

자료: GitHub / 정리·해설: Trawling