Code World Model: 코딩 에이전트가 세계의 상태를 코드로 유지하는 영상 월드 모델 (≠ Meta의 동명 코드 모델)

Code World Model 소개

영상으로 세계를 시뮬레이션하는 모델은 지난 몇 년 사이 눈에 띄게 좋아졌지만, 길게 생성할수록 앞서 일어난 일의 결과가 유지되지 않는 문제가 남습니다. 저자들은 그 원인을 학습 대상 자체에서 찾습니다. 기존 영상 월드 모델은 관측된 화면에서 동역학을 배우는데, 관측은 무슨 일이 일어났는지라는 결과를 보여줄 뿐 세계가 변하는 방식을 지배하는 지식과 규칙, 메커니즘은 드러내지 않는다는 것입니다. 그래서 변화의 결과를 오래 유지하거나 열린 방향으로 일관되게 확장하기 어렵다는 지적으로 이어집니다.

시후대학교(Westlake University) AGI Lab과 난양이공대학교(Nanyang Technological University)의 Yiwen Chen, Guosheng Lin, Chi Zhang이 공개한 Code World Model은 세계가 변하는 일과 그 변화를 화면에 그리는 일을 아예 분리합니다. 세계의 규칙은 코딩 에이전트가 실행 가능한 코드로 관리하고, 화면은 그 코드가 만들어 낸 중간 표현을 조건으로 받은 영상 모델이 그립니다. 코딩 에이전트가 사건과 그 결과를 추론(reasoning)하여 코드를 쓰고, 그 코드가 세계의 상태를 지속적으로 들고 있으면서 규칙에 어긋나지 않는 변화를 만들어 낸다는 구성이라, 저자들은 코딩 에이전트를 세계의 두뇌(world brain)라고 부릅니다.

이름 때문에 헷갈리기 쉬운 부분을 먼저 짚어 두면, 이 Code World Model은 Meta가 공개한 동명의 32B 코드 언어 모델과 전혀 다른 프로젝트입니다. 이쪽은 코드를 잘 쓰는 언어 모델이 아니라, 코딩 에이전트를 부품으로 쓰는 영상 월드 모델 연구입니다. Meta 쪽 모델에 관한 정리는 Code World Model Preparedness Report 글에 따로 있습니다.

Code World Model과 기존 영상 월드 모델의 차이

기존 방식과 무엇이 다른지는 세계의 규칙을 어디에 두는지로 갈립니다. 저자들이 기존 방식을 어떻게 규정하고 자신의 접근을 무엇과 대비시키는지는 다음과 같습니다:

항목 관측 기반 영상 월드 모델 Code World Model
동역학을 배우는 대상 시각적 관측, 즉 결과로 드러난 화면 코딩 에이전트가 사건과 결과를 추론해 작성한 코드
세계의 규칙 관측만으로는 드러나지 않는다고 지적 실행 가능한 코드로 명시적으로 표현
화면 생성 방식 관측으로부터 다음 화면을 직접 생성 코드가 만든 프록시 영상을 조건으로 영상 모델이 렌더링
저자들이 지적한 한계와 대안 변화의 결과를 오래 유지하기 어려움 코딩 에이전트의 추론과 코딩 능력이 좋아지는 만큼 확장

저자들은 마지막 행을 이 접근의 핵심으로 내세웁니다. 세계의 변화를 담당하는 쪽이 코딩 에이전트이므로, 더 나은 코딩 에이전트가 나오면 모델을 다시 학습시키지 않아도 세계가 더 풍부하고 일관되게 굴러간다는 주장입니다. 프로젝트 페이지에는 60초마다 화면 양식이 바뀌는데도 세계의 상태는 그대로 이어지는 장시간 생성 예시가 올라와 있습니다.

Code World Model은 누구에게 맞는가

월드 모델의 상태 유지 문제를 연구하면서 코드를 상태 저장소로 쓰는 설계를 살펴보려는 연구자에게 이 저장소가 잘 맞습니다. 논문의 주장이 추상적으로 끝나지 않고, 프록시 표현의 파일 형식과 값 범위, 창(window) 단위 연결 방식까지 문서에 숫자로 적혀 있어서 자신의 파이프라인과 대조하기 좋습니다.

반면 자기 영상이나 자기 게임으로 이 파이프라인을 처음부터 돌려보려는 사람에게는 Code World Model이 아직 적절한 선택지가 아닙니다. 저자들은 코딩 에이전트 파이프라인을 공개할 수 없는 상용 게임 코드 위에 만들었기 때문에 프록시 입력을 생성하는 도구를 함께 공개하지 못한다고 밝히고 있습니다. 저장소가 공개한 것은 준비된 조건 파일을 소비하는 추론 코드와 학습된 LoRA, 그리고 미리 만들어 둔 예제 40개이며, RGB 영상에서 조건 파일을 만들어 내는 부분은 들어 있지 않습니다. 하드웨어 요구도 낮지 않아서, 저자들이 실험한 환경은 NVIDIA H800 80GB 한 장입니다.

Code World Model의 프록시 표현

코드가 관리하는 세계 상태와 영상 모델을 잇는 다리가 프록시(proxy) 표현입니다. 코드가 계산한 매 프레임의 시공간 제약을 프록시 영상으로 컴파일하고, 영상 모델은 그 프록시 영상을 조건으로 받아 실제로 보이는 화면을 그립니다.

공개된 추론 코드가 받는 프록시는 프레임마다 깊이(Depth) 파일과 의미 식별자(Semantic-ID) 파일 한 쌍으로 되어 있습니다. 깊이 파일은 헤더 없는 리틀엔디언 float32 배열로 형태가 192x336이고 단위는 미터이며, 파일 크기가 정확히 258,048바이트로 고정됩니다. 값은 유한하고 음수가 아니어야 하며 0.001미터 이하는 무효 값으로 보고 0을 넣도록 되어 있습니다. 의미 식별자 파일은 336x192 크기의 8비트 흑백 PNG이고 값의 범위는 0부터 11까지로, 하늘, 물, 지형, 포장 도로, 초목, 건물 구조물, 기반 시설, 사람, 동물, 차량, 소품과 미분류를 구분합니다.

영상은 창 단위로 이어 붙입니다. 창 하나가 조건 파일 124쌍을 연속으로 읽고, 다음 창은 시작 프레임을 정확히 90만큼 밀어서 겹치는 구간을 남깁니다. 그래서 최종 길이는 다음과 같이 정해집니다:

124 + 90 * (window_count - 1) frames

Code World Model의 실행 설정

공개된 릴리즈는 검증된 설정 하나만 지원하며, 그 값들이 문서에 못 박혀 있습니다. MiniMax H3 BF16 Ref2VA 모델과 호환되는 CWM(Code World Model) LoRA를 쓰고, RGB 앵커 이미지 한 장 뒤에 깊이와 의미 식별자로 된 참조 영상 하나가 따라옵니다. 출력은 1344x768 해상도의 24 FPS 무음 H.264 MP4이고, 샘플링은 명시적 오일러(explicit Euler) 방식으로 정확히 20스텝입니다. 어텐션은 FlashAttention-3를 쓰며 GPU 한 장을 가정합니다.

특이한 제약이 하나 있는데, 최종 MP4에 오디오 스트림이 없는데도 오디오 VAE가 필요합니다. 모델이 패킹된 레이아웃과 창 연결 상태의 일부로 오디오 잠재 변수를 여전히 샘플링하기 때문입니다.

저자들이 안내하는 변형 방법은 조건 파일을 새로 만드는 대신 첫 프레임을 바꾸는 쪽입니다. 저자들은 이미지 생성이나 편집 에이전트로 제공된 RGB 첫 프레임의 양식과 내용을 고치고, 코딩 에이전트로 원래 프롬프트를 그 첫 프레임에 맞게 다시 쓰되 프롬프트의 구조는 그대로 두라고 권합니다. 구조를 바꾸면 결과가 대체로 나빠진다는 설명입니다.

Code World Model 설치와 사용

환경 구성은 ENVIRONMENT.md를 따르고, 그다음 공개된 LoRA와 예제를 받아 확장합니다:

./scripts/install_release_assets.sh "$PWD/release"

받아 온 릴리즈 디렉토리로 들어가 설정 하나를 골라 검증, 준비, 생성 순서로 실행합니다:

cd release
CONFIG=examples/example_01/config.json
python -m cwm_h3_inference validate --config "$CONFIG"
CUDA_VISIBLE_DEVICES=0 python -m cwm_h3_inference prepare --config "$CONFIG"
CUDA_VISIBLE_DEVICES=0 python -m cwm_h3_inference generate --config "$CONFIG"

실험을 바꿀 때마다 캐시 디렉토리와 출력 경로를 새로 잡으라고 안내되어 있습니다. 허깅페이스에서 받는 예제 40개는 압축된 NPZ 조건이라 캐시나 완성된 영상이 아니며, 설치 스크립트가 로컬에서 형식을 펼치는 단계를 대신 수행합니다.

Code World Model의 라이선스

Code World Model의 코드는 Apache 라이선스 2.0으로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

단, 저장소의 NOTICE 파일은 서드파티 구성 요소와 모델 산출물이 이 Apache 라이선스 2.0의 적용 대상이 아니라고 명시하고 있습니다. 실제로 허깅페이스에 올라온 LoRA 체크포인트와 예제 데이터셋에는 라이선스가 표기되어 있지 않으므로, 연구 재현을 넘어 활용할 계획이라면 THIRD_PARTY_NOTICES.md와 각 산출물의 출처 조건을 먼저 확인해야 합니다.

:framed_picture: Code World Model 프로젝트 페이지와 생성 결과 갤러리

:scroll: Code World Model 논문

:github: Code World Model 프로젝트 GitHub 저장소

:hugs: Code World Model LoRA 체크포인트 다운로드

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

이 글은 :pytorch:파이토치 한국 사용자 모임:south_korea:이 직접 정리한 글입니다. 새 글을 놓치지 않으시려면 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로 알림을 받으시고, 회원으로 가입하시면 주요 글들을 이메일:love_letter:로도 보내드립니다! :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: