이미지·영상 생성
최종 업데이트
Mac에서 LingBot-World V2 실행하기: 사진과 카메라 경로로 영상 만들기
커뮤니티의 Mac용 1.3B 이식판으로 카메라 이동이 담긴 MP4를 만들어요.
LingBot-World V2는 시작 이미지, 카메라 행동 경로, 텍스트 프롬프트1를 입력받아 이어지는 영상을 생성해요. Apple Silicon 안내는 PandacatAI 커뮤니티 포크의 PyTorch MPS2 구현이며, DiT3 1.3B와 공유 인코더·VAE4 파일을 준비해 MP4로 저장합니다.
시작 이미지와 행동 경로로 다음 영상을 만들어요
LingBot-World V2는 시작 이미지, 카메라 이동이 담긴 행동 경로, 장면을 설명하는 프롬프트를 받아 다음 프레임5을 이어 만드는 월드 모델이에요. Mac용 경로에서는 Apple Silicon의 PyTorch MPS가 1.3B causal-fast DiT를 실행하고, 생성 결과를 MP4 파일로 저장해요. 이 가이드는 upstream CUDA6 멀티 GPU7 방식이 아닌 PandacatAI의 Apple Silicon 포크를 사용합니다.
세 가지 입력 중 하나만 바뀌어도 생성 장면이 달라질 수 있어요. 처음에는 예제 examples/03의 이미지와 카메라 경로를 그대로 사용하고 프롬프트만 확인하면, 파일과 명령이 맞게 연결됐는지 알아보기 쉽습니다.

Mac용 fork와 의존성을 설치해요
Apple Silicon Mac과 Python 환경을 준비해요. 아래 절차는 Hugging Face에서 MPS 포크의 코드와 설정을 받고, 프로젝트가 쓰는 requirements.txt에서 CUDA 전용 flash_attn 한 줄을 제외해 나머지 의존성을 설치합니다. macOS에서는 이 패키지를 설치하지 않아요.
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip huggingface_hub
hf download PandacatAI/lingbot-world-v2-mps --local-dir lingbot-world-v2-mps
cd lingbot-world-v2-mps
grep -v '^flash_attn$' requirements.txt > requirements-mps.txt
python -m pip install -r requirements-mps.txtrequirements-mps.txt는 CUDA 패키지를 제외한 로컬 설치 목록이에요. hf: command not found가 나오면 활성화한 .venv에서 python -m pip install -U huggingface_hub를 실행한 다음 다운로드를 다시 시작하세요.
1.3B DiT와 공통 인코더·VAE 파일을 모아요
1.3B 체크포인트8에는 영상을 생성하는 DiT 가중치가 들어 있어요. 프롬프트를 처리하는 T5와 영상을 압축·복원하는 VAE, tokenizer 파일도 ckpt에 함께 준비해요. 아래 절차는 원본 인코더와 선택 사항인 MLX9 8-bit 인코더를 모두 내려받으므로 저장 공간을 넉넉하게 확보하세요. 영상 생성 모델과 VAE는 PyTorch MPS로 실행해요.
python -m pip install -U huggingface_hub
hf download robbyant/lingbot-world-v2-1.3b-causal-fast --local-dir ckpt/transformers
hf download Wan-AI/Wan2.1-T2V-14B Wan2.1_VAE.pth --local-dir ckpt
hf download google/umt5-xxl --local-dir ckpt/google/umt5-xxl
python -m pip install mlx
hf download PandacatAI/umt5-xxl-enc-mlx-q8 --local-dir ckpt/umt5-xxl-enc-mlx-q8다운로드가 끝나면 ckpt/transformers에 1.3B DiT가, ckpt 루트에는 Wan2.1_VAE.pth가 있는지 확인해요. T5와 tokenizer는 ckpt/google/umt5-xxl에 놓여야 합니다. 8-bit 인코더를 설치했다면 ckpt/umt5-xxl-enc-mlx-q8이 있어야 자동 선택돼요. 원본 bf1610 인코더를 쓰려면 생성 명령에 --t5_backend torch를 추가하세요.
고정된 예제 입력으로 MP4를 만들어요
먼저 예제 이미지와 카메라 행동 경로를 그대로 써요. --frame_num 121은 요청 프레임 수예요. 공개된 동일 예제는 109프레임을 저장했어요. --size '480*832'는 출력 크기, --local_attn_size 18과 --sink_size 6은 causal 문맥 설정이에요. --save_file로 결과 경로를 정합니다.
mkdir -p output
python generate.py --task i2v-1.3B --size '480*832' --ckpt_dir ckpt --image examples/03/image.jpg --action_path examples/03 --frame_num 121 --local_attn_size 18 --sink_size 6 --prompt 'A serene lakeside scene with a lone tree standing in calm water, surrounded by distant snow-capped mountains under a bright blue sky with drifting white clouds, gentle ripples reflect the tree and sky, creating a tranquil, meditative atmosphere.' --save_file output/lingbot-mps-demo.mp4완료 메시지에 저장 경로가 표시되고 지정한 MP4가 생성돼요. 파일이 없으면 ckpt_dir와 이미지·행동 경로가 현재 lingbot-world-v2-mps 폴더 기준으로 맞는지 확인하고, ckpt/transformers 및 공통 T5/VAE 디렉터리를 살펴보세요.

공개된 Mac 측정값은 실행 조건과 함께 읽어요
Mac용 포크의 공개 예제는 짧은 영상 하나를 생성하는 데도 분 단위로 기다려야 해요. 먼저 예제와 같은 크기와 프레임 수로 실행해보면, 긴 영상을 만들기 전에 대기 시간과 메모리 사용량을 가늠할 수 있어요.
| 항목 | 결과 |
|---|---|
| 출력 | 480×832 · 109프레임 · 16fps |
| 전체 생성 시간 | 14.4분 |
| 프로세스 메모리 최고점 | 16.1GB |
M4 Pro 48GB · PyTorch MPS · 1.3B causal-fast · MLX 8-bit 텍스트 인코더 · 프롬프트 캐시 적중 · 요청 121프레임/저장 109프레임 · conditioning 인코딩 최적화 전 측정.
이후 입력 이미지를 처리하는 conditioning 인코딩 단계에 최적화가 추가됐어요. 361프레임 요청의 같은 프로세스 비교에서는 이 단계가 1,048.6초에서 349.6초로 줄었어요. 아래 표는 그 수정 전의 전체 생성 기록이므로, 현재 버전을 실행할 때는 내려받기와 초기화가 끝난 뒤 MP4가 저장될 때까지 직접 시간을 재보세요.
입력 경로와 라이선스를 확인하고 마무리해요
Python이 MPS 장치를 찾지 못하면 활성화한 환경에서 python -c 'import torch; print(torch.backends.mps.is_available())'를 실행해요. True가 나오지 않으면 Apple Silicon용 PyTorch11 설치를 먼저 확인합니다. 가중치 경로 오류는 ckpt/transformers, ckpt/Wan2.1_VAE.pth, ckpt/google/umt5-xxl을 각각 확인하고, MP4가 생성된 뒤 재생이 안 되면 생성 로그의 완료 여부와 output/lingbot-mps-demo.mp4의 파일 크기를 봐요.
원본 LingBot-World V2와 Apple Silicon 포크는 CC BY-NC-SA 4.0 조건을 따릅니다. 비상업적 이용, 출처 표시와 동일 조건 변경 배포가 필요한 라이선스예요. 배포하거나 파생물을 만들 계획이면 라이선스 전문을 읽고 모델·데이터 각각의 조건도 확인하세요. NVIDIA 실행 조건은 Cosmos 3 Edge 가이드를 참고하세요.

용어 각주
프롬프트 — 모델에 보내는 입력문입니다. 생성 모델에서는 만들 결과를 설명하는 문장이 되어 출력의 구성과 내용을 크게 좌우합니다.
본문으로 돌아가기PyTorch MPS — PyTorch에서 Apple GPU로 연산을 보내는 실행 백엔드입니다. 사용할 연산과 모델이 MPS에서 지원되는지 확인해야 합니다.
본문으로 돌아가기DiT — Diffusion Transformer의 약자입니다. 트랜스포머 구조를 이용해 확산 과정에서 노이즈가 있는 표현을 단계적으로 다듬는 모델 구조입니다.
본문으로 돌아가기VAE — Variational Autoencoder의 약자입니다. 입력을 압축된 잠재 표현으로 바꾸거나, 그 표현에서 결과를 복원하는 데 쓰입니다.
본문으로 돌아가기프레임 — 영상의 한 장면을 이루는 단일 이미지입니다.
본문으로 돌아가기CUDA — NVIDIA GPU에서 범용 계산을 실행하기 위한 소프트웨어 플랫폼입니다.
본문으로 돌아가기GPU — 많은 계산을 병렬로 처리하는 프로세서입니다. AI 모델 실행에서는 모델 계산을 맡습니다.
본문으로 돌아가기체크포인트 — 학습된 모델의 가중치 등을 저장한 파일입니다. 같은 모델 계열도 버전이나 용도에 따라 다른 체크포인트를 쓸 수 있습니다.
본문으로 돌아가기MLX — Apple이 개발하는 머신러닝 프레임워크로, Apple Silicon의 CPU와 GPU가 공유하는 메모리를 활용해 모델을 실행합니다.
본문으로 돌아가기BF16 — 모델 수치를 저장하고 계산하는 16비트 부동소수점 형식입니다. FP32와 같은 폭의 지수부를 써 넓은 값 범위를 표현합니다.
본문으로 돌아가기PyTorch — AI 모델을 만들고 실행하는 소프트웨어 프레임워크입니다. 모델과 함께 호환되는 PyTorch 버전 및 하드웨어 지원도 확인해야 합니다.
본문으로 돌아가기
자주 묻는 질문
- 이 글에서 가장 먼저 확인할 것은 무엇인가요?
- LingBot-World V2는 시작 이미지, 카메라 행동 경로, 텍스트 프롬프트를 입력받아 이어지는 영상을 생성해요. Apple Silicon 안내는 PandacatAI 커뮤니티 포크의 PyTorch MPS 구현이며, DiT 1.3B와 공유 인코더·VAE 파일을 준비해 MP4로 저장합니다.
- 필요한 메모리는 어느 정도인가요?
- Mac용 포크의 공개 예제는 짧은 영상 하나를 생성하는 데도 분 단위로 기다려야 해요. 먼저 예제와 같은 크기와 프레임 수로 실행해보면, 긴 영상을 만들기 전에 대기 시간과 메모리 사용량을 가늠할 수 있어요.
- 조건과 출처는 어디서 확인하나요?
- 원본 LingBot-World V2와 Apple Silicon 포크는 CC BY-NC-SA 4.0 조건을 따릅니다. 비상업적 이용, 출처 표시와 동일 조건 변경 배포가 필요한 라이선스예요. 배포하거나 파생물을 만들 계획이면 [라이선스 전문](https://github.com/robbyant/lingbot-world-v2/blob/main/LICENSE.txt)을 읽고 모델·데이터 각각의 조건도 확인하세요. NVIDIA 실행 조건은 [Cosmos 3 Edge 가이드](/guides/cosmos-3-edge-local-world-model-guide)를 참고하세요.
