Mac에서 43분 만에 둠(Doom)을 플레이하는 2B 의사결정 모델을 파인튜닝했습니다 (오픈 소스, MLX)
I fine-tuned a 2B decision model to play Doom on my Mac in 43 minutes (open source, MLX)
핵심 요약
Apple Silicon 환경에서 MLX를 활용해 둠 게임을 플레이하는 의사결정 모델을 파인튜닝하고 오픈 소스로 공개했습니다.
- 의사결정 모델 — 게임 화면을 입력받아 몬스터 위치와 사격 타이밍을 판단함
- MLX 파인튜닝 — Apple Silicon에서 LoRA를 사용하여 43분 만에 학습 완료
- 성능 검증 — 3,000개의 프레임으로 학습하여 높은 정확도와 킬 수 기록
- 오픈 소스 — 누구나 pip install로 설치하여 사용 가능

다들 (거대) 의사결정 모델이 게임하는 거 본 적 있지? 나도 맥에서 게임 화면만 보고 모델을 학습시켜서 게임을 돌릴 수 있을지 궁금하더라고. 그래서 애플 실리콘에서 의사결정 모델을 돌리고 학습시키는 내 오픈소스 툴인 mlx-decision에 이미지 기반 LoRA 파인튜닝 기능을 추가해 봤어.
작동 방식은 이래. 의사결정 모델은 텍스트를 생성하는 게 아니야. 입력값(여기선 게임 화면)이랑 질문을 던지면, 허용된 답변들에 대한 확률을 한 번에 뱉어내는 식이지. d1-2B 모델은 매 프레임마다 다음 세 가지 질문에 답해:
- 지금 조준선에 몬스터가 있어서 쏘면 맞을까? (yes/no)
- 가장 가까운 몬스터가 어디 있지? (왼쪽, 중앙, 오른쪽, 없음)
- 몬스터가 위험할 정도로 가까운가? (yes/no)
간단한 파이썬 루프가 이 답변들을 바탕으로 움직임을 결정해. 몬스터 쪽으로 방향을 틀고, 맞을 것 같으면 쏘는 거지. 결정 한 번 내리는 데 0.1초 정도 걸려.
학습 과정은 이래. ViZDoom의 Defend the Center 맵에서 게임 엔진이 직접 찍어준 몬스터 위치 데이터를 활용해 프레임 3,000개 정도를 뽑았어. 먼저 리드아웃 핏(7분)을 돌리고, 비전 타워는 고정한 채로 모델의 텍스트 레이어에 LoRA를 적용했지(M5 Pro 기준 43분, 2 에포크). 학습에 안 쓴 프레임 510개로 테스트해 보니까 결과가 이렇게 나왔어:
- "쏘면 맞을까": 정밀도 0.79 → 0.92
- 가장 가까운 몬스터 위치: 92.7% → 96.8%
- 위험할 정도로 가까운가: 93.9% → 98.3%
실제로 돌려보니까 20판 평균 23.2킬 정도 나오더라. 영상에 올린 건 제일 잘 나온 판인데, 총알 26발 쏴서 26킬 했어. 학습할 때 한 번도 본 적 없는 Freedoom 몬스터 스프라이트로 돌려도 19.7킬은 찍더라고. 물론 이건 방향 전환만 하면 되는 아레나 맵이라서, 전체 둠 레벨을 깨는 거랑은 차원이 다르긴 해.
무료고 MIT 라이선스야. 애플 실리콘, macOS 14 이상, 파이썬 3.12 이상이면 돼. 그냥 pip install mlx-decision 치면 끝이야.
저장소: https://github.com/armbues/mlx-decision
너희는 의사결정 모델로 어떤 작업을 파인튜닝해 보고 싶어? 그리고 다음에 어떤 모델을 지원하면 좋을지도 알려주라.

