TL;DR
torchwright_doom은 DOOM 렌더링 로직을 계산 그래프로 구성해 torchwright 컴파일러로 Transformer에 직접 넣고, 학습 없이 자기회귀 방식으로 화면을 생성합니다. 호스트는 고정 영역의 맵 정보를 토큰으로 준비하고 모델이 낸 커서·방향·실행 폭 토큰을 화면에 복사할 뿐, 벽 선택·가시성·거리·텍스처·합성 같은 연산은 Transformer 내부에서 처리합니다. 배포 산출물은 별도 커스텀 코드 없이 일반 Hugging Face 자동 클래스와 Transformers pipeline으로 읽는 Phi3ForCausalLM이며, 320×200 모델은 38개 레이어와 85.87GB fp32 가중치, 80×50 모델은 70개 레이어와 34.09GB fp32 가중치로 구성됩니다. 저해상도 모델은 7,007토큰 프레임과 8,000토큰 생성 한도를 사용하고, 참조 Python 렌더러와 픽셀 단위 비교로 정확성을 측정합니다.
섹션별 상세
from pathlib import Path
from transformers import pipeline
generate = pipeline("text-generation", model=bundle, device_map="auto")
prompt = Path(bundle, "examples/e1m1_prompt.txt").read_text()
generated_text = generate(prompt, return_full_text=False)[0]["generated_text"]배포된 Phi3ForCausalLM 번들을 일반 Transformers text-generation pipeline으로 로드하고 E1M1 프롬프트에서 출력 토큰을 생성합니다.
python infer.py --model . --prompt examples/e1m1_prompt.txt --output out
python tools/pretty_text.py --input out/output.txt --output out/output.pretty.txt
python tools/txt_to_png.py --input out/output.txt --output out/frame.png모델 추론 결과를 생성한 뒤 토큰 스트림을 사람이 읽을 수 있는 텍스트로 바꾸고, 커서 프로토콜을 적용해 PNG 프레임으로 변환합니다.
용어 해설
- 자기회귀 생성(Autoregressive Generation)
- — 이전 단계에서 생성한 토큰을 다음 입력으로 다시 넣어 한 번에 하나씩 출력을 이어 가는 방식입니다. 이 프로젝트에서는 입력 토큰 하나를 읽은 Transformer가 픽셀 정보를 담은 출력 토큰 하나를 만들고, 호스트가 이를 다음 입력으로 전달합니다.
- 계산 그래프(Computation Graph)
- — 연산과 데이터 흐름을 노드와 연결 관계로 표현한 구조입니다. torchwright_doom은 DOOM의 장면 읽기, BSP 순회, 래스터화, 픽셀 출력을 그래프로 구성한 뒤 이를 Transformer가 실행할 수 있는 형태로 컴파일합니다.
- BSP 순회(BSP Traversal)
- — Binary Space Partitioning 구조를 따라 공간을 분할한 노드를 방문하는 방법입니다. 이 구현은 가까운 벽을 먼저 처리하고 가시성과 가림 관계를 계산해 벽의 출력 순서를 결정하며, attention 기반 반환 스택으로 순회 상태를 유지합니다.
- safetensors
- — Machine Learning 모델 가중치를 저장하는 파일 형식으로, 이 프로젝트의 배포 산출물은 fp32 가중치를 여러 조각의 safetensors 파일로 보관합니다. 일반 Hugging Face 자동 클래스가 이 파일을 읽어 모델을 로드합니다.
- WordLevel 토크나이저(WordLevel Tokenizer)
- — 토큰과 정수 ID의 대응을 단어 수준으로 저장하는 단순한 토크나이저입니다. 여기서는 별도 토크나이저 코드 없이 사람이 읽을 수 있는 토큰 이름을 tokenizer.json에 기록하고, 행 인덱스와 픽셀 프로토콜을 모델 입출력으로 변환합니다.
기술
- torchwright
- Phi3ForCausalLM
- Hugging Face
- Transformers
- ONNX
- Modal
- Python
- safetensors
- device_map="auto"
- pydoom
활용 사례
- DOOM 게임 화면 렌더링
- Transformer 내부 계산 그래프 실험
- 토큰 프로토콜 기반 그래픽 출력
- GPU 분산 모델 추론
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.