LLM에서 구동되는 둠(DOOM) — 허깅페이스 체크포인트 포함
Doom running on an LLM -- Hugging Face checkpoint included
핵심 요약
학습 없이 둠의 렌더링 알고리즘을 트랜스포머 가중치로 변환해 LLM에서 구동하는 실험을 공유함.
- 기술적 구현 — 둠 렌더링 알고리즘을 트랜스포머 가중치로 변환함
- 성능 및 비용 — B200 GPU 기준 프레임당 40분 소요 및 약 1,000달러 비용 발생
- 모델 아키텍처 — 별도의 학습 없이 표준 Phi3ForCausalLM 구조 사용
- 실험적 가치 — 가장 비효율적이고 복잡한 방식으로 둠을 구동하는 사례 제시
이거 학습 같은 거 하나도 안 들어갔음. 내가 직접 만든 컴파일러(torchwright)로 둠(Doom)의 실제 렌더링 알고리즘을 트랜스포머 가중치로 그대로 박아 넣은 거임. 모든 가중치는 계산된 거고, 학습된 건 하나도 없음.
프롬프트에는 레벨 지오메트리, 플레이어 위치, 시야 방향이 들어가고, 모델이 생성하는 건 드로잉 명령임. 이걸 43줄짜리 호스트 프로그램이 픽셀로 바꿔주는 방식임. Phi3ForCausalLM 아키텍처 그대로 썼고, trust_remote_code=False로 바닐라 트랜스포머에서 바로 돌아감.
체크포인트는 두 개임:
- 320x200 (글에 나온 거): 21B 파라미터, 85.87 GB. 프레임 하나당 프롬프트 3,614 토큰에 생성 토큰 53,747개 들어감. B200에서 40분 조금 안 걸림.
- 80x50: 프롬프트 형식, 텍스처 다 똑같고 용량은 34 GB. 실제로 돌려볼 거면 이거 추천함.
솔직하게 말하자면:
내 로컬에서 돌려본 적은 없음. 전부 클라우드 GPU(B200이랑 A100-80) 써서 돌렸거든. 내 컴파일러가 현재 가중치 fp32 정밀도를 요구해서, 양자화는 아직 안 해봤음.
80x50 모델은 GPU 메모리 80 GB 정도는 있어야 할 거임. 이론상 64 GB로도 될 것 같긴 한데 직접 해보진 않았음.
글: https://ood.dev/posts/doom/
가중치 (80x50): https://huggingface.co/physicsrob/torchwright-doom-e1m1-80x50
가중치 (320x200): https://huggingface.co/physicsrob/torchwright-doom-e1m1



