nvidia cosmos를 사용하기 앞서 유튜브에 사용해본 사람의 리뷰가 있는지 확인했다.
Pixel Reconstruct의 nvidia cosmos tutorial
이 영상을 분석해서 어떤 하드웨어 조건에서 어떤 기능을 사용했는지 확인해 볼 것이다.
Cosmos-WLS2
윈도우 기준으로 WSL2를 요구한다.
GPU 메모리는 AI 모델의 작업 공간 역할을 한다.

models
사전 훈련된 모델 체크포인트(pre-trained model checkpoints)를 다운로드한다.
사양별로 모델을 다운받을 수 있는 경로가 만들어져 있다.

영상에서는 밤에 경주 트랙을 달리는 포뮬러 원 경주차라는 간단한 프롬프트로 시작한다.

기본 실행 커멘드 구조:
# 1. (선택 사항) 프롬프트를 변수로 저장
$ prompt="a formula car driver racing down a track at night"
# 2. text_to_world.py 스크립트 실행
$ python scripts/inference/text_to_world.py \
--checkpoint_dir checkpoints/ \
--model_name 7b \
--prompt "$prompt" \
--video_save_name "outputs/race_car_night.mp4" \
--offload_tokenizer \
--offload_text_encoder \
--offload_world_model \
--offload_lora \
--offload_diffusion
--model_name 7b: 설치 가이드에서 다운로드한 모델을 지정한다. (RTX 3090/4090 사용자는 7b, RTX 6000 Ada 사용자는 14b 시도 가능)--prompt "$prompt": 비디오로 만들고 싶은 텍스트를 입력한다.--offload_... (모든 offload 플래그): 24GB VRAM 사용자에게 필수적인 옵션입니다. 이 플래그들은 모델의 각 부분을 GPU 메모리(VRAM)에서 시스템 메모리(RAM)로 옮겨(offload), VRAM이 부족할 때 발생하는 'Out of Memory' 오류를 방지한다. VRAM이 48GB 이상으로 넉넉하다면 이 플래그들을 제거하여 더 빠른 속도로 생성할 수 있다.
Cosmos는 기본적으로 프롬프트 업스케일러(Prompt Upscaler)가 활성화되어 있다. 사용자가 "race car"처럼 간단한 프롬프트를 넣어도, AI가 "숨 막히는 포뮬러 원 레이싱 시퀀스...(a breathtaking Formula 1 racing sequence...)"처럼 훨씬 더 화려하고 구체적인 프롬프트로 자동 변환하여 더 극적인 영상을 만든다.
하지만 개발자가 의도한 정확한 프롬프트를 그대로 사용하고 싶다면, --disable_prompt_upscaler 플래그를 추가하여 이 기능을 비활성화할 수 있다.
이 기능은 텍스트 대신 정지 이미지(Image-to-World)나 짧은 비디오 클립(Video-to-World)을 입력받아, 그 장면의 '다음'을 예측하고 생성한다.
이미지로 동적 영상 생성
정지된 건물 이미지를 입력하면, 카메라가 움직이는 듯한 동적인 비디오가 생성된다. AI가 이미지의 3D 공간과 맥락을 이해하고 애니메이션을 적용한다.
영상의 다음 장면을 AI가 예측
비디오를 입력할 경우, AI는 비디오의 마지막 1~9 프레임을 분석하여 그 이후에 이여질 120 프레임의 새로운 비디오를 생성한다.
커멘드 구조 (Image-to-World 기준):
$ python scripts/inference/video_to_world.py \
--checkpoint_dir checkpoints/ \
--model_name 7b \
--input_video_path "inputs/my_image.jpeg" \
--num_input_frames 1 \
--video_save_name "outputs/animated_image.mp4" \
--offload_tokenizer \
--offload_text_encoder \
--offload_world_model \
--offload_lora \
--offload_diffusion
scripts/inference/video_to_world.py: text_to_world.py 대신 다른 스크립트를 사용한다.--input_video_path "inputs/...": 텍스트 프롬프트 대신 입력할 이미지 또는 비디오 파일의 경로를 지정한다.--num_input_frames 1: 1은 입력 파일이 정지 이미지임을 의미한다. 2~9로 설정할 경우 입력 파일이 비디오임을 의미하며, 마지막 2~9 프레임을 분석한다.수십, 수백 개의 프롬프트나 이미지를 한 번에 처리해야 할 때 사용하는 기능이다. .jsonl (JSON Lines) 파일을 입력으로 받아 모든 작업을 자동으로 수행하고 폴더에 순차적으로 저장한다.
여러 텍스트 프롬프트를 한 번에 영상으로 만들기
1. batch_prompts.jsonl 파일 준비
먼저 inputs 폴더에 다음과 같은 .jsonl파일을 생성
{"prompt": "a race car driving down a large city block at night"}
{"prompt": "Stone Building walking around"}
{"prompt": "A drone flying over a beautiful mountain range"}
$ python scripts/inference/text_to_world.py \
--checkpoint_dir checkpoints/ \
--model_name 7b \
--batch_input_path "inputs/batch_prompts.jsonl" \
--video_save_folder "outputs/batch_text_outputs/" \
--offload_tokenizer \
--offload_text_encoder \
--offload_world_model \
--offload_lora \
--offload_diffusion
batch_visuals.jsonl 파일 준비 prompt 키 대신 visual 키를 사용한다.{"visual": "inputs/image1.jpeg"}
{"visual": "inputs/video1.mp4"}
{"visual": "inputs/image2.png"}
$ python scripts/inference/video_to_world.py \
--checkpoint_dir checkpoints/ \
--model_name 7b \
--batch_input_path "inputs/batch_visuals.jsonl" \
--video_save_folder "outputs/batch_visual_outputs/" \
--num_input_frames 1 \
--offload_tokenizer \
--offload_text_encoder \
--offload_world_model \
--offload_lora \
--offload_diffusion
파라미터 설명:
--batch_input_path "inputs/...": 개별 프롬프트 대신 .jsonl 파일의 경로를 지정한다.
--video_save_folder "outputs/...": 개별 파일명이 아닌, 결과물이 저장될 폴더를 지정한다. (예: 0.mp4, 1.mp4 ... 순서로 저장됨)
--num_input_frames: 비디오 배치 처리 시, 모든 입력 파일의 타입을 지정해야 한다. (예: 이미지 배치일 경우 1, 비디오 배치일 경우 9)
입력 (Input):
"a car driving down a large city block at night" (밤에 큰 도시를 달리는 자동차)결과 (Output):
주요 포인트: AI가 사용자의 간단한 프롬프트를 훨씬 더 길고 서술적인 '업스케일된 프롬프트(Upscaled Prompt)'로 자동 변환하여 영상 생성
입력 (Input):
결과 (Output):
입력 (Input):
complex.jpeg).결과 (Output):
주요 포인트:
--num_input_frames 파라미터를 1로 설정해야 한다.