24GB显存也能跑物理世界视频生成:Cosmos安装到出片实战指南
【免费下载链接】cosmosNVIDIA Cosmos is an open platform of world models, datasets, and tools that enables developers to build Physical AI for robots, autonomous vehicles, smart infrastructure, and more.项目地址: https://gitcode.com/GitHub_Trending/cosmos7/cosmos
如果你在做机器人操作、自动驾驶感知这类物理AI方向,最缺的往往不是算法,而是足量、可控、成本低的场景视频。NVIDIA Cosmos 就是一个开源的世界基础模型(World Foundation Model)平台,它把预训练的扩散模型、自回归模型和视频分词器打包在一起,让你用文本或一段已有素材就能生成符合物理直觉的模拟视频,用于机器人、自动驾驶汽车、智能基础设施的训练数据供给。本文按"跑通—出片—调优—踩坑"的顺序,带你从零走到能批量产出物理世界视频。
谁需要用它造训练视频
一句话:你需要"可控的合成视频生产线"而不是"更多真实拍摄"时。典型场景有两类。一类是机器人公司:想覆盖"仓库取货、货架抓取"等长尾场景,实拍成本高、事故风险大,用 Text2World 按描述批量出片更划算。另一类是自动驾驶团队:已有某路口的一段行车视频,想让它在不同天气、车流下"续写"更多分支,这正是 Video2World 的输入输出模式。平台本身包含三块资产:预训练世界模型(权重可商用)、基于 NeMo 的训练脚本(Apache 2.0),以及把视频压缩成连续/离散 token 的视频分词器。
两条能力线各自生成什么
先分清两条线,后面所有命令都建立在这个区分上:
- Text2World:输入是一段文本描述,输出是 121 帧视频。对应模型为 Cosmos-1.0-Diffusion-7B-Text2World 和 14B 版本,推理入口是 cosmos1/models/diffusion/inference/text2world.py。
- Video2World:输入是一张图片或一段视频(可再加文本),输出是把这段视觉起点"续写"成完整视频。对应 7B/14B Video2World 模型,入口是 cosmos1/models/diffusion/inference/video2world.py。
两条线共用同一个 8x8x8 压缩的视频分词器和一套强制启用的安全护栏。默认输出为 1280x704、24fps、35 步扩散采样、guidance 7.0,这些参数在推理脚本里都有对应命令行开关。
从一台干净机器到出片要几步
这节把系统要求、Docker 环境和模型下载合并成一条跑通路径,全部四步走完,你才有资格执行推理命令。
环境基线:Ubuntu 20.04/22.04/24.04(官方只测过这三个版本),NVIDIA GPU(24GB 起步),已装 NVIDIA Container Toolkit 的 Docker,预留至少 50GB 磁盘。
第 1 步,克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/cosmos7/cosmos cd cosmos第 2 步,构建镜像并启动容器,仓库自带的 Dockerfile 已经配好运行依赖,挂载当前目录到/workspace后 attach 进去:
docker build -t cosmos . docker run -d --name cosmos_container --gpus all --ipc=host -it -v $(pwd):/workspace cosmos docker attach cosmos_container完成后你的 shell 已经在容器内,后续所有命令都在这里面执行。详细步骤可对照 INSTALL.md。
第 3 步,拿 Hugging Face 权限。两件事缺一不可:在 Hugging Face 的 token 设置页生成一个权限级别为 Read 的访问令牌(默认是 Fine-grained,要手动改掉),然后在 Mistral AI 的 Pixtral-12B 模型页点击 "Agree and access repository"——Video2World 的提示上采样器依赖这个权重,不授权下载脚本会卡住。
第 4 步,登录并下载权重:
huggingface-cli login PYTHONPATH=$(pwd) python cosmos1/scripts/download_diffusion.py \ --model_sizes 7B 14B \ --model_types Text2World Video2World这一步会顺带拉下 Guardrail、8x8x8 分词器和 Text2World 提示上采样器(若选了 Video2World,还会自动转换 Pixtral-12B 权重)。跑完后checkpoints/目录下应能看到各模型子目录,每个模型目录下有model.pt和config.json,目录结构以 cosmos1/models/diffusion/README.md 为准。
第一次生成:两个用例各一条命令
权重就位后,先用 7B 跑通两条线,各留一条最小命令。
用例一,文本生成世界。提示词建议直接写仓库里的示例风格:单一场景、静态机位、带材质和光照描述:
PROMPT="A sleek, humanoid robot stands in a vast warehouse filled with neatly stacked cardboard boxes on industrial shelves. The robot's metallic body gleams under the bright, even lighting. A glowing blue light emanates from its chest. The camera remains static." PYTHONPATH=$(pwd) python cosmos1/models/diffusion/inference/text2world.py \ --checkpoint_dir checkpoints \ --diffusion_transformer_dir Cosmos-1.0-Diffusion-7B-Text2World \ --prompt "$PROMPT" \ --offload_prompt_upsampler \ --video_save_name first_text2world跑完后outputs/下会出现first_text2world.mp4和一个同名.txt(记录上采样后的实际提示词,对比它和你写的原文很有参考价值)。注意--offload_prompt_upsampler在 H100 上是必选项,24GB 卡上则建议加满所有 offload(见后文表格)。
用例二,从一张图续写视频。仓库自带了一张公路场景示例图,输入帧数支持 1 或 9:
PYTHONPATH=$(pwd) python cosmos1/models/diffusion/inference/video2world.py \ --checkpoint_dir checkpoints \ --diffusion_transformer_dir Cosmos-1.0-Diffusion-7B-Video2World \ --input_image_or_video_path cosmos1/models/diffusion/assets/v1p0/video2world_input0.jpg \ --num_input_frames 1 \ --offload_prompt_upsampler \ --video_save_name first_video2world这条线里提示上采样器默认开启且由 Pixtral 看图"写"提示词,你给的--prompt在默认配置下不参与;想完全自己控制描述就加--disable_prompt_upsampler。
需要一次出多条时,把--prompt换成--batch_input_path指向一个 JSONL 文件(Text2World 每行一个{"prompt": "..."},Video2World 每行一个{"visual_input": "path"}),再用--video_save_folder指定输出目录即可,示例文件在cosmos1/models/diffusion/assets/v1p0/batch_inputs/下。
产出质量靠什么调
这节把提示词写法、模型选型、显存策略三件事收拢到一处,都是直接影响成片观感的旋钮。
提示词怎么写才稳。官方给出的三条建议:一次只描述一个场景(多场景会诱发不必要的镜头切换);少写运镜指令(相机控制仍在开发中);长度以 120 词左右为甜区,形容词要落到可见的细节上。另外提示超过 250 词时脚本会自动跳过上采样器以保证稳健性,上采样器偶尔会"加戏"偏题,遇到这种情况就用--disable_prompt_upsampler关掉,改手动扩写。
7B 还是 14B,Diffusion 还是 Autoregressive。7B 和 14B 的区别是质量与速度:单张 H100 上 7B 约 380 秒/条,14B 约 590 秒/条,追求单条精细度选 14B,追求吞吐选 7B。Diffusion 系四条模型(7B/14B × Text2World/Video2World)是主力的"生成新内容"路线;Autoregressive 4B/12B 只吃视觉输入(可选文本),定位是把已有画面往未来推演,适合你有真实素材但缺少"接下来发生了什么"的场景。入门先 7B,流程熟了再上 14B 是最省时间的路径。
显存不足怎么办。五个可独立开关的 offload 参数分别对应扩散主网络、分词器、T5 文本编码器、提示上采样器和护栏模型,按需叠加即可。以下是官方实测峰值显存的取舍表(Text2World 场景,参考值):
| 你的显卡 | 推荐规模 | 建议开启的卸载参数 | 大致峰值显存 |
|---|---|---|---|
| RTX 3090/4090(24GB) | 7B | 五项全开(tokenizer、diffusion transformer、T5、prompt upsampler、guardrail) | ~24.4GB |
| A100(40GB) | 7B | --offload_prompt_upsampler --offload_guardrail_models | ~57.1GB |
| H100(80GB) | 7B 或 14B | 7B 仅--offload_prompt_upsampler;14B 再加--offload_guardrail_models | 7B ~74GB / 14B ~70.5GB |
全部卸载的代价是速度变慢,批量出片时尤其明显,能不开就不开。
它有哪些硬限制
提前知道边界,比出片后被护栏拦截再排查要快。
- 安全护栏不可关:输入侧有 blocklist 关键词检查和基于 LLM 的 Aegis 过滤,输出侧有视频内容安全分类器和人脸模糊模块;人脸一律会被模糊,违规内容会被整条拦截,日志里会打印 "Guardrail blocked"。细节见 cosmos1/models/guardrail/README.md。
- 时长锁死在 121 帧:
--num_video_frames目前只有 121 一个选项,想拉长只能靠 Video2World 滚动续写。 - 分辨率是离散档位:1:1(960x960)、4:3(960x704)、3:4(704x960)、16:9(1280x704)、9:16(704x1280),帧率可在 12–40fps 间调。
- 耗时要有预期:单条 380–590 秒(H100 端到端、不含初始化),做批量任务时按小时排期。
- 相机控制不可靠:写入提示词的运镜指令大概率被忽略,机位最好写成 static。
想训自己的或上多卡怎么办
两条进阶路线都走 NeMo 框架。后训练(post-training)用于把预训练模型往你的下游任务上靠:diffusion 和 autoregressive 各有一套通用后训练脚本与数据集准备流程,入口在 cosmos1/models/POST_TRAINING.md,目前通用后训练已支持,指令控制、动作控制、相机控制等还在路上。多 GPU 推理只覆盖了 Diffusion Text2World 系列四个模型(7B/14B 均可,推荐 H100-80GB 或 A100-80GB),用法见 cosmos1/models/diffusion/nemo/inference/README.md。
下一步清单
- 今天就跑:用 7B Text2World 出 3 条不同场景的视频,逐条对比输出的
.txt上采样提示词,感受上采样器改写了什么。 - 显存达标再升级:同一提示词换 14B 跑一条,肉眼对比细节与物理合理性,决定你的主力规格。
- 把单条流程改成 JSONL 批处理,先小批量(5–10 条)验证再放量,按 7B 约 6.5 分钟/条排产能。
- 有真实素材就试 Video2World 的
--num_input_frames 9,对比 1 帧与 9 帧输入下续写的连贯度,再决定是否投入后训练。
【免费下载链接】cosmosNVIDIA Cosmos is an open platform of world models, datasets, and tools that enables developers to build Physical AI for robots, autonomous vehicles, smart infrastructure, and more.项目地址: https://gitcode.com/GitHub_Trending/cosmos7/cosmos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考