Pico 2 W에서 게임을 꿈꾸고 직접 플레이하는 26k~131k 파라미터 월드모델
- 라즈베리파이 Pico 2 W(RP2350)에서 두 신경망이 동시에 돈다. 월드모델은 프레임과 행동을 받아 다음 프레임과 보상을 예측하는 루프 트랜스포머(q int8, 26k~131k 파라미터, 프레임당 2~8M MAC)이고, 액터는 프레임만 보고 행동을 고르는 2은닉층 MLP(float32, 9k~16k 파라미터)임. 둘 다 코어 1에서 돌고 코어 0은 USB와 디스플레이를 맡음
- 게임 5종의 held-out 프레임 완전 일치율은 Flappy Bird 100%, Breakout 99.99%, Pong 99.45%, Pac-Man lite 86.4%, Doom-lite 83.6%임. Doom-lite는 32×32 레이캐스트 화면 768칸 중 한 칸만 틀려도 프레임 전체를 오답 처리해서 수치가 실제 플레이 감각보다 낮게 나옴
- 루프 트랜스포머는 같은 가중치 블록을 1~4회 반복 적용하고 매 회차 출력을 다음 프레임에 대해 학습시켜, 실행 시 루프 수로 속도와 정확도를 맞바꿈. Pico에서는 프레임레이트를 위해 2회를 쓰며, Doom-lite 한 스텝에서 틀린 셀 수가 1회 92개, 2회 35개, 3회 12개, 4회 0개로 줄어듦
- 사전학습된 액터 대신 stream-x 에이전트를 보드 위에서 처음부터 학습시킬 수 있고, 버튼을 누르면 사람이 월드모델이 그린 게임을 직접 조작할 수 있음. 월드모델 학습에는 RTX 4060을 썼음
- 게임마다 파라미터 수가 다른 별도 모델을 씀. 작성자는 학습 데이터와 검증 데이터가 겹치지 않으며 하나의 모델로 합치는 것도 어렵지 않다고 답함
Hacker News 의견들
루프 트랜스포머가 미니 둠에는 꼭 필요하고 단순한 게임에는 필요 없다는 게 제일 신기하더라. 같은 블록을 여러 번 돌리는 게 게임마다 다르게 작동한다는 것도 재밌고.
솔직히 Pico 2 W에서 돌아간다는 얘기를 굳이 앞세우지 않는 게 낫지 않냐. 월드모델 자체가 대단한 건데 임베디드 이슈로 시선이 쏠린다. 이걸 큰 게임의 절차적 생성에 넣으면 기존 방식 문제를 꽤 풀 수 있을 것 같다.
신경망이 이 정도로 결정적인 프레임을 뽑아낸다는 걸 몰랐는데 이거 과적합이랑 비슷한 현상인가? 그리고 모든 게임에 같은 모델을 쓰는 거 맞냐?
파라미터 수랑 MAC 수가 게임마다 다르니까 각각 따로 학습한 모델일 거다. 하나의 월드모델이 학습 세트에 없는 게임까지 꿈꾸면 훨씬 대단했겠지만.
게임마다 별도 넷인 건 맞고, 학습 데이터랑 검증 데이터는 안 겹치게 했다. 구조가 같으니 하나로 합치는 것도 그렇게 어렵진 않을 듯.
학습은 무슨 하드웨어로 돌린 거냐? README에 안 보여서.
월드모델 학습은 RTX 4060으로 했고, 게임 플레이하는 에이전트는 Pico 위에서 stream-ac로 직접 돌렸다.
액터가 월드모델의 실수까지 학습하면 오히려 환각을 유도해서 자기를 유리한 상태로 몰아넣는 전략을 배우지 않겠냐. 그게 제일 궁금하다.
Pi에서 이게 돌면 WebGPU에서도 돌려볼 수 있는 거 아니냐?